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/23 21:24:46 UTC
[50/50] [abbrv] tinkerpop git commit: I was able to get another test
case to pass with akka-gremlin/ --- the problem was successive cap('a')s were
building up successively larger side-effect values.
I was able to get another test case to pass with akka-gremlin/ --- the problem was successive cap('a')s were building up successively larger side-effect values.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/59f90300
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/59f90300
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/59f90300
Branch: refs/heads/TINKERPOP-1564
Commit: 59f903003252245e5e7704c79d6340e9b23e89d5
Parents: c0ae4de
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Jan 20 09:11:52 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 23 14:22:53 2017 -0700
----------------------------------------------------------------------
.../akka/process/actors/AkkaGraphActors.java | 2 -
.../akka/process/actors/AkkaActorsProvider.java | 1 -
.../akka/process/actors/AkkaPlayTest.java | 6 ++-
.../traversal/TraversalMasterProgram.java | 9 ++--
.../traversal/TraversalWorkerProgram.java | 15 ++++--
.../process/actors/util/GraphActorsHelper.java | 48 --------------------
6 files changed, 17 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59f90300/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
index d536b82..12e6c1e 100644
--- a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
+++ b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
@@ -30,7 +30,6 @@ import org.apache.tinkerpop.gremlin.process.actors.ActorProgram;
import org.apache.tinkerpop.gremlin.process.actors.ActorsResult;
import org.apache.tinkerpop.gremlin.process.actors.GraphActors;
import org.apache.tinkerpop.gremlin.process.actors.util.DefaultActorsResult;
-import org.apache.tinkerpop.gremlin.process.actors.util.GraphActorsHelper;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import org.apache.tinkerpop.gremlin.util.config.SerializableConfiguration;
@@ -51,7 +50,6 @@ public final class AkkaGraphActors<R> implements GraphActors<R> {
private AkkaGraphActors(final Configuration configuration) {
this.configuration = new SerializableConfiguration(configuration);
this.configuration.setProperty(GRAPH_ACTORS, AkkaGraphActors.class.getCanonicalName());
- GraphActorsHelper.configure(this, this.configuration);
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59f90300/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 432444b..27e9c7e 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
@@ -51,7 +51,6 @@ public class AkkaActorsProvider extends AbstractTinkerGraphProvider {
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_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX",
"g_V_repeatXdedupX_timesX2X_count",
"g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack",
"g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X",
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59f90300/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaPlayTest.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaPlayTest.java b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaPlayTest.java
index fc1cb84..67e1ddc 100644
--- a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaPlayTest.java
+++ b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaPlayTest.java
@@ -24,6 +24,7 @@ import org.apache.commons.configuration.Configuration;
import org.apache.tinkerpop.gremlin.akka.process.actors.AkkaGraphActors;
import org.apache.tinkerpop.gremlin.process.actors.GraphActors;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Column;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
@@ -49,10 +50,11 @@ public class AkkaPlayTest {
configuration.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_GRAPH_FORMAT,"gryo");
final Graph graph = TinkerGraph.open(configuration);
//graph.io(GryoIo.build()).readGraph("../data/tinkerpop-modern.kryo");
- GraphTraversalSource g = graph.traversal().withProcessor(GraphActors.open(AkkaGraphActors.class).workers(2));
+ GraphTraversalSource g = graph.traversal().withProcessor(GraphActors.open(AkkaGraphActors.class).workers(15));
// System.out.println(g.V().group().by("name").by(outE().values("weight").fold()).toList());
- System.out.println(g.V().order().by("name").values("name").toList());
+ // [{v[1]=6, v[2]=2, v[3]=6, v[4]=6, v[5]=2, v[6]=2}]
+ System.out.println(g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a").toList());
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59f90300/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 eca4328..5947361 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
@@ -39,7 +39,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.OrderedTraverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
@@ -97,8 +96,6 @@ final class TraversalMasterProgram implements ActorProgram.Master<Object> {
barrier.addBarrier(TraversalActorProgram.attach(((BarrierAddMessage) message).getBarrier(), this.master.partitioner().getGraph()));
if (barrier instanceof SideEffectCapable)
this.sideEffects.add(((SideEffectCapable) barrier).getSideEffectKey());
- if (barrier instanceof SideEffectCapStep)
- this.sideEffects.addAll(((SideEffectCapStep<?, ?>) barrier).getSideEffectKeys());
this.barriers.put(((Step) barrier).getId(), barrier);
} else if (message instanceof SideEffectAddMessage) {
final SideEffectAddMessage sideEffectAddMessage = (SideEffectAddMessage) message;
@@ -113,11 +110,11 @@ final class TraversalMasterProgram implements ActorProgram.Master<Object> {
}
// process all barriers
for (final Barrier barrier : this.barriers.values()) {
+ this.broadcast(new BarrierDoneMessage(barrier));
final Step<?, ?> step = (Step) barrier;
- if (barrier instanceof LocalBarrier) { // the barriers are distributed amongst the workers
- this.broadcast(new BarrierDoneMessage(barrier));
+ if (barrier instanceof LocalBarrier) // the barriers are distributed amongst the workers
barrier.done();
- } else { // the barrier is at the master
+ else { // the barrier is at the master
this.orderBarrier(step);
if (step instanceof OrderGlobalStep) this.orderCounter = 0;
while (step.hasNext()) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59f90300/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 4e49f03..1e69c5c 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
@@ -35,6 +35,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.Distributing;
import org.apache.tinkerpop.gremlin.process.traversal.step.LocalBarrier;
import org.apache.tinkerpop.gremlin.process.traversal.step.Pushing;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -112,9 +113,12 @@ final class TraversalWorkerProgram implements ActorProgram.Worker<Object> {
set(((SideEffectSetMessage) message).getKey(), TraversalActorProgram.attach(((SideEffectSetMessage) message).getValue(), this.self.partition()));
} else if (message instanceof BarrierDoneMessage) {
final Step<?, ?> step = (Step) this.matrix.getStepById(((BarrierDoneMessage) message).getStepId());
- while (step.hasNext()) {
- sendTraverser(step.next());
- }
+ if (step instanceof LocalBarrier) { // the worker drains the local barrier
+ while (step.hasNext()) {
+ sendTraverser(step.next());
+ }
+ } else
+ ((Barrier) step).done(); // the master drains the global barrier
} else if (message instanceof Terminate) {
assert null == this.terminate;
this.terminate = (Terminate) message;
@@ -123,20 +127,21 @@ final class TraversalWorkerProgram implements ActorProgram.Worker<Object> {
if (barrier instanceof LocalBarrier) {
barrier.processAllStarts();
this.self.send(this.self.master(), new BarrierAddMessage(barrier));
- } else {
+ } else if(!(barrier instanceof SideEffectCapStep)) { // why is this needed?
while (barrier.hasNextBarrier()) {
this.self.send(this.self.master(), new BarrierAddMessage(barrier));
}
}
}
this.barriers.clear();
+ this.voteToHalt = false; // is this necessary?
}
// use termination token to determine termination condition
if (this.isLeader) {
if (this.voteToHalt && Terminate.YES == this.terminate)
this.self.send(this.self.master(), Terminate.YES);
else
- this.self.send(this.neighborWorker, Terminate.YES);
+ this.self.send(this.neighborWorker, this.voteToHalt ? Terminate.YES : Terminate.NO);
} else
this.self.send(this.neighborWorker, this.voteToHalt ? this.terminate : Terminate.NO);
this.terminate = null;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59f90300/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/util/GraphActorsHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/util/GraphActorsHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/util/GraphActorsHelper.java
deleted file mode 100644
index 2af1ecd..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/util/GraphActorsHelper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tinkerpop.gremlin.process.actors.util;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.actors.GraphActors;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-
-import java.util.Iterator;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class GraphActorsHelper {
-
- private GraphActorsHelper() {
-
- }
-
- public static GraphActors configure(GraphActors actors, final Configuration configuration) {
- final Iterator<String> keys = IteratorUtils.asList(configuration.getKeys()).iterator();
- while (keys.hasNext()) {
- final String key = keys.next();
- if (key.equals(GraphActors.GRAPH_ACTORS_WORKERS))
- actors = actors.workers(configuration.getInt(GraphActors.GRAPH_ACTORS_WORKERS));
- else if (!key.equals(GraphActors.GRAPH_ACTORS))
- actors = actors.configure(key, configuration.getProperty(key));
- }
- return actors;
- }
-}