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

Joe Gresock edited comment on NIFI-15341 at 12/19/25 10:29 AM:
---------------------------------------------------------------

Yes, the problem is isolated to External Controller Services.  Here's the 
scenario that is affected:
# User downloads a NiFI 2.4.0 flow definition for a Process Group, with an 
External Controller Service referenced (say, a MongoDBControllerService with 
property "ssl-context-service" referencing a 
StandardRestrictedSSLContextService named "SSL Context Service")
# User then creates a StandardRestrictedSSLContextService called "SSL Context 
Service" at the root level of another NiFi instance, version 2.6.0
# User imports the flow definition.  The External Controller Service is not 
identified and requires manual intervention to select it.

I'm contending that the user is reasonable to expect that the External 
Controller Service in this scenario should be automatically selected.  They 
would probably be puzzled why it was not selected, and if they got as far as to 
realize that it was because the property was renamed, they would probably 
wonder why this "property migration" feature didn't work that NiFi claims to 
have.

I realize that the "second pass External Controller Service resolution" is a 
relatively complex change, but I feel that it was an oversight from the initial 
implementation of property migration, and should have been there all along.  
Property migration is a big feature, and it's understandable that this was 
missed, but I think it would be beneficial to add.


was (Author: jgresock):
Yes, the problem is isolated to External Controller Services.  Here's the 
scenario that is affected:
# User downloads a NiFI 2.4.0 flow definition for a Process Group, with an 
External Controller Service referenced (say, a MongoDBControllerService with 
property "ssl-context-service" referencing a 
StandardRestrictedSSLContextService named "SSL Context Service")
# User then creates a StandardRestrictedSSLContextService called "SSL Context 
Service" at the root level of another NiFi instance, version 2.6.0
# User imports the flow definition.  The External Controller Service is not 
identified and requires manual intervention to select it.

I'm contending that the user is reasonable to expect that the External 
Controller Service in this scenario should be automatically selected.  They 
would probably be puzzled why it was not selected, and if they got as far as to 
realize that it was because the property was renamed, they would probably 
wonder why this "property migration" feature didn't work that NiFi claims to 
have.

> External Controller Service resolution can break with property migration
> ------------------------------------------------------------------------
>
>                 Key: NIFI-15341
>                 URL: https://issues.apache.org/jira/browse/NIFI-15341
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 2.7.1
>            Reporter: Joe Gresock
>            Assignee: Joe Gresock
>            Priority: Minor
>         Attachments: CS_Resolution.json
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> When importing or replacing a Process Group, External Controller Services can 
> fail to resolve if a component property was renamed between the versioned 
> flow and the currently installed bundle using property migration.
> To reproduce in 2.4.0 or later, download attached JSON file representing a 
> Process Group Replace request.  Then log into NiFi and copy the Bearer token. 
>  Then create a new blank process group in NiFi and copy its identifier for 
> below.
> Next, create a new StandardRestrictedSSLContextService at the root canvas and 
> name it "SSL Context Service".
> {code:java}
> BEARER_TOKEN=<paste bearer token>
> PG_ID=<pg id>
> curl -k -vv -X POST 
> https://localhost:8443/nifi-api/process-groups/$PG_ID/replace-requests -H 
> "Content-Type: application/json" -H "Authorization: Bearer $BEARER_TOKEN" -d 
> @CS_Resolution.json
> {code}
> Observe that the SSL Context Service property in the MongoDBControllerService 
> now references a UUID instead of the "SSL Context Service" service.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to