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/11 17:53:34 UTC

[26/50] [abbrv] tinkerpop git commit: added StringFactory rules for GraphActors, Partitioner, and Partition. Realized someting profoundly sucky about DedupGlobalStep. Exposed more test cases to AkkaGraphActors.

added StringFactory rules for GraphActors, Partitioner, and Partition. Realized someting profoundly sucky about DedupGlobalStep. Exposed more test cases to AkkaGraphActors.


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

Branch: refs/heads/TINKERPOP-1564
Commit: 8991fcb29ca18b4d323da5e76640fd5e758b31a8
Parents: a50c14d
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Dec 14 09:37:14 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jan 11 10:52:04 2017 -0700

----------------------------------------------------------------------
 .../akka/process/actor/AkkaGraphActors.java     |  8 +++-
 .../akka/process/AkkaActorsProvider.java        |  1 -
 .../actor/traversal/TraversalMasterProgram.java |  8 ++--
 .../tinkerpop/gremlin/structure/Partition.java  | 15 +++++--
 .../gremlin/structure/util/StringFactory.java   | 15 +++++++
 .../util/partitioner/GlobalPartitioner.java     | 41 ++++++++++++++++++--
 .../util/partitioner/HashPartitioner.java       | 32 ++++++++++++++-
 7 files changed, 107 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actor/AkkaGraphActors.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actor/AkkaGraphActors.java b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actor/AkkaGraphActors.java
index b28f536..362db97 100644
--- a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actor/AkkaGraphActors.java
+++ b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actor/AkkaGraphActors.java
@@ -25,9 +25,10 @@ import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 import com.typesafe.config.ConfigValueFactory;
 import org.apache.tinkerpop.gremlin.process.actor.ActorProgram;
-import org.apache.tinkerpop.gremlin.process.actor.GraphActors;
 import org.apache.tinkerpop.gremlin.process.actor.Address;
+import org.apache.tinkerpop.gremlin.process.actor.GraphActors;
 import org.apache.tinkerpop.gremlin.structure.Partitioner;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
@@ -52,6 +53,11 @@ public final class AkkaGraphActors<R> implements GraphActors<R> {
     }
 
     @Override
