You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/03/18 15:37:42 UTC
[1/2] incubator-tinkerpop git commit: Made PartitionStrategy
immutable with a Builder class.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master e2d3eeeac -> c53d61e1b
Made PartitionStrategy immutable with a Builder class.
This should eliminate troubles with threadsafety issues around modifying partitions in different threads.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/a9e0d91a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/a9e0d91a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/a9e0d91a
Branch: refs/heads/master
Commit: a9e0d91a04cfb55d8485a42fa2648745fa8d1827
Parents: 36424c8
Author: Stephen Mallette <sp...@apache.org>
Authored: Wed Mar 18 10:35:05 2015 -0400
Committer: Stephen Mallette <sp...@apache.org>
Committed: Wed Mar 18 10:35:05 2015 -0400
----------------------------------------------------------------------
.../strategy/decoration/PartitionStrategy.java | 69 +++---
.../decoration/PartitionStrategyTest.java | 23 +-
.../PartitionStrategyProcessTest.java | 222 +++++++++++--------
3 files changed, 183 insertions(+), 131 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a9e0d91a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
index c634a3a..d17f0d2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
@@ -29,56 +29,28 @@ import java.util.stream.Stream;
public class PartitionStrategy extends AbstractTraversalStrategy {
private String writePartition;
private final String partitionKey;
- private final Set<String> readPartitions = new HashSet<>();
+ private final Set<String> readPartitions;
- public PartitionStrategy(final String partitionKey, final String partition) {
+ private PartitionStrategy(final String partitionKey, final String partition, final Set<String> readPartitions) {
this.writePartition = partition;
this.partitionKey = partitionKey;
- readPartitions.add(writePartition);
+ this.readPartitions = Collections.unmodifiableSet(readPartitions);
}
public String getWritePartition() {
return this.writePartition;
}
- /**
- * Set the partition to be used for future writes. The write partition is always included in the list of
- * current read partitions.
- */
- public void setWritePartition(final String writePartition) {
- this.writePartition = writePartition;
- }
-
public String getPartitionKey() {
return this.partitionKey;
}
- /**
- * Gets the set of read partitions which will include the current write partition even if not explicitly added
- * as a read partition otherwise.
- */
public Set<String> getReadPartitions() {
- return Collections.unmodifiableSet(readPartitions);
- }
-
- /**
- * Removes the specified read partition. Note that the current write partition cannot be removed as a read
- * partition.
- */
- public void removeReadPartition(final String readPartition) {
- this.readPartitions.remove(readPartition);
+ return readPartitions;
}
- public void addReadPartition(final String readPartition) {
- this.readPartitions.add(readPartition);
- }
-
- /**
- * Clears all of the read partitions. Note that the current write partition cannot be cleared as a read
- * partition.
- */
- public void clearReadPartitions() {
- this.readPartitions.clear();
+ public static Builder build() {
+ return new Builder();
}
@Override
@@ -121,4 +93,33 @@ public class PartitionStrategy extends AbstractTraversalStrategy {
TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, keyValues), traversal);
});
}
+
+ public static class Builder {
+ private String writePartition;
+ private String partitionKey;
+ private Set<String> readPartitions = new HashSet<>();
+
+ Builder() {}
+
+ public Builder writePartition(final String writePartition) {
+ this.writePartition = writePartition;
+ return this;
+ }
+
+ public Builder partitionKey(final String partitionKey) {
+ this.partitionKey = partitionKey;
+ return this;
+ }
+
+ public Builder addReadPartition(final String readPartition) {
+ this.readPartitions.add(readPartition);
+ return this;
+ }
+
+ public PartitionStrategy create() {
+ if (partitionKey == null || partitionKey.isEmpty()) throw new IllegalStateException("The partitionKey cannot be null or empty");
+
+ return new PartitionStrategy(this.partitionKey, this.writePartition, this.readPartitions);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a9e0d91a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
index ec34360..401b2c0 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
@@ -16,6 +16,7 @@ import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
import org.javatuples.Pair;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
@@ -39,15 +40,26 @@ public class PartitionStrategyTest {
public static class PartitionKeyBehavior {
@Test
- public void shouldMakeTheInitialWritePartitionPartOfTheReadPartition() {
- final PartitionStrategy strategy = new PartitionStrategy("p", "a");
+ public void shouldConstructPartitionStrategy() {
+ final PartitionStrategy strategy = PartitionStrategy.build()
+ .partitionKey("p").writePartition("a").addReadPartition("a").create();
assertEquals("a", strategy.getReadPartitions().iterator().next());
assertEquals(1, strategy.getReadPartitions().size());
+ assertEquals("p", strategy.getPartitionKey());
}
@Test
- public void shouldSetTheWritePartitionOnConstruction() {
- final PartitionStrategy strategy = new PartitionStrategy("p", "a");
+ public void shouldConstructPartitionStrategyWithMultipleReadPartitions() {
+ final PartitionStrategy strategy = PartitionStrategy.build()
+ .partitionKey("p").writePartition("a")
+ .addReadPartition("a")
+ .addReadPartition("b")
+ .addReadPartition("c").create();
+
+ assertTrue(IteratorUtils.asList(strategy.getReadPartitions().iterator()).contains("a"));
+ assertTrue(IteratorUtils.asList(strategy.getReadPartitions().iterator()).contains("b"));
+ assertTrue(IteratorUtils.asList(strategy.getReadPartitions().iterator()).contains("c"));
+ assertEquals(3, strategy.getReadPartitions().size());
assertEquals("p", strategy.getPartitionKey());
}
}
@@ -103,7 +115,8 @@ public class PartitionStrategyTest {
@Test
public void shouldIncludeAdditionalHasStepsAndAppendPartitionOnMutatingSteps() {
- final PartitionStrategy strategy = new PartitionStrategy("p", "a");
+ final PartitionStrategy strategy = PartitionStrategy.build()
+ .partitionKey("p").writePartition("a").addReadPartition("a").create();
if (hasMutatingStep) {
if (TraversalHelper.hasStepOfAssignableClass(AddEdgeStep.class, traversal.asAdmin())) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a9e0d91a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
index 1b3de16..cd0e219 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyProcessTest.java
@@ -39,12 +39,13 @@ import static org.junit.Assert.assertNotNull;
@UseEngine(TraversalEngine.Type.STANDARD)
public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
private static final String partition = "gremlin.partitionGraphStrategy.partition";
- private final PartitionStrategy partitionStrategy = new PartitionStrategy(partition, "A");
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
public void shouldAppendPartitionToVertex() {
- final Vertex v = create().addV("any", "thing").next();
+ final PartitionStrategy partitionStrategy = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").addReadPartition("A").create();
+ final Vertex v = create(partitionStrategy).addV("any", "thing").next();
assertNotNull(v);
assertEquals("thing", v.property("any").value());
@@ -54,7 +55,9 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
public void shouldAppendPartitionToEdge() {
- final GraphTraversalSource source = create();
+ final PartitionStrategy partitionStrategy = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").addReadPartition("A").create();
+ final GraphTraversalSource source = create(partitionStrategy);
final Vertex v1 = source.addV("any", "thing").next();
final Vertex v2 = source.addV("some", "thing").next();
final Edge e = source.V(v1.id()).addInE("connectsTo", v2, "every", "thing").next();
@@ -76,10 +79,25 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
public void shouldWriteVerticesToMultiplePartitions() {
- final GraphTraversalSource source = create();
- final Vertex vA = source.addV("any", "a").next();
- partitionStrategy.setWritePartition("B");
- final Vertex vB = source.addV("any", "b").next();
+ final PartitionStrategy partitionStrategyAA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").addReadPartition("A").create();
+ final GraphTraversalSource sourceAA = create(partitionStrategyAA);
+
+ final PartitionStrategy partitionStrategyBA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("B").addReadPartition("A").create();
+ final GraphTraversalSource sourceBA = create(partitionStrategyBA);
+
+ final PartitionStrategy partitionStrategyBB = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("B").addReadPartition("B").create();
+ final GraphTraversalSource sourceBB = create(partitionStrategyBB);
+
+ final PartitionStrategy partitionStrategyBAB = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("B").addReadPartition("A").addReadPartition("B").create();
+ final GraphTraversalSource sourceBAB = create(partitionStrategyBAB);
+
+
+ final Vertex vA = sourceAA.addV("any", "a").next();
+ final Vertex vB = sourceBA.addV("any", "b").next();
assertNotNull(vA);
assertEquals("a", vA.property("any").value());
@@ -89,29 +107,28 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
assertEquals("b", vB.property("any").value());
assertEquals("B", vB.property(partition).value());
- partitionStrategy.removeReadPartition("B");
- source.V().forEachRemaining(v -> assertEquals("a", v.property("any").value()));
-
- partitionStrategy.removeReadPartition("A");
- partitionStrategy.addReadPartition("B");
-
- source.V().forEachRemaining(v -> assertEquals("b", v.property("any").value()));
+ sourceBA.V().forEachRemaining(v -> assertEquals("a", v.property("any").value()));
+ sourceBB.V().forEachRemaining(v -> assertEquals("b", v.property("any").value()));
- partitionStrategy.addReadPartition("A");
- assertEquals(new Long(2), source.V().count().next());
+ assertEquals(new Long(2), sourceBAB.V().count().next());
}
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
public void shouldThrowExceptionOnVInDifferentPartition() {
- final GraphTraversalSource source = create();
- final Vertex vA = source.addV("any", "a").next();
- assertEquals(vA.id(), source.V(vA.id()).id().next());
+ final PartitionStrategy partitionStrategyAA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").addReadPartition("A").create();
+ final GraphTraversalSource sourceAA = create(partitionStrategyAA);
- partitionStrategy.clearReadPartitions();
+ final PartitionStrategy partitionStrategyA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").create();
+ final GraphTraversalSource sourceA = create(partitionStrategyA);
+
+ final Vertex vA = sourceAA.addV("any", "a").next();
+ assertEquals(vA.id(), sourceAA.V(vA.id()).id().next());
try {
- g.V(vA.id());
+ sourceA.V(vA.id());
} catch (Exception ex) {
final Exception expected = Graph.Exceptions.elementNotFound(Vertex.class, vA.id());
assertEquals(expected.getClass(), ex.getClass());
@@ -122,15 +139,20 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
public void shouldThrowExceptionOnEInDifferentPartition() {
- final GraphTraversalSource source = create();
- final Vertex vA = source.addV("any", "a").next();
- final Edge e = source.V(vA.id()).addOutE("knows", vA).next();
- assertEquals(e.id(), g.E(e.id()).id().next());
+ final PartitionStrategy partitionStrategyAA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").addReadPartition("A").create();
+ final GraphTraversalSource sourceAA = create(partitionStrategyAA);
- partitionStrategy.clearReadPartitions();
+ final PartitionStrategy partitionStrategyA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").create();
+ final GraphTraversalSource sourceA = create(partitionStrategyA);
+
+ final Vertex vA = sourceAA.addV("any", "a").next();
+ final Edge e = sourceAA.V(vA.id()).addOutE("knows", vA).next();
+ assertEquals(e.id(), g.E(e.id()).id().next());
try {
- g.E(e.id());
+ sourceA.E(e.id());
} catch (Exception ex) {
final Exception expected = Graph.Exceptions.elementNotFound(Edge.class, e.id());
assertEquals(expected.getClass(), ex.getClass());
@@ -141,77 +163,93 @@ public class PartitionStrategyProcessTest extends AbstractGremlinProcessTest {
@Test
@FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
public void shouldWriteToMultiplePartitions() {
- final GraphTraversalSource source = create();
- final Vertex vA = source.addV("any", "a").next();
- final Vertex vAA = source.addV("any", "aa").next();
- final Edge eAtoAA = source.V(vA.id()).addOutE("a->a", vAA).next();
-
- partitionStrategy.setWritePartition("B");
- final Vertex vB = source.addV("any", "b").next();
- source.V(vA.id()).addOutE("a->b", vB).next();
-
- partitionStrategy.addReadPartition("B");
- partitionStrategy.setWritePartition("C");
- final Vertex vC = source.addV("any", "c").next();
- final Edge eBtovC = source.V(vB.id()).addOutE("b->c", vC).next();
- final Edge eAtovC = source.V(vA.id()).addOutE("a->c", vC).next();
-
- partitionStrategy.clearReadPartitions();
- assertEquals(0, IteratorUtils.count(source.V()));
- assertEquals(0, IteratorUtils.count(source.E()));
-
- partitionStrategy.addReadPartition("A");
- assertEquals(new Long(2), source.V().count().next());
- assertEquals(new Long(1), source.E().count().next());
- assertEquals(new Long(1), source.V(vA.id()).outE().count().next());
- assertEquals(eAtoAA.id(), source.V(vA.id()).outE().next().id());
- assertEquals(new Long(1), source.V(vA.id()).out().count().next());
- assertEquals(vAA.id(), source.V(vA.id()).out().next().id());
-
- final Vertex vA1 = source.V(vA.id()).next();
- assertEquals(new Long(1), source.V(vA1).outE().count().next());
- assertEquals(eAtoAA.id(), source.V(vA1).outE().next().id());
- assertEquals(new Long(1), source.V(vA1).out().count().next());
- assertEquals(vAA.id(), source.V(vA1).out().next().id());
-
- partitionStrategy.addReadPartition("B");
- assertEquals(new Long(3), source.V().count().next());
- assertEquals(new Long(2), source.E().count().next());
-
- partitionStrategy.addReadPartition("C");
- assertEquals(new Long(4), source.V().count().next());
- assertEquals(new Long(4), source.E().count().next());
-
- partitionStrategy.removeReadPartition("A");
- partitionStrategy.removeReadPartition("B");
-
- assertEquals(1, IteratorUtils.count(source.V()));
+ final PartitionStrategy partitionStrategyAA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("A").addReadPartition("A").create();
+ final GraphTraversalSource sourceAA = create(partitionStrategyAA);
+
+ final PartitionStrategy partitionStrategyBA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("B").addReadPartition("A").create();
+ final GraphTraversalSource sourceBA = create(partitionStrategyBA);
+
+ final PartitionStrategy partitionStrategyCAB = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("C").addReadPartition("A").addReadPartition("B").create();
+ final GraphTraversalSource sourceCAB = create(partitionStrategyCAB);
+
+ final PartitionStrategy partitionStrategyC = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("C").create();
+ final GraphTraversalSource sourceC = create(partitionStrategyC);
+
+ final PartitionStrategy partitionStrategyCA = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("C").addReadPartition("A").create();
+ final GraphTraversalSource sourceCA = create(partitionStrategyCA);
+
+ final PartitionStrategy partitionStrategyCABC = PartitionStrategy.build()
+ .partitionKey(partition)
+ .writePartition("C")
+ .addReadPartition("A")
+ .addReadPartition("B")
+ .addReadPartition("C").create();
+ final GraphTraversalSource sourceCABC = create(partitionStrategyCABC);
+
+ final PartitionStrategy partitionStrategyCC = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("C").addReadPartition("C").create();
+ final GraphTraversalSource sourceCC = create(partitionStrategyCC);
+
+ final PartitionStrategy partitionStrategyCBC = PartitionStrategy.build()
+ .partitionKey(partition).writePartition("C").addReadPartition("C").addReadPartition("B").create();
+ final GraphTraversalSource sourceCBC = create(partitionStrategyCBC);
+
+ final Vertex vA = sourceAA.addV("any", "a").next();
+ final Vertex vAA = sourceAA.addV("any", "aa").next();
+ final Edge eAtoAA = sourceAA.V(vA.id()).addOutE("a->a", vAA).next();
+
+ final Vertex vB = sourceBA.addV("any", "b").next();
+ sourceBA.V(vA.id()).addOutE("a->b", vB).next();
+
+ final Vertex vC = sourceCAB.addV("any", "c").next();
+ final Edge eBtovC = sourceCAB.V(vB.id()).addOutE("b->c", vC).next();
+ final Edge eAtovC = sourceCAB.V(vA.id()).addOutE("a->c", vC).next();
+
+ assertEquals(0, IteratorUtils.count(sourceC.V()));
+ assertEquals(0, IteratorUtils.count(sourceC.E()));
+
+ assertEquals(new Long(2), sourceCA.V().count().next());
+ assertEquals(new Long(1), sourceCA.E().count().next());
+ assertEquals(new Long(1), sourceCA.V(vA.id()).outE().count().next());
+ assertEquals(eAtoAA.id(), sourceCA.V(vA.id()).outE().next().id());
+ assertEquals(new Long(1), sourceCA.V(vA.id()).out().count().next());
+ assertEquals(vAA.id(), sourceCA.V(vA.id()).out().next().id());
+
+ final Vertex vA1 = sourceCA.V(vA.id()).next();
+ assertEquals(new Long(1), sourceCA.V(vA1).outE().count().next());
+ assertEquals(eAtoAA.id(), sourceCA.V(vA1).outE().next().id());
+ assertEquals(new Long(1), sourceCA.V(vA1).out().count().next());
+ assertEquals(vAA.id(), sourceCA.V(vA1).out().next().id());
+
+ assertEquals(new Long(3), sourceCAB.V().count().next());
+ assertEquals(new Long(2), sourceCAB.E().count().next());
+
+ assertEquals(new Long(4), sourceCABC.V().count().next());
+ assertEquals(new Long(4), sourceCABC.E().count().next());
+
+ assertEquals(1, IteratorUtils.count(sourceCC.V()));
// two edges are in the "C" partition, but one each of their incident vertices are not
- assertEquals(2, IteratorUtils.count(source.E()));
+ assertEquals(2, IteratorUtils.count(sourceCC.E()));
// two edges are in the "C" partition, but one each of their incident vertices are not
- assertEquals(new Long(2), source.V(vC.id()).inE().count().next());
- assertEquals(new Long(0), source.V(vC.id()).in().count().next());
-
- partitionStrategy.addReadPartition("B");
+ assertEquals(new Long(2), sourceCC.V(vC.id()).inE().count().next());
+ assertEquals(new Long(0), sourceCC.V(vC.id()).in().count().next());
// excluded vertices; vA is not in {B,C}
- assertEquals(new Long(2), source.V(vC.id()).inE().count().next());
- assertEquals(new Long(1), source.V(vC.id()).in().count().next());
- assertEquals(vC.id(), source.E(eBtovC.id()).inV().id().next());
- assertEquals(vB.id(), source.E(eBtovC.id()).outV().id().next());
- assertEquals(vC.id(), source.E(eAtovC.id()).inV().id().next());
- assertFalse(source.E(eAtovC.id()).outV().hasNext());
- }
-
- private GraphTraversalSource create() {
- resetPartitionStrategy();
- return graphProvider.traversal(graph, partitionStrategy);
+ assertEquals(new Long(2), sourceCBC.V(vC.id()).inE().count().next());
+ assertEquals(new Long(1), sourceCBC.V(vC.id()).in().count().next());
+ assertEquals(vC.id(), sourceCBC.E(eBtovC.id()).inV().id().next());
+ assertEquals(vB.id(), sourceCBC.E(eBtovC.id()).outV().id().next());
+ assertEquals(vC.id(), sourceCBC.E(eAtovC.id()).inV().id().next());
+ assertFalse(sourceCBC.E(eAtovC.id()).outV().hasNext());
}
- private void resetPartitionStrategy() {
- partitionStrategy.clearReadPartitions();
- partitionStrategy.setWritePartition("A");
- partitionStrategy.addReadPartition("A");
+ private GraphTraversalSource create(final PartitionStrategy strategy) {
+ return graphProvider.traversal(graph, strategy);
}
}
[2/2] incubator-tinkerpop git commit: Merge remote-tracking branch
'origin/master'
Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master'
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/c53d61e1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/c53d61e1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/c53d61e1
Branch: refs/heads/master
Commit: c53d61e1b7a9985db27cf06a34744237eccd1061
Parents: a9e0d91 e2d3eee
Author: Stephen Mallette <sp...@apache.org>
Authored: Wed Mar 18 10:37:27 2015 -0400
Committer: Stephen Mallette <sp...@apache.org>
Committed: Wed Mar 18 10:37:27 2015 -0400
----------------------------------------------------------------------
.../traversal/TraversalVertexProgram.java | 20 +++---
.../computer/util/VertexProgramPool.java | 71 ++++++++++++++++++++
.../graph/traversal/step/map/TreeStep.java | 4 +-
.../gremlin/structure/io/gryo/GryoPool.java | 24 +++----
.../structure/util/detached/DetachedEdge.java | 2 +-
.../util/detached/DetachedElement.java | 8 ++-
.../structure/util/detached/DetachedVertex.java | 36 +++++-----
.../traversal/step/sideEffect/TreeTest.java | 2 +-
.../computer/giraph/GiraphComputeVertex.java | 7 +-
.../computer/giraph/GiraphGraphComputer.java | 2 +-
.../computer/giraph/GiraphMessenger.java | 2 +-
.../computer/giraph/GiraphWorkerContext.java | 23 ++++---
.../gremlin/hadoop/HadoopGraphProvider.java | 11 ++-
13 files changed, 144 insertions(+), 68 deletions(-)
----------------------------------------------------------------------