[ 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)