[
https://issues.apache.org/jira/browse/NIFI-7489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pierre Villard resolved NIFI-7489.
----------------------------------
Resolution: Feedback Received
Apache NiFi 1.x is no longer maintained and no new release is planned on the
1.x release line. Marking as resolved as part of a cleanup operation. Please
open a new one with an updated description if this is still relevant for NiFi
2.x.
> resolveInheritedControllerServices doesn't connect all controller services
> --------------------------------------------------------------------------
>
> Key: NIFI-7489
> URL: https://issues.apache.org/jira/browse/NIFI-7489
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core Framework, Flow Versioning
> Affects Versions: 1.11.4
> Environment: Official NiFi Docker Container connected to Official
> NiFi Registry Container
> Reporter: Eric Secules
> Priority: Major
> Attachments: externalServiceReference_Issue.xml
>
>
> h1. Description
> When I download versioned flows from NiFi Registry, sometimes it does not
> connect processors to controller services even though one exists in scope and
> it has the same name as the one it was originally connected to.
> h1. Expected Behaviour
> NiFi downloads versioned process groups and connects external controller
> services correctly provided that a compatible controller service is available
> and has the same name.
> h1. Actual Behaviour
> NiFi downloads versioned flows but does not connect all external controller
> services.
> h1. Steps to reproduce:
> * Upload the attached template to your NiFi
> * Ensure the necessary Controller Services exist at the ROOT process group.
> ** DistributedMapCacheClientService
> ** AzureStorageCredentialsControllerService
> ** DistributedMapCacheServer
> * Resolve all warnings on processors, maybe need to connect the above
> controller services.
> * Start version control on "Inner Versioned Flow"
> * Start version control on "Outer Versioned Flow"
> * Clear Canvas
> * Delete and Recreate the Controller Services
> ** DistributedMapCacheClientService
> ** AzureStorageCredentialsControllerService
> ** DistributedMapCacheServer
> * Import "Outer Versioned Flow" from your registry
> You should observe that one processor in Inner Versioned Flow is invalid
> because it wasn't connected to an existing controller service and that the
> other processor is valid because by coincidence it shares the same dependency
> on an external controller service as the Outer Versioned Flow
> h1. Notes
> I believe the issue is that the code falls into [this line
> here|https://github.com/apache/nifi/blob/45e626f6a872296cdd08fcfc533c7ce7e3624fca/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java#L3585]
> because the {{externalControllerServiceReferences}} is always set to that of
> the outermost versioned process group being imported even if the current
> process group being imported is versioned as well and has a different set of
> {{externalControllerServiceReferences}}
> A solution may be to make sure that {{externalControllerServiceReferences}}
> corresponds to the innermost versioned process group being worked on by
> {{resolveInheritedControllerServices()}}.
> Another potential solution could be to make sure that outer versioned process
> groups' {{externalControllerServiceReferences}} is a superset of all the
> {{externalControllerServiceReferences}} from versioned process groups inside
> it.
> A good restriction to have might be not to allow Controller Services with the
> same name to exist in the same scope.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)