[jira] [Commented] (NIFI-10951) Null exception error with DBCP Controller service and AWS parameter provider

2022-12-06 Thread Paul Grey (Jira)


[ 
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

2022-12-06 Thread Paul Grey (Jira)


[ 
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 
>