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

Reply via email to