tinkerpop git commit: the plot thickens with BulkSet and Tree needing special handling during detachment. @spmallette was right about the rabbit hole. Fortuantely, we have lots of test cases that fail
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1701 12de6fbf4 -> c01b27ea8 the plot thickens with BulkSet and Tree needing special handling during detachment. @spmallette was right about the rabbit hole. Fortuantely, we have lots of test cases that failed cause of not handling these collections correctly. So that is a win. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c01b27ea Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c01b27ea Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c01b27ea Branch: refs/heads/TINKERPOP-1701 Commit: c01b27ea870b15464a263254248b177a8bd0d9d4 Parents: 12de6fb Author: Marko A. RodriguezAuthored: Tue Jun 27 14:56:48 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 14:56:48 2017 -0600 -- .../gremlin/structure/util/detached/DetachedFactory.java | 10 +- .../structure/util/reference/ReferenceFactory.java| 10 +- 2 files changed, 18 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c01b27ea/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java index 775e5c6..710511c 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java @@ -19,6 +19,8 @@ package org.apache.tinkerpop.gremlin.structure.util.detached; import org.apache.tinkerpop.gremlin.process.traversal.Path; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree; import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Property; @@ -86,6 +88,12 @@ public class DetachedFactory { list.add(DetachedFactory.detach(item, withProperties)); } return (D) list; +} else if (object instanceof BulkSet) { +final BulkSet set = new BulkSet(); +for (Map.Entry
tinkerpop git commit: add test cases to HaltedTraversaerStrategyTest to verify property collection handling during detachment.
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1701 7d54b1814 -> 12de6fbf4 add test cases to HaltedTraversaerStrategyTest to verify property collection handling during detachment. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/12de6fbf Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/12de6fbf Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/12de6fbf Branch: refs/heads/TINKERPOP-1701 Commit: 12de6fbf49028072ffb0933776c516e1bf1e9763 Parents: 7d54b18 Author: Marko A. RodriguezAuthored: Tue Jun 27 14:29:09 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 14:29:09 2017 -0600 -- .../strategy/decoration/HaltedTraverserStrategyTest.java | 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/12de6fbf/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java -- diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java index 3999433..288b4b4 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java @@ -76,6 +76,8 @@ public class HaltedTraverserStrategyTest { g.V().out().out().path().forEachRemaining(path -> assertEquals(DetachedPath.class, path.getClass())); g.V().out().pageRank().forEachRemaining(vertex -> assertEquals(DetachedVertex.class, vertex.getClass())); g.V().out().pageRank().out().forEachRemaining(vertex -> assertEquals(DetachedVertex.class, vertex.getClass())); +// should handle nested collections +g.V().out().fold().next().forEach(vertex -> assertEquals(DetachedVertex.class, vertex.getClass())); } @Test @@ -104,6 +106,8 @@ public class HaltedTraverserStrategyTest { g.V().out().out().path().forEachRemaining(path -> assertEquals(ReferencePath.class, path.getClass())); g.V().out().pageRank().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass())); g.V().out().pageRank().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass())); +// should handle nested collections +g.V().out().fold().next().forEach(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass())); } }
tinkerpop git commit: doh. needed to tweak the ReferenceFactory test as properties don't come over.
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1701 d16d0df5c -> 7d54b1814 doh. needed to tweak the ReferenceFactory test as properties don't come over. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7d54b181 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7d54b181 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7d54b181 Branch: refs/heads/TINKERPOP-1701 Commit: 7d54b1814937da8693b8d45498b2f56b941a9caf Parents: d16d0df Author: Marko A. RodriguezAuthored: Tue Jun 27 14:23:12 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 14:23:12 2017 -0600 -- .../structure/util/reference/ReferenceVertexTest.java | 9 ++--- 1 file changed, 2 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7d54b181/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexTest.java index 4f7f1da..35c31c6 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexTest.java @@ -189,38 +189,33 @@ public class ReferenceVertexTest extends AbstractGremlinTest { final List vertices = ReferenceFactory.detach(g.V().hasLabel("software").fold().next()); for (final Vertex v : vertices) { assertTrue(v instanceof ReferenceVertex); -assertEquals("java", v.value("lang")); } // double nested list final List lists = ReferenceFactory.detach(g.V().hasLabel("software").fold().fold().next()); for (final Vertex v : lists.get(0)) { assertTrue(v instanceof ReferenceVertex); -assertEquals("java", v.value("lang")); } // double nested list to set final Set
set = ReferenceFactory.detach(g.V().hasLabel("software").fold().toSet()); for (final Vertex v : set.iterator().next()) { assertTrue(v instanceof ReferenceVertex); -assertEquals("java", v.value("lang")); } // map keys and values Map
map = ReferenceFactory.detach(g.V().hasLabel("software").group().by().by(inE().fold()).next()); for (final Map.Entry entry : map.entrySet()) { assertTrue(entry.getKey() instanceof ReferenceVertex); -assertEquals("java", entry.getKey().value("lang")); for (final Edge edge : entry.getValue()) { assertTrue(edge instanceof ReferenceEdge); -assertTrue(edge.property("weight").isPresent()); +assertFalse(edge.property("weight").isPresent()); } } // map keys and values as sideEffect map = ReferenceFactory.detach(g.V().hasLabel("software").group("m").by().by(inE().fold()).identity().cap("m").next()); for (final Map.Entry entry : map.entrySet()) { assertTrue(entry.getKey() instanceof ReferenceVertex); -assertEquals("java", entry.getKey().value("lang")); for (final Edge edge : entry.getValue()) { assertTrue(edge instanceof ReferenceEdge); -assertTrue(edge.property("weight").isPresent()); +assertFalse(edge.property("weight").isPresent()); } } }
tinkerpop git commit: added test cases that verify that nested collection detachment works for Lists, Sets, and Maps (and any arbitrary nest of those collections within themselves).
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1701 6e2ebb52f -> d16d0df5c added test cases that verify that nested collection detachment works for Lists, Sets, and Maps (and any arbitrary nest of those collections within themselves). Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d16d0df5 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d16d0df5 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d16d0df5 Branch: refs/heads/TINKERPOP-1701 Commit: d16d0df5c64f6da04c6a11c9403273f30eb264d4 Parents: 6e2ebb5 Author: Marko A. RodriguezAuthored: Tue Jun 27 14:14:22 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 14:14:22 2017 -0600 -- .../util/detached/DetachedVertexTest.java | 49 ++ .../util/reference/ReferenceVertexTest.java | 53 2 files changed, 102 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d16d0df5/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java index 582b9a5..93cb46f 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertexTest.java @@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.AbstractGremlinTest; import org.apache.tinkerpop.gremlin.FeatureRequirement; import org.apache.tinkerpop.gremlin.FeatureRequirementSet; import org.apache.tinkerpop.gremlin.LoadGraphWith; +import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; @@ -39,6 +40,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; +import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.inE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; @@ -325,4 +327,51 @@ public class DetachedVertexTest extends AbstractGremlinTest { }); assertEquals(1, dogTimes.get()); } + +@Test +@LoadGraphWith(LoadGraphWith.GraphData.MODERN) +@FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY) +public void shouldDetachCollections() { +// single element +final Vertex vertex = DetachedFactory.detach(g.V().has("name", "marko").next(), true); +assertTrue(vertex instanceof DetachedVertex); +// list nest +final List vertices = DetachedFactory.detach(g.V().hasLabel("software").fold().next(), true); +for (final Vertex v : vertices) { +assertTrue(v instanceof DetachedVertex); +assertEquals("java", v.value("lang")); +} +// double nested list +final List lists = DetachedFactory.detach(g.V().hasLabel("software").fold().fold().next(), true); +for (final Vertex v : lists.get(0)) { +assertTrue(v instanceof DetachedVertex); +assertEquals("java", v.value("lang")); +} +// double nested list to set +final Set
set = DetachedFactory.detach(g.V().hasLabel("software").fold().toSet(), true); +for (final Vertex v : set.iterator().next()) { +assertTrue(v instanceof DetachedVertex); +assertEquals("java", v.value("lang")); +} +// map keys and values +Map
map = DetachedFactory.detach(g.V().hasLabel("software").group().by().by(inE().fold()).next(), true); +for (final Map.Entry entry : map.entrySet()) { +assertTrue(entry.getKey() instanceof DetachedVertex); +assertEquals("java", entry.getKey().value("lang")); +for (final Edge edge : entry.getValue()) { +assertTrue(edge instanceof DetachedEdge); +assertTrue(edge.property("weight").isPresent()); +} +} +// map keys and values as sideEffect +map = DetachedFactory.detach(g.V().hasLabel("software").group("m").by().by(inE().fold()).identity().cap("m").next(), true); +for (final Map.Entry entry : map.entrySet()) { +assertTrue(entry.getKey() instanceof DetachedVertex); +
tinkerpop git commit: added colleciton handling to XXXFactory.detach(). This will ensure that collection nested graph elements get detached accordingly.
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1701 [created] 6e2ebb52f added colleciton handling to XXXFactory.detach(). This will ensure that collection nested graph elements get detached accordingly. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6e2ebb52 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6e2ebb52 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6e2ebb52 Branch: refs/heads/TINKERPOP-1701 Commit: 6e2ebb52fdaa477e93a98d6c7c28b4ce5ed9bdb5 Parents: 9436585 Author: Marko A. RodriguezAuthored: Tue Jun 27 13:51:47 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 13:51:47 2017 -0600 -- .../util/detached/DetachedFactory.java | 27 .../util/reference/ReferenceFactory.java| 27 2 files changed, 54 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6e2ebb52/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java index 10265f8..775e5c6 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedFactory.java @@ -25,6 +25,15 @@ import org.apache.tinkerpop.gremlin.structure.Property; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ @@ -71,6 +80,24 @@ public class DetachedFactory { return (D) DetachedFactory.detach((Property) object); } else if (object instanceof Path) { return (D) DetachedFactory.detach((Path) object, withProperties); +} else if (object instanceof List) { +final List list = new ArrayList(); +for (final Object item : (List) object) { +list.add(DetachedFactory.detach(item, withProperties)); +} +return (D) list; +} else if (object instanceof Set) { +final Set set = object instanceof LinkedHashSet ? new LinkedHashSet() : new HashSet(); +for (final Object item : (Set) object) { +set.add(DetachedFactory.detach(item, withProperties)); +} +return (D) set; +} else if (object instanceof Map) { +final Map map = object instanceof LinkedHashMap ? new LinkedHashMap() : new HashMap(); +for (final Map.Entry entry : ((Map ) object).entrySet()) { +map.put(DetachedFactory.detach(entry.getKey(), withProperties), DetachedFactory.detach(entry.getValue(), withProperties)); +} +return (D) map; } else { return (D) object; } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6e2ebb52/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java index 48b6de3..749e424 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceFactory.java @@ -25,6 +25,15 @@ import org.apache.tinkerpop.gremlin.structure.Property; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ @@ -71,6 +80,24 @@ public class ReferenceFactory { return (D) ReferenceFactory.detach((Property) object); } else if (object instanceof Path) {
[2/8] tinkerpop git commit: add the regression test
add the regression test Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/99679a03 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/99679a03 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/99679a03 Branch: refs/heads/master Commit: 99679a037db3e86112471a40cd454114231852b6 Parents: 28c514d Author: SheldonAuthored: Mon Jun 19 10:35:16 2017 +0100 Committer: Sheldon Committed: Mon Jun 19 11:20:37 2017 +0100 -- .../process/computer/GraphComputerTest.java | 93 1 file changed, 93 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99679a03/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 1af0830..02ac5d4 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@ -24,11 +24,14 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith; import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest; import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Direction; +import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; +import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; import org.junit.Test; import java.util.ArrayList; @@ -38,9 +41,11 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL; @@ -1463,6 +1468,94 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { public void storeState(final Configuration configuration) { VertexProgram.super.storeState(configuration); } +} + +/ +@Test +public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { +Vertex a = graph.addVertex("a"); +Vertex b = graph.addVertex("b"); +Vertex c = graph.addVertex("c"); +a.addEdge("edge", b); +b.addEdge("edge", c); + +// Simple graph: +// a -> b -> c + +// Execute a traversal program that sends an incoming message of "2" and an outgoing message of "1" from "b" +// then each vertex sums any received messages +ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); + +// We expect the results to be {a=2, b=0, c=1}. Instead it is {a=3, b=0, c=3} +assertEquals((Long) result.graph().traversal().V().hasLabel("a").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(2L)); +assertEquals((Long) result.graph().traversal().V().hasLabel("b").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(0L)); +assertEquals((Long) result.graph().traversal().V().hasLabel("c").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(1L)); +} + +public static class MultiScopeVertexProgram implements VertexProgram { + +private final MessageScope.Local countMessageScopeIn = MessageScope.Local.of(__::inE); +private final MessageScope.Local countMessageScopeOut = MessageScope.Local.of(__::outE); + +private static final String MEMORY_KEY = "count"; + +private static final Set COMPUTE_KEYS = Collections.singleton(MEMORY_KEY); + +@Override +public void setup(final Memory memory) {} + +@Override +public GraphComputer.Persist getPreferredPersist() { +return GraphComputer.Persist.VERTEX_PROPERTIES; +} + +@Override +public Set getElementComputeKeys() { +return COMPUTE_KEYS; +} + +
[1/8] tinkerpop git commit: bugfix
Repository: tinkerpop Updated Branches: refs/heads/master 55af79f78 -> ea20ca192 bugfix Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/28c514da Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/28c514da Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/28c514da Branch: refs/heads/master Commit: 28c514da9065683ed90ea6aabc66ffdcbab99c11 Parents: b1c0723 Author: SheldonAuthored: Thu Jun 15 18:00:32 2017 +0100 Committer: Sheldon Committed: Mon Jun 19 11:20:20 2017 +0100 -- .../process/computer/TinkerMessageBoard.java| 4 ++-- .../process/computer/TinkerMessenger.java | 22 +--- 2 files changed, 16 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/28c514da/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java -- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java index b217801..422ab86 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java @@ -32,8 +32,8 @@ import java.util.concurrent.ConcurrentHashMap; */ final class TinkerMessageBoard { -public Map sendMessages = new ConcurrentHashMap<>(); -public Map receiveMessages = new ConcurrentHashMap<>(); +public Map > sendMessages = new ConcurrentHashMap<>(); +public Map > receiveMessages = new ConcurrentHashMap<>(); public Set previousMessageScopes = new HashSet<>(); public Set currentMessageScopes = new HashSet<>(); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/28c514da/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java -- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java index 3298aff..d3f2de5 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java @@ -37,6 +37,7 @@ import java.util.Optional; import java.util.Queue; import java.util.Spliterator; import java.util.Spliterators; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -59,14 +60,15 @@ public final class TinkerMessenger implements Messenger { @Override public Iterator receiveMessages() { final MultiIterator multiIterator = new MultiIterator<>(); -for (final MessageScope messageScope : this.messageBoard.previousMessageScopes) { +for (final MessageScope messageScope : this.messageBoard.receiveMessages.keySet()) { +//for (final MessageScope messageScope : this.messageBoard.previousMessageScopes) { if (messageScope instanceof MessageScope.Local) { final MessageScope.Local localMessageScope = (MessageScope.Local) messageScope; final Traversal.Admin incidentTraversal = TinkerMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), this.vertex); final Direction direction = TinkerMessenger.getDirection(incidentTraversal); final Edge[] edge = new Edge[1]; // simulates storage side-effects available in Gremlin, but not Java8 streams multiIterator.addIterator(StreamSupport.stream(Spliterators.spliteratorUnknownSize(VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false) -.map(e -> this.messageBoard.receiveMessages.get((edge[0] = e).vertices(direction).next())) +.map(e -> this.messageBoard.receiveMessages.get(messageScope).get((edge[0] = e).vertices(direction).next())) .filter(q -> null != q) .flatMap(Queue::stream)
[3/8] tinkerpop git commit: Merge branch 'tp31' of https://github.com/sheldonkhall/tinkerpop into tp31
Merge branch 'tp31' of https://github.com/sheldonkhall/tinkerpop into tp31 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d67b88b2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d67b88b2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d67b88b2 Branch: refs/heads/master Commit: d67b88b2bee75c68d3c5756a8dbf963f9de2df39 Parents: 3d50f5c 99679a0 Author: Marko A. RodriguezAuthored: Tue Jun 27 07:53:22 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:53:22 2017 -0600 -- .../process/computer/GraphComputerTest.java | 93 .../process/computer/TinkerMessageBoard.java| 4 +- .../process/computer/TinkerMessenger.java | 22 +++-- 3 files changed, 109 insertions(+), 10 deletions(-) --
[8/8] tinkerpop git commit: Merge branch 'tp32'
Merge branch 'tp32' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ea20ca19 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ea20ca19 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ea20ca19 Branch: refs/heads/master Commit: ea20ca1926b17bca08517ed27793598805341715 Parents: 55af79f 9436585 Author: Marko A. RodriguezAuthored: Tue Jun 27 10:04:50 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 10:04:50 2017 -0600 -- CHANGELOG.asciidoc | 2 + .../process/computer/GraphComputerTest.java | 75 ++-- .../process/computer/TinkerMessageBoard.java| 4 +- .../process/computer/TinkerMessenger.java | 22 +++--- 4 files changed, 86 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ea20ca19/CHANGELOG.asciidoc -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ea20ca19/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java --
[6/8] tinkerpop git commit: tweaked the MessageScope bug fix test to use MODERN so it works with Spark and Giraph. Simple tweak to test data, not semantics. CTR.
tweaked the MessageScope bug fix test to use MODERN so it works with Spark and Giraph. Simple tweak to test data, not semantics. CTR. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e7f5ef71 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e7f5ef71 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e7f5ef71 Branch: refs/heads/master Commit: e7f5ef711b1edbd130f23610d993e13d44d5df50 Parents: 3b8c628 Author: Marko A. RodriguezAuthored: Tue Jun 27 09:55:35 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 09:55:35 2017 -0600 -- .../process/computer/GraphComputerTest.java | 42 +--- 1 file changed, 10 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e7f5ef71/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 02ac5d4..e2acd5e 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@ -26,7 +26,6 @@ import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; @@ -41,7 +40,6 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; @@ -1472,27 +1470,16 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { / @Test +@LoadGraphWith(MODERN) public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { -Vertex a = graph.addVertex("a"); -Vertex b = graph.addVertex("b"); -Vertex c = graph.addVertex("c"); -a.addEdge("edge", b); -b.addEdge("edge", c); - -// Simple graph: -// a -> b -> c - -// Execute a traversal program that sends an incoming message of "2" and an outgoing message of "1" from "b" -// then each vertex sums any received messages -ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); - -// We expect the results to be {a=2, b=0, c=1}. Instead it is {a=3, b=0, c=3} -assertEquals((Long) result.graph().traversal().V().hasLabel("a").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(2L)); -assertEquals((Long) result.graph().traversal().V().hasLabel("b").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(0L)); -assertEquals((Long) result.graph().traversal().V().hasLabel("c").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(1L)); +final ComputerResult result = graph.compute(graphComputerClass.get()).program(new MultiScopeVertexProgram()).submit().get(); +assertEquals(result.graph().traversal().V().has("name", "josh").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 0L); +assertEquals(result.graph().traversal().V().has("name", "lop").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); +assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); +assertEquals(result.graph().traversal().V().has("name", "marko").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 2L); } -public static class MultiScopeVertexProgram implements VertexProgram { +public static class MultiScopeVertexProgram extends StaticVertexProgram { private final MessageScope.Local countMessageScopeIn = MessageScope.Local.of(__::inE); private final MessageScope.Local countMessageScopeOut = MessageScope.Local.of(__::outE); @@ -1502,7 +1489,8 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { private static final Set COMPUTE_KEYS =
[7/8] tinkerpop git commit: Merge branch 'tp31' into tp32
Merge branch 'tp31' into tp32 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/94365853 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/94365853 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/94365853 Branch: refs/heads/master Commit: 943658531ba8a3bb8050c169ad2180f81cda96db Parents: f1aed80 e7f5ef7 Author: Marko A. RodriguezAuthored: Tue Jun 27 10:04:37 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 10:04:37 2017 -0600 -- .../tinkerpop/gremlin/process/computer/GraphComputerTest.java | 6 +- 1 file changed, 1 insertion(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/94365853/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index e4b40e8,e2acd5e..380887b --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@@ -73,9 -52,7 +73,8 @@@ import static org.junit.Assert.assertEq import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.junit.Assume.assumeNoException; - /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ @@@ -1591,7 -1472,7 +1590,7 @@@ public class GraphComputerTest extends @Test @LoadGraphWith(MODERN) public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { - final ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); -final ComputerResult result = graph.compute(graphComputerClass.get()).program(new MultiScopeVertexProgram()).submit().get(); ++final ComputerResult result = graphProvider.getGraphComputer(graph).program(new MultiScopeVertexProgram()).submit().get(); assertEquals(result.graph().traversal().V().has("name", "josh").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 0L); assertEquals(result.graph().traversal().V().has("name", "lop").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); @@@ -1653,968 -1535,6 +1652,965 @@@ public GraphComputer.ResultGraph getPreferredResultGraph() { return GraphComputer.ResultGraph.NEW; } - +} + +/ + +@Test +@LoadGraphWith(MODERN) +public void shouldSupportGraphFilter() throws Exception { +// if the graph computer does not support graph filter, then make sure its exception handling is correct +if (!graphProvider.getGraphComputer(graph).features().supportsGraphFilter()) { +try { + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")); +fail("Should throw an unsupported operation exception"); +} catch (final UnsupportedOperationException e) { + assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage()); +} +try { + graphProvider.getGraphComputer(graph).edges(__.outE().limit(10)); +fail("Should throw an unsupported operation exception"); +} catch (final UnsupportedOperationException e) { + assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage()); +} +return; +} +/// VERTEX PROGRAM + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).program(new VertexProgramM(VertexProgramM.SOFTWARE_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).program(new VertexProgramM(VertexProgramM.PEOPLE_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.KNOWS_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows").has("weight", P.gt(0.5f))).program(new
[5/8] tinkerpop git commit: fixed up the MultiScope test to use MODERN so that it works with Giraph and Spark. Will back tweak to tp31/.
fixed up the MultiScope test to use MODERN so that it works with Giraph and Spark. Will back tweak to tp31/. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f1aed80b Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f1aed80b Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f1aed80b Branch: refs/heads/master Commit: f1aed80b056c2244ce8b23ab077e8b10ee6939d9 Parents: 5ac61b7 3b8c628 Author: Marko A. RodriguezAuthored: Tue Jun 27 09:50:15 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 09:50:15 2017 -0600 -- CHANGELOG.asciidoc | 2 + .../process/computer/GraphComputerTest.java | 75 ++-- .../process/computer/TinkerMessageBoard.java| 4 +- .../process/computer/TinkerMessenger.java | 22 +++--- 4 files changed, 88 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f1aed80b/CHANGELOG.asciidoc -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f1aed80b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 5c66673,02ac5d4..e4b40e8 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@@ -24,35 -22,18 +24,32 @@@ import org.apache.commons.configuration import org.apache.tinkerpop.gremlin.ExceptionCoverage; import org.apache.tinkerpop.gremlin.LoadGraphWith; import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest; +import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram; +import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram; +import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram; +import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder; import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; +import org.apache.tinkerpop.gremlin.process.traversal.Operator; +import org.apache.tinkerpop.gremlin.process.traversal.P; - import org.apache.tinkerpop.gremlin.process.traversal.Path; +import org.apache.tinkerpop.gremlin.process.traversal.Traversal; +import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyPath; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException; +import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; +import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet; import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Element; +import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Graph; +import org.apache.tinkerpop.gremlin.structure.Property; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; +import org.javatuples.Pair; - import org.junit.Ignore; import org.junit.Test; - import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@@ -70,15 -50,11 +68,14 @@@ import java.util.concurrent.Future import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN; +import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE; - import static org.apache.tinkerpop.gremlin.structure.T.id; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.junit.Assume.assumeNoException; + + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ @@@ -1588,567 -1468,92 +1585,635 @@@ public class GraphComputerTest extends public void storeState(final Configuration configuration) {
[1/2] tinkerpop git commit: tweaked the MessageScope bug fix test to use MODERN so it works with Spark and Giraph. Simple tweak to test data, not semantics. CTR.
Repository: tinkerpop Updated Branches: refs/heads/tp32 f1aed80b0 -> 943658531 tweaked the MessageScope bug fix test to use MODERN so it works with Spark and Giraph. Simple tweak to test data, not semantics. CTR. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e7f5ef71 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e7f5ef71 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e7f5ef71 Branch: refs/heads/tp32 Commit: e7f5ef711b1edbd130f23610d993e13d44d5df50 Parents: 3b8c628 Author: Marko A. RodriguezAuthored: Tue Jun 27 09:55:35 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 09:55:35 2017 -0600 -- .../process/computer/GraphComputerTest.java | 42 +--- 1 file changed, 10 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e7f5ef71/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 02ac5d4..e2acd5e 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@ -26,7 +26,6 @@ import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; @@ -41,7 +40,6 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; @@ -1472,27 +1470,16 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { / @Test +@LoadGraphWith(MODERN) public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { -Vertex a = graph.addVertex("a"); -Vertex b = graph.addVertex("b"); -Vertex c = graph.addVertex("c"); -a.addEdge("edge", b); -b.addEdge("edge", c); - -// Simple graph: -// a -> b -> c - -// Execute a traversal program that sends an incoming message of "2" and an outgoing message of "1" from "b" -// then each vertex sums any received messages -ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); - -// We expect the results to be {a=2, b=0, c=1}. Instead it is {a=3, b=0, c=3} -assertEquals((Long) result.graph().traversal().V().hasLabel("a").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(2L)); -assertEquals((Long) result.graph().traversal().V().hasLabel("b").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(0L)); -assertEquals((Long) result.graph().traversal().V().hasLabel("c").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(1L)); +final ComputerResult result = graph.compute(graphComputerClass.get()).program(new MultiScopeVertexProgram()).submit().get(); +assertEquals(result.graph().traversal().V().has("name", "josh").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 0L); +assertEquals(result.graph().traversal().V().has("name", "lop").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); +assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); +assertEquals(result.graph().traversal().V().has("name", "marko").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 2L); } -public static class MultiScopeVertexProgram implements VertexProgram { +public static class MultiScopeVertexProgram extends StaticVertexProgram { private final MessageScope.Local countMessageScopeIn = MessageScope.Local.of(__::inE); private final MessageScope.Local countMessageScopeOut = MessageScope.Local.of(__::outE); @@ -1502,7 +1489,8 @@ public class GraphComputerTest extends
[2/2] tinkerpop git commit: Merge branch 'tp31' into tp32
Merge branch 'tp31' into tp32 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/94365853 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/94365853 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/94365853 Branch: refs/heads/tp32 Commit: 943658531ba8a3bb8050c169ad2180f81cda96db Parents: f1aed80 e7f5ef7 Author: Marko A. RodriguezAuthored: Tue Jun 27 10:04:37 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 10:04:37 2017 -0600 -- .../tinkerpop/gremlin/process/computer/GraphComputerTest.java | 6 +- 1 file changed, 1 insertion(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/94365853/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index e4b40e8,e2acd5e..380887b --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@@ -73,9 -52,7 +73,8 @@@ import static org.junit.Assert.assertEq import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.junit.Assume.assumeNoException; - /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ @@@ -1591,7 -1472,7 +1590,7 @@@ public class GraphComputerTest extends @Test @LoadGraphWith(MODERN) public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { - final ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); -final ComputerResult result = graph.compute(graphComputerClass.get()).program(new MultiScopeVertexProgram()).submit().get(); ++final ComputerResult result = graphProvider.getGraphComputer(graph).program(new MultiScopeVertexProgram()).submit().get(); assertEquals(result.graph().traversal().V().has("name", "josh").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 0L); assertEquals(result.graph().traversal().V().has("name", "lop").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); @@@ -1653,968 -1535,6 +1652,965 @@@ public GraphComputer.ResultGraph getPreferredResultGraph() { return GraphComputer.ResultGraph.NEW; } - +} + +/ + +@Test +@LoadGraphWith(MODERN) +public void shouldSupportGraphFilter() throws Exception { +// if the graph computer does not support graph filter, then make sure its exception handling is correct +if (!graphProvider.getGraphComputer(graph).features().supportsGraphFilter()) { +try { + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")); +fail("Should throw an unsupported operation exception"); +} catch (final UnsupportedOperationException e) { + assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage()); +} +try { + graphProvider.getGraphComputer(graph).edges(__.outE().limit(10)); +fail("Should throw an unsupported operation exception"); +} catch (final UnsupportedOperationException e) { + assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage()); +} +return; +} +/// VERTEX PROGRAM + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).program(new VertexProgramM(VertexProgramM.SOFTWARE_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).program(new VertexProgramM(VertexProgramM.PEOPLE_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.KNOWS_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_ONLY)).submit().get(); + graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows").has("weight", P.gt(0.5f))).program(new
tinkerpop git commit: tweaked the MessageScope bug fix test to use MODERN so it works with Spark and Giraph. Simple tweak to test data, not semantics. CTR.
Repository: tinkerpop Updated Branches: refs/heads/tp31 3b8c62892 -> e7f5ef711 tweaked the MessageScope bug fix test to use MODERN so it works with Spark and Giraph. Simple tweak to test data, not semantics. CTR. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e7f5ef71 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e7f5ef71 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e7f5ef71 Branch: refs/heads/tp31 Commit: e7f5ef711b1edbd130f23610d993e13d44d5df50 Parents: 3b8c628 Author: Marko A. RodriguezAuthored: Tue Jun 27 09:55:35 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 09:55:35 2017 -0600 -- .../process/computer/GraphComputerTest.java | 42 +--- 1 file changed, 10 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e7f5ef71/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 02ac5d4..e2acd5e 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@ -26,7 +26,6 @@ import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; @@ -41,7 +40,6 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; @@ -1472,27 +1470,16 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { / @Test +@LoadGraphWith(MODERN) public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { -Vertex a = graph.addVertex("a"); -Vertex b = graph.addVertex("b"); -Vertex c = graph.addVertex("c"); -a.addEdge("edge", b); -b.addEdge("edge", c); - -// Simple graph: -// a -> b -> c - -// Execute a traversal program that sends an incoming message of "2" and an outgoing message of "1" from "b" -// then each vertex sums any received messages -ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); - -// We expect the results to be {a=2, b=0, c=1}. Instead it is {a=3, b=0, c=3} -assertEquals((Long) result.graph().traversal().V().hasLabel("a").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(2L)); -assertEquals((Long) result.graph().traversal().V().hasLabel("b").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(0L)); -assertEquals((Long) result.graph().traversal().V().hasLabel("c").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(1L)); +final ComputerResult result = graph.compute(graphComputerClass.get()).program(new MultiScopeVertexProgram()).submit().get(); +assertEquals(result.graph().traversal().V().has("name", "josh").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 0L); +assertEquals(result.graph().traversal().V().has("name", "lop").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); +assertEquals(result.graph().traversal().V().has("name", "ripple").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 1L); +assertEquals(result.graph().traversal().V().has("name", "marko").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(), 2L); } -public static class MultiScopeVertexProgram implements VertexProgram { +public static class MultiScopeVertexProgram extends StaticVertexProgram { private final MessageScope.Local countMessageScopeIn = MessageScope.Local.of(__::inE); private final MessageScope.Local countMessageScopeOut = MessageScope.Local.of(__::outE); @@ -1502,7 +1489,8 @@ public class GraphComputerTest extends
[2/5] tinkerpop git commit: add the regression test
add the regression test Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/99679a03 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/99679a03 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/99679a03 Branch: refs/heads/tp32 Commit: 99679a037db3e86112471a40cd454114231852b6 Parents: 28c514d Author: SheldonAuthored: Mon Jun 19 10:35:16 2017 +0100 Committer: Sheldon Committed: Mon Jun 19 11:20:37 2017 +0100 -- .../process/computer/GraphComputerTest.java | 93 1 file changed, 93 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99679a03/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 1af0830..02ac5d4 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@ -24,11 +24,14 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith; import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest; import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Direction; +import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; +import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; import org.junit.Test; import java.util.ArrayList; @@ -38,9 +41,11 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL; @@ -1463,6 +1468,94 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { public void storeState(final Configuration configuration) { VertexProgram.super.storeState(configuration); } +} + +/ +@Test +public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { +Vertex a = graph.addVertex("a"); +Vertex b = graph.addVertex("b"); +Vertex c = graph.addVertex("c"); +a.addEdge("edge", b); +b.addEdge("edge", c); + +// Simple graph: +// a -> b -> c + +// Execute a traversal program that sends an incoming message of "2" and an outgoing message of "1" from "b" +// then each vertex sums any received messages +ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); + +// We expect the results to be {a=2, b=0, c=1}. Instead it is {a=3, b=0, c=3} +assertEquals((Long) result.graph().traversal().V().hasLabel("a").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(2L)); +assertEquals((Long) result.graph().traversal().V().hasLabel("b").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(0L)); +assertEquals((Long) result.graph().traversal().V().hasLabel("c").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(1L)); +} + +public static class MultiScopeVertexProgram implements VertexProgram { + +private final MessageScope.Local countMessageScopeIn = MessageScope.Local.of(__::inE); +private final MessageScope.Local countMessageScopeOut = MessageScope.Local.of(__::outE); + +private static final String MEMORY_KEY = "count"; + +private static final Set COMPUTE_KEYS = Collections.singleton(MEMORY_KEY); + +@Override +public void setup(final Memory memory) {} + +@Override +public GraphComputer.Persist getPreferredPersist() { +return GraphComputer.Persist.VERTEX_PROPERTIES; +} + +@Override +public Set getElementComputeKeys() { +return COMPUTE_KEYS; +} + +
[3/5] tinkerpop git commit: Merge branch 'tp31' of https://github.com/sheldonkhall/tinkerpop into tp31
Merge branch 'tp31' of https://github.com/sheldonkhall/tinkerpop into tp31 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d67b88b2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d67b88b2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d67b88b2 Branch: refs/heads/tp32 Commit: d67b88b2bee75c68d3c5756a8dbf963f9de2df39 Parents: 3d50f5c 99679a0 Author: Marko A. RodriguezAuthored: Tue Jun 27 07:53:22 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:53:22 2017 -0600 -- .../process/computer/GraphComputerTest.java | 93 .../process/computer/TinkerMessageBoard.java| 4 +- .../process/computer/TinkerMessenger.java | 22 +++-- 3 files changed, 109 insertions(+), 10 deletions(-) --
[4/5] tinkerpop git commit: updated CHANGELOG.
updated CHANGELOG. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3b8c6289 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3b8c6289 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3b8c6289 Branch: refs/heads/tp32 Commit: 3b8c62892b3369a2ada0314f33f0b5122a4d6e82 Parents: d67b88b Author: Marko A. RodriguezAuthored: Tue Jun 27 07:54:00 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:54:00 2017 -0600 -- CHANGELOG.asciidoc | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3b8c6289/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index d421cb5..5436fd9 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -26,6 +26,8 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima TinkerPop 3.1.8 (Release Date: NOT OFFICIALLY RELEASED YET) ~~~ +* Fixed a `MessageScope` bug in `TinkerGraphComputer`. + [[release-3-1-7]] TinkerPop 3.1.7 (Release Date: June 12, 2017) ~
[1/5] tinkerpop git commit: bugfix
Repository: tinkerpop Updated Branches: refs/heads/tp32 5ac61b7af -> f1aed80b0 bugfix Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/28c514da Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/28c514da Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/28c514da Branch: refs/heads/tp32 Commit: 28c514da9065683ed90ea6aabc66ffdcbab99c11 Parents: b1c0723 Author: SheldonAuthored: Thu Jun 15 18:00:32 2017 +0100 Committer: Sheldon Committed: Mon Jun 19 11:20:20 2017 +0100 -- .../process/computer/TinkerMessageBoard.java| 4 ++-- .../process/computer/TinkerMessenger.java | 22 +--- 2 files changed, 16 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/28c514da/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java -- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java index b217801..422ab86 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java @@ -32,8 +32,8 @@ import java.util.concurrent.ConcurrentHashMap; */ final class TinkerMessageBoard { -public Map sendMessages = new ConcurrentHashMap<>(); -public Map receiveMessages = new ConcurrentHashMap<>(); +public Map > sendMessages = new ConcurrentHashMap<>(); +public Map > receiveMessages = new ConcurrentHashMap<>(); public Set previousMessageScopes = new HashSet<>(); public Set currentMessageScopes = new HashSet<>(); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/28c514da/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java -- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java index 3298aff..d3f2de5 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java @@ -37,6 +37,7 @@ import java.util.Optional; import java.util.Queue; import java.util.Spliterator; import java.util.Spliterators; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -59,14 +60,15 @@ public final class TinkerMessenger implements Messenger { @Override public Iterator receiveMessages() { final MultiIterator multiIterator = new MultiIterator<>(); -for (final MessageScope messageScope : this.messageBoard.previousMessageScopes) { +for (final MessageScope messageScope : this.messageBoard.receiveMessages.keySet()) { +//for (final MessageScope messageScope : this.messageBoard.previousMessageScopes) { if (messageScope instanceof MessageScope.Local) { final MessageScope.Local localMessageScope = (MessageScope.Local) messageScope; final Traversal.Admin incidentTraversal = TinkerMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), this.vertex); final Direction direction = TinkerMessenger.getDirection(incidentTraversal); final Edge[] edge = new Edge[1]; // simulates storage side-effects available in Gremlin, but not Java8 streams multiIterator.addIterator(StreamSupport.stream(Spliterators.spliteratorUnknownSize(VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false) -.map(e -> this.messageBoard.receiveMessages.get((edge[0] = e).vertices(direction).next())) +.map(e -> this.messageBoard.receiveMessages.get(messageScope).get((edge[0] = e).vertices(direction).next())) .filter(q -> null != q) .flatMap(Queue::stream) .map(message
[4/4] tinkerpop git commit: updated CHANGELOG.
updated CHANGELOG. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3b8c6289 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3b8c6289 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3b8c6289 Branch: refs/heads/tp31 Commit: 3b8c62892b3369a2ada0314f33f0b5122a4d6e82 Parents: d67b88b Author: Marko A. RodriguezAuthored: Tue Jun 27 07:54:00 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:54:00 2017 -0600 -- CHANGELOG.asciidoc | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3b8c6289/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index d421cb5..5436fd9 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -26,6 +26,8 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima TinkerPop 3.1.8 (Release Date: NOT OFFICIALLY RELEASED YET) ~~~ +* Fixed a `MessageScope` bug in `TinkerGraphComputer`. + [[release-3-1-7]] TinkerPop 3.1.7 (Release Date: June 12, 2017) ~
[2/4] tinkerpop git commit: add the regression test
add the regression test Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/99679a03 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/99679a03 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/99679a03 Branch: refs/heads/tp31 Commit: 99679a037db3e86112471a40cd454114231852b6 Parents: 28c514d Author: SheldonAuthored: Mon Jun 19 10:35:16 2017 +0100 Committer: Sheldon Committed: Mon Jun 19 11:20:37 2017 +0100 -- .../process/computer/GraphComputerTest.java | 93 1 file changed, 93 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99679a03/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java index 1af0830..02ac5d4 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java @@ -24,11 +24,14 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith; import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest; import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce; import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Direction; +import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Graph; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; +import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; import org.junit.Test; import java.util.ArrayList; @@ -38,9 +41,11 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL; @@ -1463,6 +1468,94 @@ public class GraphComputerTest extends AbstractGremlinProcessTest { public void storeState(final Configuration configuration) { VertexProgram.super.storeState(configuration); } +} + +/ +@Test +public void shouldSupportMultipleScopes() throws ExecutionException, InterruptedException { +Vertex a = graph.addVertex("a"); +Vertex b = graph.addVertex("b"); +Vertex c = graph.addVertex("c"); +a.addEdge("edge", b); +b.addEdge("edge", c); + +// Simple graph: +// a -> b -> c + +// Execute a traversal program that sends an incoming message of "2" and an outgoing message of "1" from "b" +// then each vertex sums any received messages +ComputerResult result = graph.compute().program(new MultiScopeVertexProgram()).submit().get(); + +// We expect the results to be {a=2, b=0, c=1}. Instead it is {a=3, b=0, c=3} +assertEquals((Long) result.graph().traversal().V().hasLabel("a").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(2L)); +assertEquals((Long) result.graph().traversal().V().hasLabel("b").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(0L)); +assertEquals((Long) result.graph().traversal().V().hasLabel("c").next().property(MultiScopeVertexProgram.MEMORY_KEY).value(),Long.valueOf(1L)); +} + +public static class MultiScopeVertexProgram implements VertexProgram { + +private final MessageScope.Local countMessageScopeIn = MessageScope.Local.of(__::inE); +private final MessageScope.Local countMessageScopeOut = MessageScope.Local.of(__::outE); + +private static final String MEMORY_KEY = "count"; + +private static final Set COMPUTE_KEYS = Collections.singleton(MEMORY_KEY); + +@Override +public void setup(final Memory memory) {} + +@Override +public GraphComputer.Persist getPreferredPersist() { +return GraphComputer.Persist.VERTEX_PROPERTIES; +} + +@Override +public Set getElementComputeKeys() { +return COMPUTE_KEYS; +} + +
[3/4] tinkerpop git commit: Merge branch 'tp31' of https://github.com/sheldonkhall/tinkerpop into tp31
Merge branch 'tp31' of https://github.com/sheldonkhall/tinkerpop into tp31 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d67b88b2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d67b88b2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d67b88b2 Branch: refs/heads/tp31 Commit: d67b88b2bee75c68d3c5756a8dbf963f9de2df39 Parents: 3d50f5c 99679a0 Author: Marko A. RodriguezAuthored: Tue Jun 27 07:53:22 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:53:22 2017 -0600 -- .../process/computer/GraphComputerTest.java | 93 .../process/computer/TinkerMessageBoard.java| 4 +- .../process/computer/TinkerMessenger.java | 22 +++-- 3 files changed, 109 insertions(+), 10 deletions(-) --
[1/4] tinkerpop git commit: bugfix
Repository: tinkerpop Updated Branches: refs/heads/tp31 3d50f5cf4 -> 3b8c62892 bugfix Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/28c514da Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/28c514da Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/28c514da Branch: refs/heads/tp31 Commit: 28c514da9065683ed90ea6aabc66ffdcbab99c11 Parents: b1c0723 Author: SheldonAuthored: Thu Jun 15 18:00:32 2017 +0100 Committer: Sheldon Committed: Mon Jun 19 11:20:20 2017 +0100 -- .../process/computer/TinkerMessageBoard.java| 4 ++-- .../process/computer/TinkerMessenger.java | 22 +--- 2 files changed, 16 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/28c514da/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java -- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java index b217801..422ab86 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessageBoard.java @@ -32,8 +32,8 @@ import java.util.concurrent.ConcurrentHashMap; */ final class TinkerMessageBoard { -public Map sendMessages = new ConcurrentHashMap<>(); -public Map receiveMessages = new ConcurrentHashMap<>(); +public Map > sendMessages = new ConcurrentHashMap<>(); +public Map > receiveMessages = new ConcurrentHashMap<>(); public Set previousMessageScopes = new HashSet<>(); public Set currentMessageScopes = new HashSet<>(); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/28c514da/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java -- diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java index 3298aff..d3f2de5 100644 --- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java +++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java @@ -37,6 +37,7 @@ import java.util.Optional; import java.util.Queue; import java.util.Spliterator; import java.util.Spliterators; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -59,14 +60,15 @@ public final class TinkerMessenger implements Messenger { @Override public Iterator receiveMessages() { final MultiIterator multiIterator = new MultiIterator<>(); -for (final MessageScope messageScope : this.messageBoard.previousMessageScopes) { +for (final MessageScope messageScope : this.messageBoard.receiveMessages.keySet()) { +//for (final MessageScope messageScope : this.messageBoard.previousMessageScopes) { if (messageScope instanceof MessageScope.Local) { final MessageScope.Local localMessageScope = (MessageScope.Local) messageScope; final Traversal.Admin incidentTraversal = TinkerMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), this.vertex); final Direction direction = TinkerMessenger.getDirection(incidentTraversal); final Edge[] edge = new Edge[1]; // simulates storage side-effects available in Gremlin, but not Java8 streams multiIterator.addIterator(StreamSupport.stream(Spliterators.spliteratorUnknownSize(VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false) -.map(e -> this.messageBoard.receiveMessages.get((edge[0] = e).vertices(direction).next())) +.map(e -> this.messageBoard.receiveMessages.get(messageScope).get((edge[0] = e).vertices(direction).next())) .filter(q -> null != q) .flatMap(Queue::stream) .map(message
[3/3] tinkerpop git commit: Merge branch 'tp32'
Merge branch 'tp32' Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/55af79f7 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/55af79f7 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/55af79f7 Branch: refs/heads/master Commit: 55af79f78fb8f1c84be8764728695d95ca8bcf18 Parents: 1ba875b 5ac61b7 Author: Marko A. RodriguezAuthored: Tue Jun 27 07:50:39 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:50:39 2017 -0600 -- CHANGELOG.asciidoc | 1 + .../gremlin/process/traversal/step/map/EdgeVertexStep.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/55af79f7/CHANGELOG.asciidoc --
[1/2] tinkerpop git commit: made the Direction method protected.
Repository: tinkerpop Updated Branches: refs/heads/tp32 1518cc420 -> 5ac61b7af made the Direction method protected. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5ac61b7a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5ac61b7a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5ac61b7a Branch: refs/heads/tp32 Commit: 5ac61b7af2bb19dff84e100965587bd6eae29029 Parents: 2ba8deb Author: Marko A. RodriguezAuthored: Fri Jun 23 09:20:02 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:50:22 2017 -0600 -- .../gremlin/process/traversal/step/map/EdgeVertexStep.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac61b7a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java index d7ebd32..8bef835 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java @@ -35,7 +35,7 @@ import java.util.Set; */ public class EdgeVertexStep extends FlatMapStep implements AutoCloseable { -private Direction direction; +protected Direction direction; public EdgeVertexStep(final Traversal.Admin traversal, final Direction direction) { super(traversal);
[1/3] tinkerpop git commit: made the Direction method protected.
Repository: tinkerpop Updated Branches: refs/heads/master 1ba875bd7 -> 55af79f78 made the Direction method protected. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5ac61b7a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5ac61b7a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5ac61b7a Branch: refs/heads/master Commit: 5ac61b7af2bb19dff84e100965587bd6eae29029 Parents: 2ba8deb Author: Marko A. RodriguezAuthored: Fri Jun 23 09:20:02 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:50:22 2017 -0600 -- .../gremlin/process/traversal/step/map/EdgeVertexStep.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac61b7a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java index d7ebd32..8bef835 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java @@ -35,7 +35,7 @@ import java.util.Set; */ public class EdgeVertexStep extends FlatMapStep implements AutoCloseable { -private Direction direction; +protected Direction direction; public EdgeVertexStep(final Traversal.Admin traversal, final Direction direction) { super(traversal);
[2/3] tinkerpop git commit: EdgeVertexStep is no longer final and can be extended by providers.
EdgeVertexStep is no longer final and can be extended by providers. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2ba8debd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2ba8debd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2ba8debd Branch: refs/heads/master Commit: 2ba8debdabfdfdcdce231477b3584299746e9c8c Parents: 1518cc4 Author: Marko A. RodriguezAuthored: Thu Jun 22 07:15:15 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:50:22 2017 -0600 -- CHANGELOG.asciidoc | 1 + .../gremlin/process/traversal/step/map/EdgeVertexStep.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2ba8debd/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 7a69469..1b46dcf 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -29,6 +29,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET) This release also includes changes from < >. * Added annotations to the traversal metrics pretty print. +* `EdgeVertexStep` is no longer final and can be extended by providers. * Fixed `HADOOP_GREMLIN_LIBS` parsing for Windows. * Improved GraphSON serialization performance around `VertexProperty`. * Changed some tests in `EventStrategyProcessTest` which were enforcing some unintended semantics around transaction state. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2ba8debd/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java index 87c1561..d7ebd32 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java @@ -33,7 +33,7 @@ import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public final class EdgeVertexStep extends FlatMapStep implements AutoCloseable { +public class EdgeVertexStep extends FlatMapStep implements AutoCloseable { private Direction direction;
[2/2] tinkerpop git commit: EdgeVertexStep is no longer final and can be extended by providers.
EdgeVertexStep is no longer final and can be extended by providers. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2ba8debd Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2ba8debd Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2ba8debd Branch: refs/heads/tp32 Commit: 2ba8debdabfdfdcdce231477b3584299746e9c8c Parents: 1518cc4 Author: Marko A. RodriguezAuthored: Thu Jun 22 07:15:15 2017 -0600 Committer: Marko A. Rodriguez Committed: Tue Jun 27 07:50:22 2017 -0600 -- CHANGELOG.asciidoc | 1 + .../gremlin/process/traversal/step/map/EdgeVertexStep.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2ba8debd/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 7a69469..1b46dcf 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -29,6 +29,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET) This release also includes changes from < >. * Added annotations to the traversal metrics pretty print. +* `EdgeVertexStep` is no longer final and can be extended by providers. * Fixed `HADOOP_GREMLIN_LIBS` parsing for Windows. * Improved GraphSON serialization performance around `VertexProperty`. * Changed some tests in `EventStrategyProcessTest` which were enforcing some unintended semantics around transaction state. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2ba8debd/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java index 87c1561..d7ebd32 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java @@ -33,7 +33,7 @@ import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public final class EdgeVertexStep extends FlatMapStep implements AutoCloseable { +public class EdgeVertexStep extends FlatMapStep implements AutoCloseable { private Direction direction;
tinkerpop git commit: TINKERPOP-1698 Changed format of property writes
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1698 e9658c6a6 -> 9ede1f0f0 TINKERPOP-1698 Changed format of property writes Write properties with streams instead of pulling them into a List in memory Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9ede1f0f Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9ede1f0f Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9ede1f0f Branch: refs/heads/TINKERPOP-1698 Commit: 9ede1f0f07bc736581fb2aa606c1002b2f7cd3b2 Parents: e9658c6 Author: Stephen MalletteAuthored: Tue Jun 27 08:46:35 2017 -0400 Committer: Stephen Mallette Committed: Tue Jun 27 08:48:38 2017 -0400 -- CHANGELOG.asciidoc | 1 + .../structure/io/gryo/GryoSerializersV3d0.java | 75 ++- .../structure/io/gryo/kryoshim/InputShim.java | 2 + .../structure/io/gryo/kryoshim/OutputShim.java | 2 + .../kryoshim/shaded/ShadedInputAdapter.java | 5 ++ .../kryoshim/shaded/ShadedOutputAdapter.java| 7 +- .../structure/io/gryo/_3_3_0/edge-v3d0.kryo | Bin 41 -> 39 bytes .../io/gryo/_3_3_0/standardresult-v3d0.kryo | Bin 235 -> 229 bytes .../io/gryo/_3_3_0/traversalmetrics-v1d0.kryo | Bin 294 -> 306 bytes .../io/gryo/_3_3_0/traverser-v3d0.kryo | Bin 216 -> 210 bytes .../structure/io/gryo/_3_3_0/tree-v3d0.kryo | Bin 293 -> 277 bytes .../structure/io/gryo/_3_3_0/vertex-v3d0.kryo | Bin 207 -> 201 bytes .../io/gryo/_3_3_0/vertexproperty-v3d0.kryo | Bin 26 -> 23 bytes .../kryoshim/unshaded/UnshadedInputAdapter.java | 5 ++ .../unshaded/UnshadedOutputAdapter.java | 5 ++ 15 files changed, 66 insertions(+), 36 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9ede1f0f/CHANGELOG.asciidoc -- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index f6c9d96..079c217 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima TinkerPop 3.3.0 (Release Date: NOT OFFICIALLY RELEASED YET) ~~~ +* Established the Gryo 3.0 format. * `GryoVersion` now includes a default `ClassResolver` to supply to the `GryoMapper`. * `GryoClassResolver` renamed to `GryoClassResolverV1d0` which has an abstract class that for providers to extend in `AbstractGryoClassResolver`. * Graphite and Ganglia are no longer packaged with the Gremlin Server distribution. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9ede1f0f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java index 20e13c4..82fa178 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3d0.java @@ -31,10 +31,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics; import org.apache.tinkerpop.gremlin.process.traversal.util.OrP; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics; import org.apache.tinkerpop.gremlin.structure.Edge; +import org.apache.tinkerpop.gremlin.structure.Element; import org.apache.tinkerpop.gremlin.structure.Property; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.structure.VertexProperty; -import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens; import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim; import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim; import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim; @@ -51,6 +51,7 @@ import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -86,14 +87,18 @@ public final class GryoSerializersV3d0 { } kryo.writeClassAndObject(output, edge.outVertex().id()); -output.writeString(edge.outVertex().label()); - -final List properties = IteratorUtils.asList(edge.properties()); -output.writeInt(properties.size()); -properties.forEach(p -> { -
tinkerpop git commit: TINKERPOP-1698 Include traversal index in deserialization
Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1698 65045547c -> e9658c6a6 TINKERPOP-1698 Include traversal index in deserialization Seems like it is needed for giraph for some reason. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e9658c6a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e9658c6a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e9658c6a Branch: refs/heads/TINKERPOP-1698 Commit: e9658c6a6ed50db903d7f0b031015cec7c5d24a1 Parents: 6504554 Author: Stephen MalletteAuthored: Tue Jun 27 07:42:07 2017 -0400 Committer: Stephen Mallette Committed: Tue Jun 27 07:42:07 2017 -0400 -- .../process/traversal/util/DefaultTraversalMetrics.java | 7 ++- .../gremlin/process/traversal/step/map/ProfileTest.java | 8 2 files changed, 10 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9658c6a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java index 584456a..3c543f6 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java @@ -34,6 +34,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; /** * @author Bob Briody (http://bobbriody.com) @@ -63,7 +64,11 @@ public final class DefaultTraversalMetrics implements TraversalMetrics, Serializ public DefaultTraversalMetrics(final long totalStepDurationNs, final List metricsMap) { this.totalStepDuration = totalStepDurationNs; this.computedMetrics = new LinkedHashMap<>(this.metrics.size()); -metricsMap.forEach(metric -> this.computedMetrics.put(metric.getId(), metric.getImmutableClone())); +final AtomicInteger counter = new AtomicInteger(0); +metricsMap.forEach(metric -> { +this.computedMetrics.put(metric.getId(), metric.getImmutableClone()); +this.indexToLabelMap.put(counter.getAndIncrement(), metric.getId()); +}); } @Override http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9658c6a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java -- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java index 06afc1f..2dc0e3b 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java @@ -153,7 +153,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest { validate_g_V_out_out_profile_grateful(traversalMetrics); } -private void validate_g_V_out_out_profile_grateful(TraversalMetrics traversalMetrics) { +private void validate_g_V_out_out_profile_grateful(final TraversalMetrics traversalMetrics) { traversalMetrics.toString(); // ensure no exceptions are thrown Metrics metrics = traversalMetrics.getMetrics(0); @@ -206,7 +206,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest { validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(traversalMetrics); } -private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(TraversalMetrics traversalMetrics) { +private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(final TraversalMetrics traversalMetrics) { traversalMetrics.toString(); // ensure no exceptions are thrown // Grab the second (sideEffect{sleep}) step and check the times. @@ -253,7 +253,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest { !traversal.asAdmin().getStrategies().toList().contains(ComputerVerificationStrategy.instance())); } -private void validate_g_V_repeat_both_modern_profile(TraversalMetrics traversalMetrics, boolean withRepeatUnrollStrategy) { +