You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2017/01/24 18:32:23 UTC

tinkerpop git commit: TraversalActorProgram now support mid-traversal V(). This means the entire test-suite now passes save those with Mutating steps (oh, and mid-traversal inject(), which is easy enough now that I understand mid-traversal V()). This is

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1564 8cf050416 -> 9bb808f0a


TraversalActorProgram now support mid-traversal V(). This means the entire test-suite now passes save those with Mutating steps (oh, and mid-traversal inject(), which is easy enough now that I understand mid-traversal V()). This is it. We are 'done.'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9bb808f0
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9bb808f0
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9bb808f0

Branch: refs/heads/TINKERPOP-1564
Commit: 9bb808f0ac4bcd0f0ee22706a04d871fb7dad3f0
Parents: 8cf0504
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 24 11:32:20 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 24 11:32:20 2017 -0700

----------------------------------------------------------------------
 .../akka/process/actors/AkkaActorsProvider.java       |  4 ----
 .../actors/traversal/TraversalWorkerProgram.java      | 14 +++++++++++++-
 2 files changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bb808f0/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
index fde786c..f610a97 100644
--- a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
+++ b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaActorsProvider.java
@@ -24,7 +24,6 @@ import org.apache.tinkerpop.gremlin.akka.process.actors.io.gryo.GryoSerializer;
 import org.apache.tinkerpop.gremlin.process.actors.GraphActors;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
@@ -48,14 +47,11 @@ public class AkkaActorsProvider extends AbstractTinkerGraphProvider {
     private static final Random RANDOM = new Random();
 
     private static Set<String> SKIP_TESTS = new HashSet<>(Arrays.asList(
-            "g_V_hasLabelXpersonX_V_hasLabelXsoftwareX_name",
             "g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack",
             "g_V_repeatXdedupX_timesX2X_count",
             "g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack",
             "g_VX1X_sideEffectXstore_aX_name",
             "g_VX1X_out_sideEffectXincr_cX_name",
-            "coworkerSummaryOLTP",
-            GraphTest.Traversals.class.getCanonicalName(),
             SubgraphTest.Traversals.class.getCanonicalName(),
             ProfileTest.Traversals.class.getCanonicalName(),
             PartitionStrategyProcessTest.class.getCanonicalName(),

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bb808f0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
index f654044..67d8b4a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalWorkerProgram.java
@@ -142,7 +142,9 @@ final class TraversalWorkerProgram implements ActorProgram.Worker<Object> {
     //////////////
 
     private void processTraverser(final Traverser.Admin traverser) {
-        assert !(traverser.get() instanceof Element) || this.self.partition().contains((Element) traverser.get());
+        assert !(traverser.get() instanceof Element) ||
+                this.self.partition().contains((Element) traverser.get()) ||
+                this.matrix.getStepById(traverser.getStepId()) instanceof GraphStep; // only mid-traversal V()/E() traversers can be non-locally processed
         if (traverser.isHalted())
             this.sendTraverser(traverser);
         else {
@@ -164,10 +166,20 @@ final class TraversalWorkerProgram implements ActorProgram.Worker<Object> {
         this.detachTraverser(traverser);
         if (traverser.isHalted())
             this.self.send(this.self.master(), traverser);
+        else if (this.matrix.getStepById(traverser.getStepId()) instanceof GraphStep)
+            this.broadcast(traverser);
         else if (traverser.get() instanceof Element && !this.self.partition().contains((Element) traverser.get()))
             this.self.send(this.partitionToWorkerMap.get(this.self.partition().partitioner().find((Element) traverser.get())), traverser);
         else
             this.self.send(this.self.address(), traverser);
+
+
+    }
+
+    private void broadcast(final Object message) {
+        for (final Address.Worker worker : this.self.workers()) {
+            this.self.send(worker, message);
+        }
     }
 
     private final Traverser.Admin detachTraverser(final Traverser.Admin traverser) {