This is an automated email from the ASF dual-hosted git repository. okram pushed a commit to branch tp4 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/tp4 by this push: new cf832e7 fixed up the toString() of Beams execution plan. Tweaked on ExplainStrategy some more. cf832e7 is described below commit cf832e7a3eb1b9659098593c0bb838201c1822dc Author: Marko A. Rodriguez <okramma...@gmail.com> AuthorDate: Tue Mar 19 15:01:16 2019 -0600 fixed up the toString() of Beams execution plan. Tweaked on ExplainStrategy some more. --- .../org/apache/tinkerpop/language/gremlin/Traversal.java | 2 +- .../machine/strategy/decoration/ExplainStrategy.java | 9 ++++++--- .../org/apache/tinkerpop/machine/processor/beam/Beam.java | 4 ++-- .../util/{PrimitiveVisitor.java => ExecutionPlanner.java} | 15 ++++----------- .../apache/tinkerpop/machine/processor/beam/BeamTest.java | 6 ++++++ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index 6b1dd97..15adece 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -117,7 +117,7 @@ public class Traversal<C, S, E> implements Iterator<E> { } public Traversal<C, S, String> explain() { - this.bytecode.addSourceInstruction(Symbols.WITH_STRATEGY, ExplainStrategy.class); + this.bytecode.addSourceInstruction(Symbols.WITH_STRATEGY, ExplainStrategy.class); // TODO: maybe its best to have this in the global cache this.bytecode.addInstruction(this.currentCoefficient, Symbols.EXPLAIN); return (Traversal) this; } diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/decoration/ExplainStrategy.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/decoration/ExplainStrategy.java index 44d7ded..9550274 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/decoration/ExplainStrategy.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/decoration/ExplainStrategy.java @@ -41,16 +41,19 @@ public final class ExplainStrategy extends AbstractStrategy<Strategy.DecorationS public <C> void apply(final Bytecode<C> bytecode) { if (bytecode.lastInstruction().op().equals(Symbols.EXPLAIN)) { bytecode.getInstructions().remove(bytecode.lastInstruction()); + bytecode.getSourceInstructions().removeIf(instruction -> + instruction.op().equals(Symbols.WITH_STRATEGY) && + instruction.args()[0].equals(ExplainStrategy.class)); final Bytecode<C> clone = bytecode.clone(); bytecode.getInstructions().clear(); bytecode.addInstruction( BytecodeUtil.getCoefficient(clone).get(), Symbols.INJECT, - ExplainStrategy.processBytecode(clone)); + ExplainStrategy.explainBytecode(clone)); } } - private static <C> String processBytecode(final Bytecode<C> bytecode) { + private static <C> String explainBytecode(final Bytecode<C> bytecode) { final Map<String, String> explain = new LinkedHashMap<>(); explain.put(ORIGINAL, bytecode.toString()); for (final Strategy strategy : BytecodeUtil.getStrategies(bytecode)) { @@ -78,7 +81,7 @@ public final class ExplainStrategy extends AbstractStrategy<Strategy.DecorationS ExplainStrategy.addSpaces(builder, entry.getKey(), maxLength); builder.append("\t\t").append(entry.getValue()).append("\n"); } - builder.replace(builder.length() - 1, builder.length(), ""); + builder.replace(builder.length() - 1, builder.length(), ""); // removes trailing newline character return builder.toString(); } diff --git a/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/Beam.java b/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/Beam.java index 96dcf00..a0e0636 100644 --- a/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/Beam.java +++ b/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/Beam.java @@ -24,7 +24,7 @@ import org.apache.beam.sdk.transforms.Create; import org.apache.beam.sdk.transforms.ParDo; import org.apache.beam.sdk.values.PCollection; import org.apache.tinkerpop.machine.processor.beam.serialization.TraverserCoder; -import org.apache.tinkerpop.machine.processor.beam.util.PrimitiveVisitor; +import org.apache.tinkerpop.machine.processor.beam.util.ExecutionPlanner; import org.apache.tinkerpop.machine.processor.beam.util.TopologyUtil; import org.apache.tinkerpop.machine.bytecode.Compilation; import org.apache.tinkerpop.machine.processor.Processor; @@ -81,7 +81,7 @@ public class Beam<C, S, E> implements Processor<C, S, E> { @Override public String toString() { - final PrimitiveVisitor visitor = new PrimitiveVisitor(); + final ExecutionPlanner visitor = new ExecutionPlanner(); this.pipeline.traverseTopologically(visitor); return visitor.toString(); } diff --git a/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/util/PrimitiveVisitor.java b/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/util/ExecutionPlanner.java similarity index 70% rename from java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/util/PrimitiveVisitor.java rename to java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/util/ExecutionPlanner.java index 6a5f4e2..9162044 100644 --- a/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/util/PrimitiveVisitor.java +++ b/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/util/ExecutionPlanner.java @@ -20,10 +20,7 @@ package org.apache.tinkerpop.machine.processor.beam.util; import org.apache.beam.sdk.Pipeline; import org.apache.beam.sdk.runners.TransformHierarchy; -import org.apache.beam.sdk.transforms.PTransform; import org.apache.beam.sdk.values.PValue; -import org.apache.tinkerpop.machine.processor.beam.OutputFn; -import org.apache.tinkerpop.machine.processor.beam.RepeatDeadEndFn; import java.util.ArrayList; import java.util.List; @@ -31,9 +28,9 @@ import java.util.List; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class PrimitiveVisitor implements Pipeline.PipelineVisitor { +public class ExecutionPlanner implements Pipeline.PipelineVisitor { - private final List<PTransform> primitives = new ArrayList<>(); + private final List<String> streamFunctionStrings = new ArrayList<>(); @Override public void enterPipeline(final Pipeline p) { @@ -52,11 +49,7 @@ public class PrimitiveVisitor implements Pipeline.PipelineVisitor { @Override public void visitPrimitiveTransform(final TransformHierarchy.Node node) { - if (!node.getTransform().toString().startsWith("Read") && - !node.getTransform().toString().contains(OutputFn.class.getSimpleName()) && - !node.getTransform().toString().contains(RepeatDeadEndFn.class.getSimpleName()) && - !node.getTransform().toString().startsWith("Flatten")) - this.primitives.add(node.getTransform()); + this.streamFunctionStrings.add(node.getFullName() + "[" + node.getTransform().toString() + "]"); } @Override @@ -70,6 +63,6 @@ public class PrimitiveVisitor implements Pipeline.PipelineVisitor { @Override public String toString() { - return this.primitives.toString(); + return this.streamFunctionStrings.toString(); } } diff --git a/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java b/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java index 111d189..c750e3e 100644 --- a/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java +++ b/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java @@ -54,6 +54,12 @@ public class BeamTest { System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal.toList()); System.out.println("\n----------\n"); + traversal = g.V().identity().union(__.count(),__.count()).map(__.<Long,Long>count().identity()).explain(); + System.out.println(TraversalUtil.getBytecode(traversal)); + System.out.println(traversal); + System.out.println(TraversalUtil.getBytecode(traversal)); + System.out.println(traversal.next()); + System.out.println("\n----------\n"); } @Test