diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java index 1c8eeebb57c..07cf67d985f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java @@ -46,7 +46,7 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg private static final ComputerVerificationStrategy INSTANCE = new ComputerVerificationStrategy(); private static final Set> UNSUPPORTED_STEPS = new HashSet<>(Arrays.asList( - InjectStep.class, Mutating.class, SubgraphStep.class, ComputerResultStep.class, IoStep.class, ElementStep.class + InjectStep.class, Mutating.class, SubgraphStep.class, IoStep.class, ElementStep.class )); // Some operators output an indeterministic result when executed in GraphComputer. diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java index 19117d6e9ab..2212990d916 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java @@ -711,7 +711,11 @@ public static boolean onGraphComputer(Traversal.Admin traversal) { return true; traversal = traversal.getParent().asStep().getTraversal(); } - return false; + if (traversal.getSteps().size() > 0) { + return traversal.getSteps().get(0) instanceof TraversalVertexProgramStep; + } else { + return false; + } } public static void removeAllSteps(final Traversal.Admin traversal) { diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java index 12d0fec5ccf..ffdc8736e61 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java @@ -26,11 +26,13 @@ import org.apache.tinkerpop.gremlin.process.traversal.P; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReservedKeysVerificationStrategy; import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics; +import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics; import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Graph; @@ -58,6 +60,7 @@ import org.apache.tinkerpop.shaded.kryo.Serializer; import org.apache.tinkerpop.shaded.kryo.io.Input; import org.apache.tinkerpop.shaded.kryo.io.Output; +import org.junit.Assert; import org.junit.Test; import java.awt.Color; @@ -662,6 +665,13 @@ public void shouldProperlyTimeReducingBarrierForProfile() { } } + @Test + public void shouldReturnOnGraphComputerTrue() { + final GraphTraversalSource g = TinkerFactory.createModern().traversal().withComputer(); + final GraphTraversal.Admin traversal = g.V().out().iterate().asAdmin(); + Assert.assertTrue(TraversalHelper.onGraphComputer(traversal)); + } + /** * Just validating that property folding works nicely given TINKERPOP-2112 */