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

Michael W Moser updated NIFI-15901:
-----------------------------------
    Fix Version/s:     (was: 2.10.0)

> StandardVersionedComponentSynchronizer.synchronizeControllerServices fails 
> when controller services are enabled
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-15901
>                 URL: https://issues.apache.org/jira/browse/NIFI-15901
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>            Reporter: AK
>            Priority: Minor
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> This is a similar issue to https://issues.apache.org/jira/browse/NIFI-15801.
> When the proposed flow adds a controller service at a child group level with 
> the same identifier as an existing ENABLED service at the root level, 
> {{synchronizeControllerServices}} finds the root service via ancestor lookup 
> and calls {{setProperties}} on it without first disabling it. This causes an 
> {{IllegalStateException}} from {{verifyModifiable()}} and the node enters an 
> infinite disconnect/reconnect loop. This is the controller-service equivalent 
> of the processor bug fixed in NIFI-15801 and the same fix applies: disable 
> before update, re-enable in a finally block.
> *Steps to reproduce*
>  # Deploy a 2-node NiFi cluster with a flow where the same CS identifier 
> appears at root group level and child group level.
>  # Wait for the cluster to be healthy (both nodes CONNECTED, both CSes 
> ENABLED).
>  # Disconnect the non-coordinator node (via REST API or UI Cluster view) - 
> the node stays running with CSes ENABLED.
>  # On the disconnected node, disable and delete the child-group CS (via REST 
> API or UI).
>  # Reconnect the node (via REST API or UI Cluster view) 
> *Expected*
> The node re-joins and the original flow is applied to re-connecting node.
> *Actual*
> The coordinator proposes the original flow (CS at both levels). The 
> reconnecting node's sync finds the root CS via ancestor lookup, marks it for 
> update, and calls setProperties on it while still ENABLED and node enters 
> infinite disconnect/reconnect loop.



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

Reply via email to