[ 
https://issues.apache.org/jira/browse/NIFI-12016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael W Moser updated NIFI-12016:
-----------------------------------
    Fix Version/s: 1.28.0

> Improve leniency for bundle compatibility to allow for rolling upgrades
> -----------------------------------------------------------------------
>
>                 Key: NIFI-12016
>                 URL: https://issues.apache.org/jira/browse/NIFI-12016
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>            Priority: Major
>              Labels: bundles, rolling_upgrade
>             Fix For: 2.0.0-M1, 1.28.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> When NiFi loads a flow from disk, if the flow indicates that a components 
> exists with version X, but version X of the nar is not available, we 
> automatically change the version to version Y, provided that (a) Version Y is 
> available and (b) Version Y is the only available version.
> However, when attempting to join a cluster, we do not allow for this. The 
> exact version of the NAR that is specified in the flow must be available. 
> Otherwise, the node will not join the cluster.
> This was done because we did not want to have a case where we have different 
> versions of NiFi running on different nodes in a cluster. If this is the 
> case, then the nodes will behave differently, but also the UI will show that 
> the version is X even though one of the nodes may be running version Y.
> This seems reasonable, but it has caused major issues in one respect: it 
> makes it impossible to perform a rolling upgrade of a NiFi cluster. It means 
> that the entire cluster must be stopped and upgraded at the same time.
> Additionally, the logic comes with another downside. Because we allow 
> multiple versions of a NAR to be loaded, the following scenario is common:
> A cluster is running with one version, say 2.2.0. But the user also has 
> version 2.1.1 of a particular NAR. Now, when the user upgrades to version 
> 2.4.0, the flow says that Processor X should be version 2.2.0. Now, version 
> 2.4.0 is available but 2.2.0 is not. However, we do not use version 2.4.0, 
> because there are two versions available: 2.1.1 and 2.4.0. Instead, we just 
> "ghost" the component, and it's up to the user to notice this and go in and 
> change the version on that component.
> This is easily avoided by making a small change to the logic. Instead of 
> finding a compatible version only when there is exactly 1 version available, 
> we should find a compatible version EITHER when exactly 1 version is 
> available, OR when one of the version is equal to the version of the 
> framework. So in the example above, it means that we'd update the version to 
> 2.4.0.
> Making these changes should allow for rolling upgrades of NiFi.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to