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

Himanshu sahu reassigned NIFI-14715:
------------------------------------

    Assignee: Himanshu sahu

> NiFi Context Modifications are not tracked as Change (NiFi Registry)
> --------------------------------------------------------------------
>
>                 Key: NIFI-14715
>                 URL: https://issues.apache.org/jira/browse/NIFI-14715
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Flow Versioning, NiFi Registry
>    Affects Versions: 2.4.0
>            Reporter: Josef Zahner
>            Assignee: Himanshu sahu
>            Priority: Major
>
> It seems that the assigned parameter context and it's siblings are always 
> stored together with the versioned config in the same NiFi Registry Flow. At 
> first glance this seems to be fine. However, the problem starts, as soon as 
> you wanna delete a parameter and the context has been assigned to multiple 
> PGs / NiFi Registry Flows: **
>  # *Context changes (eg. adding/deleting a parameter) are not tracked as 
> Changes in the GUI under the PG "Version"* (in the older days for variables 
> this was the case!)  but they will be pushed to the NiFi Registry. So, 
> invisible to see what changed on context side between the last commit and 
> now. This leads us to issue 2 and 3 below.
>  # *Revert Issue:* Let us say you have two PGs (PG1 and PG2), both are using 
> the same context "global". You start with the initial commit for both PGs as 
> independent flows to the registry. You then create new versions for PG2 and 
> somewhen in between delete a parameter from "global". So the parameter is 
> gone in the GUI as well as in the NiFi Registry for NiFi Registry Flow PG2 
> and it will remain in the NiFi Registry Flow PG1. You then make changes to 
> PG1 but before you commit, you decide to do a "Revert local Changes" on the 
> Flow PG1. With that, you are importing again the, in the meantime, deleted 
> parameter, which is very confusing and complicated to handle if the context 
> is assigned to a lot of groups. _We have a "global" context, which is 
> assigned and inherited to nearly every PG in our setup. So every flow has 
> it's on copy of the parameter context from the time when it was commited to 
> the NiFi Registry, but the content (parameters) of the context could have 
> been changed in the meantime. So in fact for us it's nearly impossible to 
> really remove a parameter from this "global" context._
>  # *Revert Issue with Versioned Sub PGs:* Let's say we have "PG Parent" and 
> "PG Child". Both are using the same context "global" (contains param_1 & 
> param_2), but each PGs has it's on flow in the NiFi Registry. You initially 
> commit both flows. After that, you change anything on "PG Parent" and remove 
> "param_2" from context "global", then commit "PG Parent". Add another 
> processor to "PG Parent" but instead of "Commit local Changes" you do a 
> "Revert local Changes" on "PG Parent". What happens is, that the earlier 
> deleted "param_2" gets imported again, most likely because it was there on 
> the last "PG Child" commit and it seemed to revert not only the "PG Parent" 
> but as well "PG Child".
>  
> *We see two potential options to overcome the issue (there will be more for 
> sure):*
>  * "Simple Fix: NiFi detects parameter modifications as change in the GUI for 
> NiFi Registry versioned flows. So if you change a context, it will be shown 
> in every versioned flow as a modification and you can commit the newest 
> parameter  ontext into the registry. No mess anymore
>  * "More Complicated Fix": Store the Context not within each flow separately, 
> but create a reference and store it centrally within the NiFi Registry. So 
> every NiFi Registry Flow using the same context would only have a reference 
> in it's flow. 
>  
>  



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

Reply via email to