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

ASF GitHub Bot commented on NIFI-5377:
--------------------------------------

Github user mcgilman commented on the issue:

    https://github.com/apache/nifi/pull/2847
  
    @markobean Thanks for the PR! I've tried running it and it does indeed 
address the issue called out in the JIRA. Previously, the infinite loop 
occurred when trying to configure the services in question. With the PR in 
place, I can now configure the services to build the reference cycle. However, 
if I try to enable them I encountered a different infinite loop here:
    
    at 
org.apache.nifi.controller.service.StandardControllerServiceReference.findRecursiveReferences(StandardControllerServiceReference.java:125)
    
    I also seem to recall that previously the framework would identify when a 
reference cycle was detected and it would set that flag in the 
`ControllerServiceReferencingComponentDTO`. I noticed in the UI after 
establishing the reference cycle, the framework did not appear to detect it. 
This may or may not be related to the infinite loop referenced above. I do not 
believe this infinite loop is a result of this PR, but it's something we should 
probably address now as well.
    
    In my scenario service A did not reference any other service, service B 
referenced service A and C, and service C referenced service B. In your 
testing, did you happen to hit the same loop I did when trying to enable them?



> StandardNiFiServiceFacade: Recursive method call allows for infinite loop 
> when a circular reference exists
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-5377
>                 URL: https://issues.apache.org/jira/browse/NIFI-5377
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 1.7.0
>            Reporter: Jon Kessler
>            Assignee: Mark Bean
>            Priority: Minor
>
> At a minimum, when you attempt to view a list of controller services in the 
> gui this specific method is called to obtain a set of referenced controller 
> service identifiers. If there is a circular dependency in that set, you end 
> up with an infinite loop that ultimately results the user being redirected to 
> an error page in the gui.
> The method in question is 
> findControllerServiceReferencingComponentIdentifiers. It checks to see if 
> each node has been visited already but does not add them to the set until 
> after recursively calling itself again. If the line "visited.add(node);" is 
> moved above the method call, this will be resolved.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to