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)