+    public String toString() {
+        return StringFactory.graphActorsString(this);
+    }
+
+    @Override
     public Address.Master master() {
         return this.master;
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/AkkaActorsProvider.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/AkkaActorsProvider.java b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/AkkaActorsProvider.java
index 9c8b320..bf9e092 100644
--- a/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/AkkaActorsProvider.java
+++ b/akka-gremlin/src/test/java/org/apache/tinkerpop/gremlin/akka/process/AkkaActorsProvider.java
@@ -68,7 +68,6 @@ 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_both_both_dedup_byXoutE_countX_name",
             GraphTest.Traversals.class.getCanonicalName(),
             GroupTest.Traversals.class.getCanonicalName(),
             ComplexTest.Traversals.class.getCanonicalName(),

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actor/traversal/TraversalMasterProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actor/traversal/TraversalMasterProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actor/traversal/TraversalMasterProgram.java
index 7846d53..2cd5f7f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actor/traversal/TraversalMasterProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actor/traversal/TraversalMasterProgram.java
@@ -35,6 +35,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 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.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;
@@ -106,9 +107,10 @@ final class TraversalMasterProgram<M> implements ActorProgram.Master<M> {
                                     new OrderedTraverser<>(step.next(), this.orderCounter++));
                         }
                     } else {
-                        this.traversal.getSideEffects().forEach((k, v) -> {
-                            this.broadcast(new SideEffectSetMessage(k, v));
-                        });
+                        if (step instanceof SideEffectCapable) {
+                            final String key = ((SideEffectCapable) step).getSideEffectKey();
+                            this.broadcast(new SideEffectSetMessage(key, this.traversal.getSideEffects().get(key)));
+                        }
                         this.broadcast(new BarrierDoneMessage(barrier));
                         barrier.done();
                     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Partition.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Partition.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Partition.java
index 12faca9..dbb5260 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Partition.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Partition.java
@@ -19,8 +19,10 @@
 
 package org.apache.tinkerpop.gremlin.structure;
 
+import java.net.InetAddress;
 import java.net.URI;
 import java.util.Iterator;
+import java.util.UUID;
 
 /**
  * A {@code Partition} represents a physical or logical split of the underlying {@link Graph} structure.
@@ -59,11 +61,18 @@ public interface Partition {
     public Iterator<Edge> edges(final Object... ids);
 
     /**
-     * Get the {@link URI} location of the partition.
+     * Get the {@link UUID} of the partition.
      *
-     * @return the location of the partition
+     * @return the unique id of the partition
      */
-    public URI location();
+    public UUID guid();
+
+    /**
+     * Get the {@link InetAddress} of the locations physical location.
+     *
+     * @return the physical location of the partition.
+     */
+    public InetAddress location();
 
     public static interface PhysicalPartition extends Partition {
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
index bcead2d..553ebe3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.structure.util;
 
+import org.apache.tinkerpop.gremlin.process.actor.GraphActors;
 import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
@@ -35,6 +36,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Partition;
+import org.apache.tinkerpop.gremlin.structure.Partitioner;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
@@ -139,6 +142,18 @@ public final class StringFactory {
         return graphComputer.getClass().getSimpleName().toLowerCase();
     }
 
+    public static String graphActorsString(final GraphActors graphActors) {
+        return graphActors.getClass().getSimpleName().toLowerCase();
+    }
+
+    public static String partitionerString(final Partitioner partitioner) {
+        return "partitioner" + L_BRACKET + partitioner.getClass().getSimpleName().toLowerCase() + COLON + partitioner.getPartitions().size() + R_BRACKET;
+    }
+
+    public static String partitionString(final Partition partition) {
+        return "partition" + L_BRACKET + partition.location().getHostAddress() + COLON + partition.guid() + R_BRACKET;
+    }
+
     public static String traversalSourceString(final TraversalSource traversalSource) {
         final String graphString = traversalSource.getGraph().toString();
         final Optional<Computer> optional = VertexProgramStrategy.getComputer(traversalSource.getStrategies());

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/GlobalPartitioner.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/GlobalPartitioner.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/GlobalPartitioner.java
index 910de8e..361750b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/GlobalPartitioner.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/GlobalPartitioner.java
@@ -25,11 +25,14 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Partition;
 import org.apache.tinkerpop.gremlin.structure.Partitioner;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
-import java.net.URI;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.UUID;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -52,12 +55,24 @@ public final class GlobalPartitioner implements Partitioner {
         return this.partition;
     }
 
+    @Override
+    public String toString() {
+        return StringFactory.partitionerString(this);
+    }
+
     private class GlobalPartition implements Partition {
 
         private final Graph graph;
+        private final UUID guid = UUID.randomUUID();
+        private final InetAddress location;
 
         private GlobalPartition(final Graph graph) {
             this.graph = graph;
+            try {
+                this.location = InetAddress.getLocalHost();
+            } catch (final UnknownHostException e) {
+                throw new IllegalStateException(e.getMessage(), e);
+            }
         }
 
         @Override
@@ -76,8 +91,28 @@ public final class GlobalPartitioner implements Partitioner {
         }
 
         @Override
-        public URI location() {
-            return URI.create("localhost");
+        public String toString() {
+            return StringFactory.partitionString(this);
+        }
+
+        @Override
+        public boolean equals(final Object other) {
+            return other instanceof Partition && ((Partition) other).guid().equals(this.guid);
+        }
+
+        @Override
+        public int hashCode() {
+            return this.guid.hashCode() + this.location.hashCode();
+        }
+
+        @Override
+        public UUID guid() {
+            return this.guid;
+        }
+
+        @Override
+        public InetAddress location() {
+            return this.location;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8991fcb2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/HashPartitioner.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/HashPartitioner.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/HashPartitioner.java
index 432918f..b3d3db7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/HashPartitioner.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/partitioner/HashPartitioner.java
@@ -24,12 +24,14 @@ import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Partition;
 import org.apache.tinkerpop.gremlin.structure.Partitioner;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.net.URI;
+import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.UUID;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -47,6 +49,11 @@ public final class HashPartitioner implements Partitioner {
     }
 
     @Override
+    public String toString() {
+        return StringFactory.partitionerString(this);
+    }
+
+    @Override
     public List<Partition> getPartitions() {
         return this.partitions;
     }
@@ -65,6 +72,7 @@ public final class HashPartitioner implements Partitioner {
         private final Partition basePartition;
         private final int totalSplits;
         private final int splitId;
+        private final UUID guid = UUID.randomUUID();
 
         private HashPartition(final Partition basePartition, final int splitId, final int totalSplits) {
             this.basePartition = basePartition;
@@ -88,7 +96,27 @@ public final class HashPartitioner implements Partitioner {
         }
 
         @Override
-        public URI location() {
+        public String toString() {
+            return StringFactory.partitionString(this);
+        }
+
+        @Override
+        public boolean equals(final Object other) {
+            return other instanceof Partition && ((Partition) other).guid().equals(this.guid);
+        }
+
+        @Override
+        public int hashCode() {
+            return this.guid.hashCode() + this.location().hashCode();
+        }
+
+        @Override
+        public UUID guid() {
+            return this.guid;
+        }
+
+        @Override
+        public InetAddress location() {
             return this.basePartition.location();
         }
     }