Mark Payne created NIFI-9839:
--------------------------------
Summary: NiFi fails to startup/join cluster if dataflow consists
solely of Controller Services and Reporting Tasks
Key: NIFI-9839
URL: https://issues.apache.org/jira/browse/NIFI-9839
Project: Apache NiFi
Issue Type: Bug
Components: Core Framework
Affects Versions: 1.16.0
Reporter: Mark Payne
Assignee: Mark Payne
Fix For: 1.16.1
To replicate:
# Start a cluster
# Add one or more controller services to the Root Process Group. Do not add
any processors, labels, funnels, ports, etc.
# Restart cluster
This will result in a stack trace along the lines of:
{code:java}
2022-03-28 11:24:28,230 ERROR org.apache.nifi.web.server.JettyServer: Unable to
load flow due to: java.io.IOException:
org.apache.nifi.controller.serialization.FlowSynchronizationException: Failed
to connect node to cluster because local flow controller partially updated.
Administrator should disconnect node and review flow for corruption.
java.io.IOException:
org.apache.nifi.controller.serialization.FlowSynchronizationException: Failed
to connect node to cluster because local flow controller partially updated.
Administrator should disconnect node and review flow for corruption.
at
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:524)
at org.apache.nifi.web.server.JettyServer.start(JettyServer.java:1086)
at org.apache.nifi.NiFi.<init>(NiFi.java:170)
at org.apache.nifi.NiFi.<init>(NiFi.java:82)
at org.apache.nifi.NiFi.main(NiFi.java:330)
Caused by:
org.apache.nifi.controller.serialization.FlowSynchronizationException: Failed
to connect node to cluster because local flow controller partially updated.
Administrator should disconnect node and review flow for corruption.
at
org.apache.nifi.controller.StandardFlowService.loadFromConnectionResponse(StandardFlowService.java:1057)
at
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:520)
... 4 common frames omitted
Caused by:
org.apache.nifi.controller.serialization.FlowSynchronizationException:
java.lang.IllegalStateException: The specified observer identifier
(bulletin-observer) already exists.
at
org.apache.nifi.controller.serialization.VersionedFlowSynchronizer.synchronizeFlow(VersionedFlowSynchronizer.java:362)
at
org.apache.nifi.controller.serialization.VersionedFlowSynchronizer.sync(VersionedFlowSynchronizer.java:185)
at
org.apache.nifi.controller.serialization.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:43)
at
org.apache.nifi.controller.FlowController.synchronize(FlowController.java:1479)
at
org.apache.nifi.persistence.StandardFlowConfigurationDAO.load(StandardFlowConfigurationDAO.java:104)
at
org.apache.nifi.controller.StandardFlowService.loadFromBytes(StandardFlowService.java:815)
at
org.apache.nifi.controller.StandardFlowService.loadFromConnectionResponse(StandardFlowService.java:1026)
... 5 common frames omitted
Caused by: java.lang.IllegalStateException: The specified observer identifier
(bulletin-observer) already exists.
at
org.apache.nifi.logging.repository.StandardLogRepository.addObserver(StandardLogRepository.java:169)
at
org.apache.nifi.controller.flow.StandardFlowManager.createControllerService(StandardFlowManager.java:490)
at
org.apache.nifi.groups.StandardProcessGroupSynchronizer.addControllerService(StandardProcessGroupSynchronizer.java:1033)
at
org.apache.nifi.groups.StandardProcessGroupSynchronizer.synchronizeControllerServices(StandardProcessGroupSynchronizer.java:457)
at
org.apache.nifi.groups.StandardProcessGroupSynchronizer.synchronize(StandardProcessGroupSynchronizer.java:339)
at
org.apache.nifi.groups.StandardProcessGroupSynchronizer.lambda$synchronize$0(StandardProcessGroupSynchronizer.java:221)
at
org.apache.nifi.controller.flow.AbstractFlowManager.withParameterContextResolution(AbstractFlowManager.java:462)
at
org.apache.nifi.groups.StandardProcessGroupSynchronizer.synchronize(StandardProcessGroupSynchronizer.java:219)
at
org.apache.nifi.groups.StandardProcessGroup.synchronizeFlow(StandardProcessGroup.java:3830)
at
org.apache.nifi.controller.serialization.VersionedFlowSynchronizer.synchronizeFlow(VersionedFlowSynchronizer.java:353)
... 11 common frames omitted {code}
However, if any other components are added to the root group, such as a process
or a child process group, this won't happen.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)