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