Dear Nifi experts,

we are running a single-node Nifi installation with Nifi version 1.11.2 and 
recently started to look into the upgrade to Nifi 1.14.0. While doing so we 
observe one very odd behaviour when starting the new Nifi version with our 
existing flow:

During startup the Nifi initialization fails as some properties from controller 
services or processors are set using parameters. According to the error message 
(stack trace below) the property is considered being sensitive (even though the 
documentation states it is not, e.g. "Database Connection URL" in 
DBCPConnectionPool<https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-dbcp-service-nar/1.14.0/org.apache.nifi.dbcp.DBCPConnectionPool/index.html>
 ) while the parameter is not sensitive. In our humble opinion the error lies 
in the wrong assumption that the property is sensitive.

One thing we noticed is that there multiple instances of 
GhostControllerServices being created because the old NAR versions are not 
found anymore. We assume that this is normal behaviour.

Things we have tried:

·         Starting Nifi with a clean/empty flow -> works

·         "Hack" the flow XML so that the parameter is defined as sensitive -> 
kind of works as it falls over at the next parameter (we didn't yet test to 
make them all sensitive)

Any help or suggestion is greatly appreciated,
Christian

Stacktrace:

2021-09-17 15:54:52,575 DEBUG [main] o.a.n.c.v.StandardValidationTrigger 
Triggered to perform validation on 
StandardControllerServiceNode[service=GhostControllerService[id=c86a30d7-ddbe-1257-57a4-32cd7854dd56,
 type=org.apache.nifi.dbcp.DBCPConnectionPool], name=TeradataConnection, 
active=false] asynchronously but flow is not yet initialized so will ignore 
validation
2021-09-17 15:54:52,575 WARN [main] org.eclipse.jetty.webapp.WebAppContext 
Failed startup of context 
o.e.j.w.WebAppContext@1ab268bd{nifi-api,/nifi-api,file:///appl/nifi/nifi-1.14.0/work/jetty/nifi-web-api-1.14.0.war/webapp/,UNAVAILABLE}{/appl/nifi/nifi-current/work/nar/extensions/nifi-server-nar-1.14.0.nar-unpacked/NAR-INF/bundled-dependencies/nifi-web-api-1.14.0.war}
org.apache.nifi.controller.serialization.FlowSynchronizationException: 
java.lang.IllegalArgumentException: The property 'Database Connection URL' is a 
sensitive property, so it can only reference Parameters that are sensitive.
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:306)
            at 
org.apache.nifi.controller.FlowController.synchronize(FlowController.java:1469)
            at 
org.apache.nifi.persistence.StandardXMLFlowConfigurationDAO.load(StandardXMLFlowConfigurationDAO.java:89)
            at 
org.apache.nifi.controller.StandardFlowService.loadFromBytes(StandardFlowService.java:810)
            at 
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:539)
            at 
org.apache.nifi.web.contextlistener.ApplicationStartupContextListener.contextInitialized(ApplicationStartupContextListener.java:67)
            at 
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1068)
            at 
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:572)
            at 
org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:997)
            at 
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:746)
            at 
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
            at 
org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449)
            at 
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414)
            at 
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911)
            at 
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
            at 
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
            at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
            at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
            at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
            at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
            at 
org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:426)
            at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
            at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
            at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
            at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
            at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
            at org.eclipse.jetty.server.Server.start(Server.java:423)
            at 
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
            at 
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
            at org.eclipse.jetty.server.Server.doStart(Server.java:387)
            at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
            at 
org.apache.nifi.web.server.JettyServer.start(JettyServer.java:1129)
            at org.apache.nifi.NiFi.<init>(NiFi.java:159)
            at org.apache.nifi.NiFi.<init>(NiFi.java:71)
            at org.apache.nifi.NiFi.main(NiFi.java:303)
Caused by: java.lang.IllegalArgumentException: The property 'Database 
Connection URL' is a sensitive property, so it can only reference Parameters 
that are sensitive.
            at 
org.apache.nifi.controller.AbstractComponentNode.verifyCanUpdateProperties(AbstractComponentNode.java:301)
            at 
org.apache.nifi.controller.AbstractComponentNode.setProperties(AbstractComponentNode.java:196)
            at 
org.apache.nifi.controller.ComponentNode.setProperties(ComponentNode.java:61)
            at 
org.apache.nifi.controller.service.ControllerServiceLoader.configureControllerService(ControllerServiceLoader.java:219)
            at 
org.apache.nifi.controller.service.ControllerServiceLoader.loadControllerServices(ControllerServiceLoader.java:123)
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.addControllerServices(StandardFlowSynchronizer.java:1391)
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.addProcessGroup(StandardFlowSynchronizer.java:1334)
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.addNestedProcessGroups(StandardFlowSynchronizer.java:1351)
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.addProcessGroup(StandardFlowSynchronizer.java:1340)
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.updateFlow(StandardFlowSynchronizer.java:432)
            at 
org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:283)
            ... 43 common frames omitted

Christian Gumpert
Leiter BI & Analytics
Lead Data Scientist
Product Owner Team Lagrev

Eidgenössisches Finanzdepartement EFD
Eidgenössische Zollverwaltung EZV
Direktionsbereich Risikoanalyse und Analytik

Taubenstrasse 16, 3003 Bern
christian.gump...@ezv.admin.ch
www.ezv.admin.ch<http://www.ezv.admin.ch/>

Reply via email to