You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2016/09/12 10:43:28 UTC

[01/10] tinkerpop git commit: Added a JIRA ticket to the CHANGELOG that closed on 3.2.2 [Forced Update!]

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1280 b3258693f -> a33e85561 (forced update)


Added a JIRA ticket to the CHANGELOG that closed on 3.2.2

but was not included at time of release CTR


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

Branch: refs/heads/TINKERPOP-1280
Commit: 7430a65ee86a6f2ba645715e363e673a3f6600d8
Parents: ec76c26
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Sep 9 09:37:30 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Sep 9 09:37:30 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7430a65e/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 09042de..8b50df7 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -65,6 +65,7 @@ This release also includes changes from <<release-3-1-4, 3.1.4>>.
 Bugs
 ^^^^
 
+* TINKERPOP-810 store not visible
 * TINKERPOP-1151 slf4j-log4j12 / log4j is only required for testing *(breaking)*
 * TINKERPOP-1383 publish-docs.sh might publish to current too early
 * TINKERPOP-1390 IdentityRemoveStrategyTest fails randomly


[09/10] tinkerpop git commit: CTR: Increased timeout in a Gremlin Server integration test as it constantly timed out in Docker.

Posted by dk...@apache.org.
CTR: Increased timeout in a Gremlin Server integration test as it constantly timed out in Docker.


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

Branch: refs/heads/TINKERPOP-1280
Commit: 014232423a0caaf66da4f76615ee959230588e2b
Parents: a1ba988
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Mon Sep 12 12:39:57 2016 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Mon Sep 12 12:39:57 2016 +0200

----------------------------------------------------------------------
 .../tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/01423242/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
index 7314243..4f255b9 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
@@ -518,7 +518,7 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration
         });
 
         // countdown should have reached zero as results should have eventually been all returned and processed
