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;
- }
}