Daniel Kuppitz created TINKERPOP-1925:
-----------------------------------------

             Summary: Don't apply PathRetractionStrategy recursively
                 Key: TINKERPOP-1925
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1925
             Project: TinkerPop
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.2.7
            Reporter: Daniel Kuppitz


{{PathRetractionStrategy}} should not be applied recursively, if possible. This 
is considered an anti-pattern and just recently it caused a lot of trouble. 
This commit fixed the recent issue:

https://github.com/apache/tinkerpop/commit/b8eb8a02f1675a1b22b86ccc54d22453c65f406f

{{PathRetractionStrategy}} collects requirements of child traversals, before 
other strategies have a chance to mutate them. When other strategies get to the 
child traversals, mutate them and thus add or remove requirements, a few things 
can go crazy, especially because traverser requirements get cached when they're 
first requested.

Since I do not fully understand the {{PathRetractionStrategy}} code, my fix was 
actually a workaround. As you can see in the commit linked above, I implemented 
the same anti-pattern in {{SubgraphStrategy}} and 
{{IncidentToAdjacentStrategy}}; these are the 2 strategies that can potentially 
change the traverser requirements.

It would be nice to revert these changes and instead make 
{{PathRetractionStrategy}} work like all others. However, I'm not sure if 
that's even possible.



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

Reply via email to