-        assertTrue(latch.await(20, TimeUnit.SECONDS));
+        assertTrue(latch.await(30, TimeUnit.SECONDS));
 
         final List<Integer> expected = IntStream.range(1, 10).boxed().collect(Collectors.toList());
         IntStream.range(0, requests).forEach(r ->


[05/10] tinkerpop git commit: Merge branch 'post-master'

Posted by dk...@apache.org.
Merge branch 'post-master'


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

Branch: refs/heads/TINKERPOP-1280
Commit: 920a902b2562e033c68ebab2ff5a06172a5d9b1e
Parents: 1bf41e9 a939f10
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Sep 12 06:26:40 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Sep 12 06:26:40 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc              | 1 +
 docs/src/index.asciidoc         | 8 ++++----
 docs/src/recipes/index.asciidoc | 3 +++
 3 files changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/920a902b/CHANGELOG.asciidoc
----------------------------------------------------------------------


[06/10] tinkerpop git commit: Merge branch 'pr-403'

Posted by dk...@apache.org.
Merge branch 'pr-403'


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

Branch: refs/heads/TINKERPOP-1280
Commit: 11915f73ebaadccaacf9258ef141d2cb3dd719a9
Parents: 920a902 a056a13
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Sep 12 06:28:32 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Sep 12 06:28:32 2016 -0400

----------------------------------------------------------------------
 .../gremlin/structure/io/graphson/GraphSONTypeSerializer.java   | 3 +++
 .../gremlin/structure/io/graphson/GraphSONXModuleV2d0.java      | 2 ++
 .../structure/TinkerGraphGraphSONSerializerV2d0Test.java        | 5 +++++
 3 files changed, 10 insertions(+)
----------------------------------------------------------------------



[03/10] tinkerpop git commit: Added a link from recipes to the "contributing policy" in the dev docs. CTR

Posted by dk...@apache.org.
Added a link from recipes to the "contributing policy" in the dev docs. CTR


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

Branch: refs/heads/TINKERPOP-1280
Commit: a939f10de4fe047f8310734fd9081e8de292e317
Parents: 37942af
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Sep 9 14:10:39 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Sep 9 14:10:39 2016 -0400

----------------------------------------------------------------------
 docs/src/recipes/index.asciidoc | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a939f10d/docs/src/recipes/index.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/recipes/index.asciidoc b/docs/src/recipes/index.asciidoc
index 67a7932..3225264 100644
--- a/docs/src/recipes/index.asciidoc
+++ b/docs/src/recipes/index.asciidoc
@@ -71,6 +71,9 @@ prior to starting work on it, as the community might provide insight on the appr
 It is preferable that a link:https://issues.apache.org/jira/browse/TINKERPOP[JIRA issue] be opened that describes the nature
 of the recipe so that the eventual pull request can be bound to that issue.
 
+IMPORTANT: Please read TinkerPop's link:http://tinkerpop.apache.org/docs/x.y.z/dev/developer/#_contributing[policy on contributing]
+prior to submitting a recipe.
+
 To contribute a recipe, first clone the repository:
 
 [source, shell]


[08/10] tinkerpop git commit: Prepare upgrade docs for 3.2.3 CTR

Posted by dk...@apache.org.
Prepare upgrade docs for 3.2.3 CTR


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

Branch: refs/heads/TINKERPOP-1280
Commit: a1ba988310461beab66eeed5656e408071005beb
Parents: 74b4ee0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Sep 12 06:32:50 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Sep 12 06:32:50 2016 -0400

----------------------------------------------------------------------
 docs/src/upgrade/release-3.2.x-incubating.asciidoc | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a1ba9883/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index fd75072..873cdc8 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -22,6 +22,13 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 
 *Nine Inch Gremlins*
 
+TinkerPop 3.2.3
+---------------
+
+*Release Date: NOT OFFICIALLY RELEASED YET*
+
+Please see the link:https://github.com/apache/tinkerpop/blob/3.2.3/CHANGELOG.asciidoc#release-3-2-3[changelog] for a complete list of all the modifications that are part of this release.
+
 TinkerPop 3.2.2
 ---------------
 


[02/10] tinkerpop git commit: Fix header formatting to fix asciidoc warning CTR

Posted by dk...@apache.org.
Fix header formatting to fix asciidoc warning CTR


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

Branch: refs/heads/TINKERPOP-1280
Commit: 37942afa23ee8a9d05cf5fa0a3d7773c4dad1af3
Parents: 7430a65
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Sep 9 09:41:38 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Sep 9 09:41:38 2016 -0400

----------------------------------------------------------------------
 docs/src/index.asciidoc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/37942afa/docs/src/index.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/index.asciidoc b/docs/src/index.asciidoc
index 2270043..51d2105 100644
--- a/docs/src/index.asciidoc
+++ b/docs/src/index.asciidoc
@@ -20,7 +20,7 @@ image::apache-tinkerpop-logo.png[width=500]
 *x.y.z*
 
 TinkerPop Compendium
-====================
+--------------------
 
 image::tinkerpop-reading.png[width=800,align="center"]
 
@@ -43,7 +43,7 @@ Note the "+" following the link in each table entry - it forces an asciidoc line
 
 [[tutorials]]
 Tutorials
----------
+~~~~~~~~~
 
 [width="100%",cols="<.<3,<.^10",grid="none"]
 |=========================================================
@@ -64,7 +64,7 @@ and an overview of Gremlin. (*external*)
 
 [[publications]]
 Publications
-------------
+~~~~~~~~~~~~
 
 Unless otherwise noted, all "publications" are externally managed:
 
@@ -80,7 +80,7 @@ Unless otherwise noted, all "publications" are externally managed:
 
 [[developer]]
 Developer
----------
+~~~~~~~~~
 
 [width="100%",cols="<.<3,<.^10",grid="none"]
 |=========================================================


[04/10] tinkerpop git commit: Fix serialization of InetAddress with GraphSON 2.0.

Posted by dk...@apache.org.
Fix serialization of InetAddress with GraphSON 2.0.


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

Branch: refs/heads/TINKERPOP-1280
Commit: a056a13e08ad0985be4a36f36bfb547d3d85c5bc
Parents: ec76c26
Author: Kevin Gallardo <ke...@datastax.com>
Authored: Fri Sep 9 19:03:49 2016 +0100
Committer: Kevin Gallardo <ke...@datastax.com>
Committed: Fri Sep 9 19:32:44 2016 +0100

----------------------------------------------------------------------
 .../gremlin/structure/io/graphson/GraphSONTypeSerializer.java   | 3 +++
 .../gremlin/structure/io/graphson/GraphSONXModuleV2d0.java      | 2 ++
 .../structure/TinkerGraphGraphSONSerializerV2d0Test.java        | 5 +++++
 3 files changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a056a13e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
index 1f6f07d..d1a70af 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.java
@@ -33,6 +33,7 @@ import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeIdResolver;
 import org.apache.tinkerpop.shaded.jackson.databind.jsontype.TypeSerializer;
 
 import java.io.IOException;
+import java.net.InetAddress;
 import java.nio.ByteBuffer;
 
 /**
@@ -193,6 +194,8 @@ public class GraphSONTypeSerializer extends TypeSerializer {
             return Property.class;
         } else if (ByteBuffer.class.isAssignableFrom(c)) {
             return ByteBuffer.class;
+        } else if (InetAddress.class.isAssignableFrom(c)) {
+            return InetAddress.class;
         } else if (Traverser.class.isAssignableFrom(c)) {
             return Traverser.class;
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a056a13e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV2d0.java
index 5e7a9aa..336d11c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV2d0.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONXModuleV2d0.java
@@ -24,6 +24,7 @@ package org.apache.tinkerpop.gremlin.structure.io.graphson;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.net.InetAddress;
 import java.nio.ByteBuffer;
 import java.time.Duration;
 import java.time.Instant;
@@ -55,6 +56,7 @@ public final class GraphSONXModuleV2d0 extends GraphSONModule {
                 put(BigDecimal.class, "BigDecimal");
                 put(Byte.class, "Byte");
                 put(Character.class, "Char");
+                put(InetAddress.class, "InetAddress");
 
                 // Time serializers/deserializers
                 put(Duration.class, "Duration");

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a056a13e/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
index d6eda48..6d39838 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphGraphSONSerializerV2d0Test.java
@@ -44,6 +44,7 @@ import org.junit.Test;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.net.InetAddress;
 import java.nio.ByteBuffer;
 import java.time.Duration;
 import java.time.LocalDateTime;
@@ -227,6 +228,7 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
         final Duration durationProp = Duration.ofHours(3);
         final Long longProp = 2L;
         final ByteBuffer byteBufferProp = ByteBuffer.wrap("testbb".getBytes());
+        final InetAddress inetAddressProp = InetAddress.getByName("10.10.10.10");
 
         // One Java util type natively supported by Jackson
         v.property("uuid", uuidProp);
@@ -236,6 +238,8 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
         v.property("long", longProp);
         // One Java util type added by GraphSON
         v.property("bytebuffer", byteBufferProp);
+        v.property("inetaddress", inetAddressProp);
+
 
         final GraphWriter writer = getWriter(defaultMapperV2d0);
         final GraphReader reader = getReader(defaultMapperV2d0);
@@ -249,6 +253,7 @@ public class TinkerGraphGraphSONSerializerV2d0Test {
             assertEquals(vRead.property("duration").value(), durationProp);
             assertEquals(vRead.property("long").value(), longProp);
             assertEquals(vRead.property("bytebuffer").value(), byteBufferProp);
+            assertEquals(vRead.property("inetaddress").value(), inetAddressProp);
         }
     }
 


[10/10] tinkerpop git commit: Allow VertexPrograms to declare their traverser requirements.

Posted by dk...@apache.org.
Allow VertexPrograms to declare their traverser requirements.


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

Branch: refs/heads/TINKERPOP-1280
Commit: a33e85561072a726b51cbf43fbcc0d2f502f4ef0
Parents: 0142324
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Mon Sep 12 10:43:39 2016 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Mon Sep 12 12:43:10 2016 +0200

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   1 +
 .../gremlin/process/computer/VertexProgram.java |  11 +
 .../step/map/ProgramVertexProgramStep.java      |   9 +
 .../process/computer/GraphComputerTest.java     | 246 ++++++++++++++++++-
 .../decoration/TranslationStrategy.java         |  10 +-
 5 files changed, 270 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a33e8556/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 64c2155..887ae30 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.3 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* VertexPrograms can now declare traverser requirements, e.g. to have access to the path when used with `.program()`.
 * Added missing `InetAddress` to GraphSON extension module.
 
 [[release-3-2-2]]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a33e8556/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
index 15243fa..1c8d0cb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
@@ -20,6 +20,7 @@
 package org.apache.tinkerpop.gremlin.process.computer;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
@@ -184,6 +185,16 @@ public interface VertexProgram<M> extends Cloneable {
     }
 
     /**
+     * The traverser requirements that are needed when this VP is used as part of a traversal.
+     * The default is an empty set.
+     *
+     * @return the traverser requirements
+     */
+    public default Set<TraverserRequirement> getTraverserRequirements() {
+        return Collections.emptySet();
+    }
+
+    /**
      * When multiple workers on a single machine need VertexProgram instances, it is possible to use clone.
      * This will provide a speedier way of generating instances, over the {@link VertexProgram#storeState} and {@link VertexProgram#loadState} model.
      * The default implementation simply returns the object as it assumes that the VertexProgram instance is a stateless singleton.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a33e8556/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java
index 31eb04b..49add72 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -32,6 +33,7 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -40,6 +42,7 @@ public final class ProgramVertexProgramStep extends VertexProgramStep {
 
     private final Map<String, Object> configuration;
     private final String toStringOfVertexProgram;
+    private final Set<TraverserRequirement> traverserRequirements;
 
     public ProgramVertexProgramStep(final Traversal.Admin traversal, final VertexProgram vertexProgram) {
         super(traversal);
@@ -48,6 +51,7 @@ public final class ProgramVertexProgramStep extends VertexProgramStep {
         base.setDelimiterParsingDisabled(true);
         vertexProgram.storeState(base);
         this.toStringOfVertexProgram = vertexProgram.toString();
+        this.traverserRequirements = vertexProgram.getTraverserRequirements();
     }
 
     @Override
@@ -62,6 +66,11 @@ public final class ProgramVertexProgramStep extends VertexProgramStep {
     }
 
     @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return this.traverserRequirements;
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() ^ this.configuration.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a33e8556/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 761ae06..108550a 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
@@ -18,34 +18,43 @@
  */
 package org.apache.tinkerpop.gremlin.process.computer;
 
+import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationUtils;
 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.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.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.junit.Test;
 
+import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -54,13 +63,17 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicInteger;
 
 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)
