You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Mark Weghorst (Jira)" <ji...@apache.org> on 2020/04/28 23:00:00 UTC

[jira] [Commented] (NIFI-7380) NiFi Stateless does not validate CS correctly

    [ https://issues.apache.org/jira/browse/NIFI-7380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17094913#comment-17094913 ] 

Mark Weghorst commented on NIFI-7380:
-------------------------------------

Pierre, thank you for working on this issue.  I had a chance to try out your proposed patch, and while it's a partial fix for some controller services, there are still some unresolved issues with StandardSSLContextService. 

Other services such as DBCPConnectionPool validate correctly, but it looks like we have some issues that might be specific to file paths. 

{{Caused by: org.apache.nifi.reporting.InitializationException: SSLContextService[id=b6bcc2fd-0098-36b8-904d-d9a929a52f84] is not valid due to:}}
{{'Truststore Properties' is invalid because Cannot access file /opt/nifi/nifi-current/#\{truststore.file}}}

I'm attaching a download of my registry flow config, a file with the full exception stack trace and a copy of my JSON config file that I use to launch stateless.  

Please let me know if you need anything else, I have a real-world workload that I'm trying to bring up with stateless and I'm very eager to help you with this in any way i can.  

[^nifi-7380-flow-config.json]

[^nifi-7380-exception.txt]

[^stateless.json]

 

 

> NiFi Stateless does not validate CS correctly
> ---------------------------------------------
>
>                 Key: NIFI-7380
>                 URL: https://issues.apache.org/jira/browse/NIFI-7380
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: NiFi Stateless
>            Reporter: Pierre Villard
>            Assignee: Pierre Villard
>            Priority: Critical
>              Labels: nifi-stateless, stateless
>         Attachments: nifi-7380-exception.txt, nifi-7380-flow-config.json, nifi-7380-reproducer.xml, stateless.json
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When the flow executed with the NiFi Stateless running mode contains a Controller Service with required properties, it'll fail as it does not take into account the configuration when performing the validation of the component.
> In *StatelessControllerServiceLookup*, the method
> {code:java}
> public void enableControllerServices(final VariableRegistry variableRegistry) 
> {code}
> first validates the configured controller services and calls
> {code:java}
> public Collection<ValidationResult> validate(...){code}
> This will create a *StatelessProcessContext* object and a *StatelessValidationContext* object. Then the method *validate* is called on the controller service and pass the validation context as argument. It will go through the properties of the controller service and will retrieve the configured value of the properties as set in the *StatelessProcessContext* object. The problem is that the *properties* map in the Stateless Process Context supposed to contain the configured values is never set. As such, any required property in a Controller Service is considered as configured with a null value if there is no default value. This will cause the component validation to fail and the flow won't be executed.
> I opened a PR with a solution that does solve this issue. However I'm not sure this issue does not affect other scenarios and a better approach could be necessary (more in line with what is done in NiFi core).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)