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/04 13:58:54 UTC

[36/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/a9b81d29
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a9b81d29
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a9b81d29

Branch: refs/heads/TINKERPOP-1564
Commit: a9b81d2937184012f56f577df1ac1fa49a51cfee
Parents: 73b6e74
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 4 05:07:59 2017 -0700

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a9b81d29/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/a9b81d29/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/a9b81d29/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/a9b81d29/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index 2bd9c32..b89c64b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -173,8 +173,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
                 object = TraversalUtil.applyNullable(traverser, this.dedupTraversal);
             }
             if (!map.containsKey(object)) {
-                traverser.setBulk(1l);
-                traverser.set(DetachedFactory.detach(traverser.get(), true));
+                traverser.setBulk(1L);
                 map.put(object, traverser);
             }
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a9b81d29/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/a9b81d29/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/a9b81d29/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/a9b81d29/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();
         }
     }