@@ -94,6 +107,9 @@ import static org.junit.Assert.fail;
 @ExceptionCoverage(exceptionClass = Graph.Exceptions.class, methods = {
         "graphDoesNotSupportProvidedGraphComputer"
 })
+@ExceptionCoverage(exceptionClass = Path.Exceptions.class, methods = {
+        "shouldFailWithImproperTraverserRequirements"
+})
 @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
 public class GraphComputerTest extends AbstractGremlinProcessTest {
 
@@ -1603,7 +1619,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.<Vertex>bothE("knows").has("weight", P.gt(0.5f))).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).submit().get();
         graphProvider.getGraphComputer(graph).edges(__.<Vertex>bothE().limit(0)).program(new VertexProgramM(VertexProgramM.VERTICES_ONLY)).submit().get();
         graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(1)).program(new VertexProgramM(VertexProgramM.ONE_OUT_EDGE_ONLY)).submit().get();
-        graphProvider.getGraphComputer(graph).edges(__.outE()).program(new VertexProgramM(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(outE()).program(new VertexProgramM(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
 
         /// VERTEX PROGRAM + MAP REDUCE
         graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).program(new VertexProgramM(VertexProgramM.SOFTWARE_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.SOFTWARE_ONLY)).submit().get();
@@ -1613,7 +1629,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.<Vertex>bothE("knows").has("weight", P.gt(0.5f))).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).submit().get();
         graphProvider.getGraphComputer(graph).edges(__.<Vertex>bothE().limit(0)).program(new VertexProgramM(VertexProgramM.VERTICES_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.VERTICES_ONLY)).submit().get();
         graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(1)).program(new VertexProgramM(VertexProgramM.ONE_OUT_EDGE_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.ONE_OUT_EDGE_ONLY)).submit().get();
