Rob Fellows created NIFI-16543:
----------------------------------

             Summary: UI - Controller Service enable/disable advances before 
all recursive referencing branches complete
                 Key: NIFI-16543
                 URL: https://issues.apache.org/jira/browse/NIFI-16543
             Project: Apache NiFi
          Issue Type: Bug
          Components: Core UI
            Reporter: Rob Fellows
            Assignee: Rob Fellows


The Angular Controller Service enable/disable workflow uses positive `.some()`
when evaluating recursive Controller Service reference branches:
 - isReferencingServicesActionComplete() advances when any sibling Controller
Service branch reaches the accepted state
 - The nested branch of areReferencingComponentsStopped() advances when any
nested branch has stopped

With multiple sibling Controller Services, one completed branch can advance
the workflow while another service is still transitioning or still has running
processors / reporting tasks.

The legacy D3/jQuery UI waited for every recursively referenced service and
schedulable-component poll to complete. The Angular `.some()` behavior is a
regression.

File:
nifi-frontend/src/main/frontend/apps/nifi/src/app/state/contoller-service-state/controller-service-state.effects.ts

Possible Fix:
 - Require every sibling Controller Service branch to reach the accepted state
(.every())
 - Require every nested branch to have stopped before advancing disable
 - Guard recursion with ?? [] and skip nodes marked referenceCycle (server omits
referencingComponents for those nodes; .every() would otherwise throw)
 - Apply the same null/cycle guard to hasUnauthorizedReferences()
 - Preserve empty-reference behavior

Also add controller-service-state.effects.spec.ts covering mixed sibling
enable/disable, nested stop/activeThreadCount, empty references, and cycle 
nodes.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to