NIFI-15863 - User edits to newly-introduced component properties silently classified as environmental changes#11166
Merged
Merged
Conversation
…ntly classified as environmental changes
markap14
requested changes
Apr 21, 2026
Contributor
markap14
left a comment
There was a problem hiding this comment.
Thanks @pvillard31 conceptually changes make sense. Just had one concern about the method name. Otherwise looks good.
Comment on lines
+995
to
+1000
| return isNotDynamicProperty(fieldName.get(), componentNode); | ||
| if (!isNotDynamicProperty(fieldName.get(), componentNode)) { |
Contributor
There was a problem hiding this comment.
It looks like this is the only place we're using this method. Can we rename to isDynamicProperty and invert it? I don't like negations in method names but we definitely shouldn't be negating the result of a method called isNotDynamicProperty
Contributor
Author
There was a problem hiding this comment.
Fair, pushed a commit to remove the negation
markap14
approved these changes
Apr 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
NIFI-15863 - User edits to newly-introduced component properties silently classified as environmental changes
When a newer bundle declares a static property that did not exist in the versioned flow snapshot,
FlowDifferenceFilters.isPropertyAddedFromMigration(added in NIFI-15776) classifies the resultingPROPERTY_ADDEDdiff as environmental regardless of value. If the user later edits that property the diff relative to the registry is stillPROPERTY_ADDED(the property descriptor is absent from the snapshot), so the edit is also swallowed as environmental: the flow is not marked dirty and the change cannot be committed through normal local-change workflows.NIFI-15830 refined related behavior but only addressed cases detected through
isNewPropertyWithDefaultValue, which compares valueB against the descriptor default. It did not tightenisPropertyAddedFromMigration, which continues to return true for any statically-declared property missing from the snapshot, independent of the value. As a result, user edits away from the default on a newly-introduced property remain indistinguishable from the framework-applied default and are still filtered out.We need to tighten
isPropertyAddedFromMigrationto only treat aPROPERTY_ADDEDdiff as environmental when valueB equals the descriptor's default value. This preserves the NIFI-15776 / NIFI-15830 behavior for bundle upgrades (framework-applied defaults remain filtered), while surfacing genuine user edits as local changes.Narrow regression: if a component's
migratePropertiesexplicitly assigns a new static property to a non-default value, that value will now show as a local change and the user must commit once after upgrade.Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking
Pull Request Tracking
NIFI-00000NIFI-00000VerifiedstatusPull Request Formatting
mainbranchVerification
Please indicate the verification steps performed prior to pull request creation.
Build
./mvnw clean install -P contrib-checkLicensing
LICENSEandNOTICEfilesDocumentation