@dkuppitz found a Path bug in tp32/. I added a test case to tp31/ and the bug wasn't there. I upmerged to tp32/ and the bug was exposed. The bug isn't in an official release and was introduced a ccouple of weeks ago with MARKER work to IncidentToAdjacentStrategy. The fix was a one-line tweak. CTR.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b84d653e Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b84d653e Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b84d653e Branch: refs/heads/master Commit: b84d653e46eab04c1c137972cd797b9dd6d66c8c Parents: 1fcca95 4745fe1 Author: Marko A. Rodriguez <[email protected]> Authored: Wed Nov 23 05:11:37 2016 -0700 Committer: Marko A. Rodriguez <[email protected]> Committed: Wed Nov 23 05:11:37 2016 -0700 ---------------------------------------------------------------------- .../IncidentToAdjacentStrategy.java | 4 ++- .../traversal/step/map/GroovyPathTest.groovy | 5 +++ .../process/traversal/step/map/PathTest.java | 35 ++++++++++++++++++-- 3 files changed, 40 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b84d653e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java ---------------------------------------------------------------------- diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java index a0adbdc,712110d4..efe8618 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java @@@ -18,6 -18,6 +18,7 @@@ */ package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization; ++import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep; import org.apache.tinkerpop.gremlin.process.traversal.Step; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; @@@ -74,15 -69,10 +75,16 @@@ public final class IncidentToAdjacentSt } @Override - public void apply(Traversal.Admin<?, ?> traversal) { - final Traversal.Admin root = TraversalHelper.getRootTraversal(traversal); - if (TraversalHelper.hasStepOfAssignableClassRecursively(INVALIDATING_STEP_CLASSES, root)) + public void apply(final Traversal.Admin<?, ?> traversal) { + // using a hidden label marker to denote whether the traversal should not be processed by this strategy - if (traversal.getParent() instanceof EmptyStep && TraversalHelper.hasStepOfAssignableClassRecursively(INVALIDATING_STEP_CLASSES, traversal)) ++ if ((traversal.getParent() instanceof EmptyStep || traversal.getParent() instanceof VertexProgramStep) && ++ TraversalHelper.hasStepOfAssignableClassRecursively(INVALIDATING_STEP_CLASSES, traversal)) + TraversalHelper.applyTraversalRecursively(t -> t.getStartStep().addLabel(MARKER), traversal); + if (traversal.getStartStep().getLabels().contains(MARKER)) { + traversal.getStartStep().removeLabel(MARKER); return; + } + //////////////////////////////////////////////////////////////////////////// final Collection<Pair<VertexStep, Step>> stepsToReplace = new ArrayList<>(); Step prev = null; for (final Step curr : traversal.getSteps()) { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b84d653e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy ---------------------------------------------------------------------- diff --cc gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy index e696978,6caf246..15c499a --- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy +++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy @@@ -52,7 -52,12 +52,12 @@@ public abstract class GroovyPathTest @Override public Traversal<Vertex, Path> get_g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path() { - TraversalScriptHelper.compute("g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path", g) + new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path") } + + @Override + public Traversal<Vertex, Path> get_g_VX1X_outEXcreatedX_inV_inE_outV_path(final Object v1Id) { - TraversalScriptHelper.compute("g.V(v1Id).outE('created').inV.inE.outV.path()", g, "v1Id", v1Id) ++ new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('created').inV.inE.outV.path()", "v1Id", v1Id) + } } }
