[jira] [Commented] (NIFI-10951) Null exception error with DBCP Controller service and AWS parameter provider
[ https://issues.apache.org/jira/browse/NIFI-10951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17644074#comment-17644074 ] Paul Grey commented on NIFI-10951: -- It looks like we narrowed things down to an environment difference between stateful and stateless NiFi in this case. When running the ExecuteStateless processor, it is necessary to explicitly define the flow parameters that ExecuteStateless should propagate from its flow to its stateless invocation. I'd like to scope this ticket to providing a sensible error message when properties are unresolved from the environment configuration, for whatever reason. It would've been helpful in this situation for the error message to state explicitly something along the lines of: "property value for 'SENSITIVE.Password' is undefined", rather than "NullPointerException". This would have helped resolve things more quickly. > Null exception error with DBCP Controller service and AWS parameter provider > > > Key: NIFI-10951 > URL: https://issues.apache.org/jira/browse/NIFI-10951 > Project: Apache NiFi > Issue Type: Bug > Components: NiFi Stateless >Affects Versions: 1.18.0, 1.19.0 >Reporter: Lucas Read >Priority: Major > > I have a AWS Secrets Manager parameter provider configured and assigned to a > process group. I am trying to execute the process group as a stateless flow > but getting a null exception returned. It works when I do not run it as a > nonstateless flow but not when it is stateless. > > {code:java} > 2022-12-02 23:34:35,762 ERROR [Component Lifecycle for dataflow > stateless_test Thread-1] o.a.n.c.s.StandardControllerServiceNode > StandardControllerServiceNode[service=DBCPConnectionPool[id=4e17ba60-aba6-3443-83ff-5f6da6de96ac], > name=stateless_DBCPConnectionPool, active=true] Failed to invoke @OnEnabled > method > java.lang.NullPointerException: null > at > java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011) > at > java.base/java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006) > at java.base/java.util.Properties.put(Properties.java:1340) > at > org.apache.commons.dbcp2.BasicDataSource.addConnectionProperty(BasicDataSource.java:384) > at > org.apache.nifi.dbcp.DBCPConnectionPool.lambda$configureDataSource$0(DBCPConnectionPool.java:554) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) > at > org.apache.nifi.dbcp.DBCPConnectionPool.configureDataSource(DBCPConnectionPool.java:550) > at > org.apache.nifi.dbcp.DBCPConnectionPool.onConfigured(DBCPConnectionPool.java:497) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:566) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:145) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:133) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:78) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:55) > at > org.apache.nifi.controller.service.StandardControllerServiceNode$2.run(StandardControllerServiceNode.java:598) > at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at java.base/java.lang.Thread.run(Thread.java:829) > 2022-12-02 23:34:35,763 ERROR [Timer-Driven Process Thread-2] > o.a.n.p.stateless.ExecuteStateless > ExecuteStateless[id=294238ae-8268-1987--fd45d0f8] Could not create > dataflow from snapshot > java.lang.IllegalStateException: Controller Service > StandardControllerServiceNode[service=DBCPConnectionPool[id=4e17ba60-aba6-3443-83ff-5f6da6de96ac], > name=stateless_DBCPConnectionPool, active=true] has not fully enabled. > Current Validation Status is VALID with validation Errors: [] > at >
[jira] [Commented] (NIFI-10951) Null exception error with DBCP Controller service and AWS parameter provider
[ https://issues.apache.org/jira/browse/NIFI-10951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17643938#comment-17643938 ] Paul Grey commented on NIFI-10951: -- Going from this line in the stack trace above: {noformat} at org.apache.nifi.dbcp.DBCPConnectionPool.lambda$configureDataSource$0(DBCPConnectionPool.java:554) {noformat} There was a recent refactor that migrated this code to a new class: https://github.com/apache/nifi/blob/89426d167b34f49bfce28abf38ccb990f8bb7393/nifi-nar-bundles/nifi-extension-utils/nifi-dbcp-base/src/main/java/org/apache/nifi/dbcp/AbstractDBCPConnectionPool.java#L446-L447 I suspect the issue is still present (unaffected by the refactor). > Null exception error with DBCP Controller service and AWS parameter provider > > > Key: NIFI-10951 > URL: https://issues.apache.org/jira/browse/NIFI-10951 > Project: Apache NiFi > Issue Type: Bug > Components: NiFi Stateless >Affects Versions: 1.18.0, 1.19.0 >Reporter: Lucas Read >Priority: Major > > I have a AWS Secrets Manager parameter provider configured and assigned to a > process group. I am trying to execute the process group as a stateless flow > but getting a null exception returned. It works when I do not run it as a > nonstateless flow but not when it is stateless. > > {code:java} > 2022-12-02 23:34:35,762 ERROR [Component Lifecycle for dataflow > stateless_test Thread-1] o.a.n.c.s.StandardControllerServiceNode > StandardControllerServiceNode[service=DBCPConnectionPool[id=4e17ba60-aba6-3443-83ff-5f6da6de96ac], > name=stateless_DBCPConnectionPool, active=true] Failed to invoke @OnEnabled > method > java.lang.NullPointerException: null > at > java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011) > at > java.base/java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006) > at java.base/java.util.Properties.put(Properties.java:1340) > at > org.apache.commons.dbcp2.BasicDataSource.addConnectionProperty(BasicDataSource.java:384) > at > org.apache.nifi.dbcp.DBCPConnectionPool.lambda$configureDataSource$0(DBCPConnectionPool.java:554) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) > at > org.apache.nifi.dbcp.DBCPConnectionPool.configureDataSource(DBCPConnectionPool.java:550) > at > org.apache.nifi.dbcp.DBCPConnectionPool.onConfigured(DBCPConnectionPool.java:497) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:566) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:145) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:133) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:78) > at > org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:55) > at > org.apache.nifi.controller.service.StandardControllerServiceNode$2.run(StandardControllerServiceNode.java:598) > at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at java.base/java.lang.Thread.run(Thread.java:829) > 2022-12-02 23:34:35,763 ERROR [Timer-Driven Process Thread-2] > o.a.n.p.stateless.ExecuteStateless > ExecuteStateless[id=294238ae-8268-1987--fd45d0f8] Could not create > dataflow from snapshot > java.lang.IllegalStateException: Controller Service > StandardControllerServiceNode[service=DBCPConnectionPool[id=4e17ba60-aba6-3443-83ff-5f6da6de96ac], > name=stateless_DBCPConnectionPool, active=true] has not fully enabled. > Current Validation Status is VALID with validation Errors: [] > at > org.apache.nifi.stateless.flow.StandardStatelessFlow.enableControllerServices(StandardStatelessFlow.java:391) > at >