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/19 21:07:11 UTC

[50/50] [abbrv] tinkerpop git commit: Was able to open up a bunch more test cases to AkkaGraphActors. There are a few that are still busted -- and I believe these are related to nested collections and complexities with attachment of elements in the colle

Was able to open up a bunch more test cases to AkkaGraphActors. There are a few that are still busted -- and I believe these are related to nested collections and complexities with attachment of elements in the collections.


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

Branch: refs/heads/TINKERPOP-1564
Commit: a2dbe7b0be7e49ba5cc9b354ac98962e733a905c
Parents: 235ec6a
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jan 19 14:06:03 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 19 14:06:03 2017 -0700

----------------------------------------------------------------------
 .../process/actors/io/gryo/GryoSerializer.java  |  6 ++--
 .../akka/process/actors/AkkaActorsProvider.java |  8 +----
 .../actors/traversal/TraversalActorProgram.java | 37 ++++++++++++++++++--
 .../traversal/TraversalMasterProgram.java       | 13 +++----
 .../traversal/TraversalWorkerProgram.java       |  8 +----
 5 files changed, 45 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a2dbe7b0/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/gryo/GryoSerializer.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/gryo/GryoSerializer.java b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/gryo/GryoSerializer.java
index e060d64..515c902 100644
--- a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/gryo/GryoSerializer.java
+++ b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/gryo/GryoSerializer.java
@@ -116,9 +116,11 @@ public final class GryoSerializer implements Serializer {
 
     @Override
     public byte[] toBinary(final Object object) {
-        final Output output = new Output(new ByteArrayOutputStream());
+        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        final Output output = new Output(outputStream);
         this.gryoPool.writeWithKryo(kryo -> kryo.writeClassAndObject(output, object));
-        return output.getBuffer();
+        output.flush();
+        return outputStream.toByteArray();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a2dbe7b0/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 7fe2a2d..a9b5820 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
@@ -71,15 +71,9 @@ public class AkkaActorsProvider extends AbstractGraphProvider {
             "g_VX1X_repeatXbothEXcreatedX_whereXwithoutXeXX_aggregateXeX_otherVX_emit_path",
             "g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack",
             "g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX",
-            "g_V_asXaX_name_order_asXbX_selectXa_bX_byXnameX_by_XitX",
-            //"g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX",
-            //"g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name",
             "g_V_repeatXdedupX_timesX2X_count",
-            "g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX",
             "g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack",
-            "g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X",
-            "g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX",
-            "g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX",
+            //"g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X",
             "g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX",
             GraphTest.Traversals.class.getCanonicalName(),
             ComplexTest.Traversals.class.getCanonicalName(),

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a2dbe7b0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalActorProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalActorProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalActorProgram.java
index d8fe9ef..bad0931 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalActorProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalActorProgram.java
@@ -44,12 +44,14 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.Repe
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.util.config.SerializableConfiguration;
+import org.apache.tinkerpop.gremlin.structure.Partition;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.Host;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 
 /**
@@ -150,4 +152,35 @@ public final class TraversalActorProgram<R> implements ActorProgram {
             throw new IllegalStateException(e.getMessage(), e);
         }
     }
+
+    public static <A> A attach(final A object, final Host host) {
+        if (DETACH) {
+            if (object instanceof Map) {
+                final Map map = (Map) object;
+                for (final Object key : map.keySet()) {
+                    map.put(TraversalActorProgram.attach(key, host), TraversalActorProgram.attach(map.get(key), host));
+                }
+                return (A) map;
+            } else if (object instanceof List) {
+                final List list = (List) object;
+                for (int i = 0; i < list.size(); i++) {
+                    list.set(i, TraversalActorProgram.attach(list.get(i), host));
+                }
+                return (A) list;
+            } else if (object instanceof TraverserSet) {
+                ((TraverserSet<?>) object).forEach(traverser -> TraversalActorProgram.attach(traverser, host));
+                return object;
+            } else if (object instanceof Traverser.Admin) {
+                final Traverser.Admin traverser = (Traverser.Admin) object;
+                traverser.attach(host);
+                traverser.set(TraversalActorProgram.attach(traverser.get(), host));
+                return (A) traverser;
+            } else if (object instanceof Attachable) {
+                return (A) ((Attachable) object).attach(Attachable.Method.get(host instanceof Partition ? ((Partition) host).partitioner().getGraph() : host));
+            } else {
+                return host.attach(object).orElse(object);
+            }
+        } else
+            return object;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a2dbe7b0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalMasterProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalMasterProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalMasterProgram.java
index 147fb19..a6bb94e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalMasterProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/TraversalMasterProgram.java
@@ -44,7 +44,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSe
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Partition;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -91,7 +90,7 @@ final class TraversalMasterProgram implements ActorProgram.Master<Object> {
         } else if (message instanceof BarrierAddMessage) {
             final Barrier barrier = (Barrier) this.matrix.getStepById(((BarrierAddMessage) message).getStepId());
             final Step<?, ?> step = (Step) barrier;
-            barrier.addBarrier(((BarrierAddMessage) message).getBarrier());
+            barrier.addBarrier(TraversalActorProgram.attach(((BarrierAddMessage) message).getBarrier(), this.master.partitioner().getGraph()));
             this.barriers.put(step.getId(), barrier);
         } else if (message instanceof SideEffectAddMessage) {
             this.traversal.getSideEffects().add(((SideEffectAddMessage) message).getKey(), ((SideEffectAddMessage) message).getValue());
@@ -122,12 +121,12 @@ final class TraversalMasterProgram implements ActorProgram.Master<Object> {
             } else {
                 while (this.traversal.hasNext()) {
                     final Traverser.Admin traverser = this.traversal.nextTraverser();
-                    this.results.add(-1 == this.orderCounter ? traverser : new OrderedTraverser(traverser,this.orderCounter++));
+                    this.results.add(-1 == this.orderCounter ? traverser : new OrderedTraverser(traverser, this.orderCounter++));
                 }
                 if (this.orderCounter != -1)
                     this.results.sort((a, b) -> Integer.compare(((OrderedTraverser<?>) a).order(), ((OrderedTraverser<?>) b).order()));
 
-                this.results.forEach(this::attachTraverser);
+                TraversalActorProgram.attach(this.results, this.master.partitioner().getGraph());
                 this.master.close();
             }
         } else {
@@ -147,7 +146,7 @@ final class TraversalMasterProgram implements ActorProgram.Master<Object> {
     }
 
     private void processTraverser(final Traverser.Admin traverser) {
-        this.attachTraverser(traverser);
+        TraversalActorProgram.attach(traverser, this.master.partitioner().getGraph());
         if (traverser.isHalted() || traverser.get() instanceof Element) {
             this.sendTraverser(traverser);
         } else {
@@ -185,8 +184,4 @@ final class TraversalMasterProgram implements ActorProgram.Master<Object> {
         return TraversalActorProgram.DETACH ? traverser.detach() : traverser;
     }
 
-    private void attachTraverser(final Traverser.Admin traverser) {
-        if (TraversalActorProgram.DETACH && traverser.get() instanceof Element)
-            traverser.attach(this.master.partitioner().find((Element) traverser.get()));
-    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a2dbe7b0/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 8f66f99..b4df2b6 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
@@ -40,7 +40,6 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Partition;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.HashMap;
@@ -152,7 +151,7 @@ final class TraversalWorkerProgram implements ActorProgram.Worker<Object> {
         if (traverser.isHalted())
             this.sendTraverser(traverser);
         else {
-            this.attachTraverser(traverser);
+            TraversalActorProgram.attach(traverser, this.self.partition());
             final Step<?, ?> step = this.matrix.<Object, Object, Step<Object, Object>>getStepById(traverser.getStepId());
             step.addStart(traverser);
             if (step instanceof Barrier) {
@@ -180,9 +179,4 @@ final class TraversalWorkerProgram implements ActorProgram.Worker<Object> {
         return TraversalActorProgram.DETACH ? traverser.detach() : traverser;
     }
 
-    private final Traverser.Admin attachTraverser(final Traverser.Admin traverser) {
-        if (TraversalActorProgram.DETACH)
-            traverser.attach(this.self.partition());
-        return traverser;
-    }
 }