[ 
https://issues.apache.org/jira/browse/NIFI-15746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18068862#comment-18068862
 ] 

ASF subversion and git services commented on NIFI-15746:
--------------------------------------------------------

Commit b139223b604a81d5cf84a52ce7663b85f7adfb75 in nifi's branch 
refs/heads/main from Pierre Villard
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=b139223b604 ]

NIFI-15746 Preserve inherited parameter contexts during KEEP_EXISTING versioned 
flow deployment (#11041)

Signed-off-by: David Handermann <[email protected]>

> Inherited parameter contexts unconditionally overwritten during versioned 
> flow deployment with KEEP_EXISTING strategy
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-15746
>                 URL: https://issues.apache.org/jira/browse/NIFI-15746
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Flow Versioning
>    Affects Versions: 2.5.0
>            Reporter: Xinyu Wang
>            Assignee: Pierre Villard
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> When deploying a versioned flow from NiFi Registry using 
> parameterContextHandlingStrategy=KEEP_EXISTING, if a parameter context with 
> the same name already exists on the target NiFi instance, its parameter 
> values are correctly preserved, but its inherited parameter context list is 
> unconditionally replaced with the one from the versioned flow snapshot.
>   This is problematic in multi-environment deployment scenarios (e.g., DEV → 
> PROD) where the same-named parameter context is intentionally configured with 
> different inheritance chains on each environment. The KEEP_EXISTING strategy 
> should preserve the existing parameter context as-is — including its 
> inheritance — but currently only preserves parameter values while silently 
> overwriting the inheritance chain.
>   The root cause is in 
> StandardVersionedComponentSynchronizer.addMissingConfiguration(), which calls 
>  currentParameterContext.setInheritedParameterContexts(...) without checking 
> whether the current parameter context already has inherited context 
> configured.
> *Steps to Reproduce:*
>   1. Set up two NiFi instances (Instance A and Instance B), both connected to 
> the same NiFi Registry.
>   2. On Instance B (target), create the following parameter context hierarchy:
>     - target-system-params — a top-level parameter context with 
> environment-specific parameters
>     - shared-service-params — inheriting from target-system-params
>   3. On Instance A (source), create the following parameter context hierarchy:
>     - source-system-params — a top-level parameter context
>     - shared-service-params — inheriting from source-system-params
>   4. On Instance A, create a Process Group MyWorkflow containing a nested 
> Process Group MyService:
>     - MyWorkflow uses parameter context workflow-params
>     - MyService uses parameter context shared-service-params
>   5. Save MyWorkflow to NiFi Registry as Version 1.
>   6. Verify the state on Instance B before deployment:
>     - Confirm shared-service-params inherits from target-system-params.
>   7. On Instance B, deploy Version 1 from Registry:
>   POST 
> /process-groups/\{id}/process-groups?parameterContextHandlingStrategy=KEEP_EXISTING
>   8. Check shared-service-params on Instance B after deployment.
> *Expected Result:*
>   shared-service-params on Instance B retains its existing inheritance from 
> target-system-params. The KEEP_EXISTING strategy should preserve the existing 
> parameter context entirely — both its parameters and its inheritance chain.
> *Actual Result:*
>   shared-service-params on Instance B now inherits from source-system-params 
> (resolved by name on Instance B). The inheritance chain configured for the 
> target environment has been silently overwritten by the source environment's 
> definition.



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

Reply via email to