-        graphProvider.getGraphComputer(graph).edges(__.outE()).program(new VertexProgramM(VertexProgramM.OUT_EDGES_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(outE()).program(new VertexProgramM(VertexProgramM.OUT_EDGES_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
 
         /// MAP REDUCE ONLY
         graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).mapReduce(new MapReduceJ(VertexProgramM.SOFTWARE_ONLY)).submit().get();
@@ -1623,7 +1639,7 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
         graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.<Vertex>bothE("knows").has("weight", P.gt(0.5f))).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).submit().get();
         graphProvider.getGraphComputer(graph).edges(__.<Vertex>bothE().limit(0)).mapReduce(new MapReduceJ(VertexProgramM.VERTICES_ONLY)).submit().get();
         graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(1)).mapReduce(new MapReduceJ(VertexProgramM.ONE_OUT_EDGE_ONLY)).submit().get();
-        graphProvider.getGraphComputer(graph).edges(__.outE()).mapReduce(new MapReduceJ(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(outE()).mapReduce(new MapReduceJ(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
 
         // EXCEPTION HANDLING
         try {
@@ -2327,4 +2343,226 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
             return GraphComputer.Persist.VERTEX_PROPERTIES;
         }
     }
-}
+
+    ///////////////////////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSucceedWithProperTraverserRequirements() throws Exception {
+
+        final AtomicInteger counter = new AtomicInteger(0);
+        final Map<String, Object> idsByName = new HashMap<>();
+        final VertexProgramQ vp = VertexProgramQ.build().from("a").property("coworkers").create();
+
+        g.V().hasLabel("person").filter(outE("created")).valueMap(true, "name").forEachRemaining((Map map) ->
+                idsByName.put((String) ((List) map.get("name")).get(0), map.get(id)));
+
+        try {
+            g.V().as("a").out("created").in("created").program(vp).dedup()
+                    .valueMap("name", "coworkers").forEachRemaining((Map<String, Object> map) -> {
+
+                final String name = (String) ((List) map.get("name")).get(0);
+                final Map<Object, Long> coworkers = (Map<Object, Long>) ((List) map.get("coworkers")).get(0);
+                assertTrue(idsByName.containsKey(name));
+                assertEquals(2, coworkers.size());
+                idsByName.keySet().stream().filter(cn -> !cn.equals(name)).forEach(cn -> {
+                    final Object cid = idsByName.get(cn);
+                    assertTrue(coworkers.containsKey(cid));
+                    assertEquals(1L, coworkers.get(cid).longValue());
+                });
+                counter.incrementAndGet();
+            });
+
+            assertEquals(3, counter.intValue());
+        } catch (VerificationException ex) {
+            assumeNoException(ex);
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldFailWithImproperTraverserRequirements() throws Exception {
+
+        final AtomicInteger counter = new AtomicInteger(0);
+        final Map<String, Object> idsByName = new HashMap<>();
+        final VertexProgramQ vp = VertexProgramQ.build().from("a").property("coworkers").
+                useTraverserRequirements(false).create();
+
+        g.V().hasLabel("person").filter(outE("created")).valueMap(true, "name").forEachRemaining((Map map) ->
+                idsByName.put((String) ((List) map.get("name")).get(0), map.get(id)));
+
+        try {
+            g.V().as("a").out("created").in("created").program(vp).dedup()
+                    .valueMap("name", "coworkers").forEachRemaining((Map<String, Object> map) -> {
+
+                final String name = (String) ((List) map.get("name")).get(0);
+                final Map coworkers = (Map) ((List) map.get("coworkers")).get(0);
+                assertTrue(idsByName.containsKey(name));
+                assertTrue(coworkers.isEmpty());
+                counter.incrementAndGet();
+            });
+
+            assertEquals(3, counter.intValue());
+        } catch (VerificationException ex) {
+            assumeNoException(ex);
+        }
+    }
+
+    private static class VertexProgramQ implements VertexProgram<Object> {
+
+        private static final String VERTEX_PROGRAM_Q_CFG_PREFIX = "gremlin.vertexProgramQ";
+        private static final String MAP_KEY_CFG_KEY = VERTEX_PROGRAM_Q_CFG_PREFIX + ".source";
+        private static final String PROPERTY_CFG_KEY = VERTEX_PROGRAM_Q_CFG_PREFIX + ".property";
+        private static final String USE_TRAVERSER_REQUIREMENTS_CFG_KEY = VERTEX_PROGRAM_Q_CFG_PREFIX + ".useTraverserRequirements";
+
+        private final Set<VertexComputeKey> elementComputeKeys;
+        private Configuration configuration;
+        private String sourceKey;
+        private String propertyKey;
+        private Set<TraverserRequirement> traverserRequirements;
+
+        private VertexProgramQ() {
+            elementComputeKeys = new HashSet<>();
+        }
+
+        @Override
+        public void storeState(final Configuration config) {
+            VertexProgram.super.storeState(config);
+            if (configuration != null) {
+                ConfigurationUtils.copy(configuration, config);
+            }
+        }
+
+        @Override
+        public void loadState(final Graph graph, final Configuration config) {
+            configuration = new BaseConfiguration();
+            if (config != null) {
+                ConfigurationUtils.copy(config, configuration);
+            }
+            sourceKey = configuration.getString(MAP_KEY_CFG_KEY);
+            propertyKey = configuration.getString(PROPERTY_CFG_KEY);
+            traverserRequirements = configuration.getBoolean(USE_TRAVERSER_REQUIREMENTS_CFG_KEY, true)
+                    ? Collections.singleton(TraverserRequirement.LABELED_PATH) : Collections.emptySet();
+            elementComputeKeys.add(VertexComputeKey.of(propertyKey, false));
+        }
+
+        @Override
+        public void setup(final Memory memory) {
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            final Property<TraverserSet> haltedTraversers = vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS);
+            if (!haltedTraversers.isPresent()) return;
+            final Iterator iterator = haltedTraversers.value().iterator();
+            if (iterator.hasNext()) {
+                List<Map.Entry<Object, Long>> list = new ArrayList<>();
+                while (iterator.hasNext()) {
+                    final Traverser t = (Traverser) iterator.next();
+                    try {
+                        final Vertex source = (Vertex) t.path(sourceKey);
+                        if (!source.id().equals(vertex.id())) {
+                            final Map.Entry<Object, Long> entry = new AbstractMap.SimpleEntry<>(source.id(), t.bulk());
+                            list.add(entry);
+                        }
+                        assertFalse(traverserRequirements.isEmpty());
+                    } catch (Exception ex) {
+                        assertTrue(traverserRequirements.isEmpty());
+                        validateException(Path.Exceptions.stepWithProvidedLabelDoesNotExist(sourceKey), ex);
+                    }
+                }
+                final Map<Object, Number> map = new HashMap<>(list.size(), 1f);
+                for (Map.Entry<Object, Long> entry : list) map.put(entry.getKey(), entry.getValue());
+                vertex.property(propertyKey, map);
+            }
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            return memory.isInitialIteration();
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(final Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return elementComputeKeys;
+        }
+
+        @SuppressWarnings({"CloneDoesntDeclareCloneNotSupportedException", "CloneDoesntCallSuperClone"})
+        @Override
+        public VertexProgram<Object> clone() {
+            return this;
+        }
+
+        @Override
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.VERTEX_PROPERTIES;
+        }
+
+        @Override
+        public Set<TraverserRequirement> getTraverserRequirements() {
+            return this.traverserRequirements;
+        }
+
+        @Override
+        public Features getFeatures() {
+            return new Features() {
+                @Override
+                public boolean requiresVertexPropertyAddition() {
+                    return true;
+                }
+            };
+        }
+
+        public static Builder build() {
+            return new Builder();
+        }
+
+        static class Builder extends AbstractVertexProgramBuilder<Builder> {
+
+            private Builder() {
+                super(VertexProgramQ.class);
+            }
+
+            @SuppressWarnings("unchecked")
+            @Override
+            public VertexProgramQ create(final Graph graph) {
+                if (graph != null) {
+                    ConfigurationUtils.append(graph.configuration().subset(VERTEX_PROGRAM_Q_CFG_PREFIX), configuration);
+                }
+                return (VertexProgramQ) VertexProgram.createVertexProgram(graph, configuration);
+            }
+
+            public VertexProgramQ create() {
+                return create(null);
+            }
+
+            public Builder from(final String label) {
+                configuration.setProperty(MAP_KEY_CFG_KEY, label);
+                return this;
+            }
+
+            public Builder property(final String name) {
+                configuration.setProperty(PROPERTY_CFG_KEY, name);
+                return this;
+            }
+
+            /**
+             * This is only configurable for the purpose of testing. In a real-world VP this would be a bad pattern.
+             */
+            public Builder useTraverserRequirements(final boolean value) {
+                configuration.setProperty(USE_TRAVERSER_REQUIREMENTS_CFG_KEY, value);
+                return this;
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a33e8556/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
index 92c9483..6b06d60 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
 import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ProgramVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
@@ -70,9 +71,12 @@ public final class TranslationStrategy extends AbstractTraversalStrategy<Travers
             return;
 
         // verifications to ensure unsupported steps do not exist in the traversal
-        if (Boolean.valueOf(System.getProperty("is.testing", "false")) &&
-                (traversal.getBytecode().toString().contains("$") || traversal.getBytecode().toString().contains("HashSetSupplier")))
-            throw new VerificationException("Test suite does not support lambdas", traversal);
+        if (Boolean.valueOf(System.getProperty("is.testing", "false"))) {
+            if (traversal.getBytecode().toString().contains("$") || traversal.getBytecode().toString().contains("HashSetSupplier"))
+                throw new VerificationException("Test suite does not support lambdas", traversal);
+            if (TraversalHelper.hasStepOfAssignableClassRecursively(ProgramVertexProgramStep.class, traversal))
+                throw new VerificationException("Test suite does not support embedded vertex programs", traversal);
+        }
 
         final Traversal.Admin<?, ?> translatedTraversal;
         final Bytecode bytecode = Boolean.valueOf(System.getProperty("is.testing", "false")) ?


[07/10] tinkerpop git commit: Prepare CHANGELOG for 3.2.3 CTR

Posted by dk...@apache.org.
Prepare CHANGELOG for 3.2.3 CTR


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

Branch: refs/heads/TINKERPOP-1280
Commit: 74b4ee0810b214297b19b627ff09ef6dd22e265c
Parents: 11915f7
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Sep 12 06:31:40 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Sep 12 06:31:53 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/74b4ee08/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index c32a98c..64c2155 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -22,6 +22,12 @@ TinkerPop 3.2.0 (Nine Inch Gremlins)
 
 image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=185]
 
+[[release-3-2-3]]
+TinkerPop 3.2.3 (Release Date: NOT OFFICIALLY RELEASED YET)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* Added missing `InetAddress` to GraphSON extension module.
+
 [[release-3-2-2]]
 TinkerPop 3.2.2 (Release Date: September 6, 2016)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~