You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/05/21 14:00:33 UTC

[01/14] tinkerpop git commit: Don't use recursive calls for streaming response [Forced Update!]

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1963 96072c7bc -> f4a7097b7 (forced update)


Don't use recursive calls for streaming response


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

Branch: refs/heads/TINKERPOP-1963
Commit: 4c8717dd4e94ec248a959911d8c11f3b45b2d7b3
Parents: 268423d
Author: davebshow <da...@gmail.com>
Authored: Mon Apr 23 16:21:48 2018 -0700
Committer: davebshow <da...@gmail.com>
Committed: Mon Apr 23 16:21:48 2018 -0700

----------------------------------------------------------------------
 .../src/main/jython/gremlin_python/driver/connection.py      | 7 +++++--
 .../src/main/jython/gremlin_python/driver/protocol.py        | 8 ++++----
 2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4c8717dd/gremlin-python/src/main/jython/gremlin_python/driver/connection.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/connection.py b/gremlin-python/src/main/jython/gremlin_python/driver/connection.py
index abc4545..bff1904 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/connection.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/connection.py
@@ -73,6 +73,9 @@ class Connection:
         return future
 
     def _receive(self):
-        data = self._transport.read()
-        self._protocol.data_received(data, self._results)
+        while True:
+            data = self._transport.read()
+            status_code = self._protocol.data_received(data, self._results)
+            if status_code != 206:
+                break
         self._pool.put_nowait(self)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4c8717dd/gremlin-python/src/main/jython/gremlin_python/driver/protocol.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/driver/protocol.py b/gremlin-python/src/main/jython/gremlin_python/driver/protocol.py
index 84a7d82..2fc7c1b 100644
--- a/gremlin-python/src/main/jython/gremlin_python/driver/protocol.py
+++ b/gremlin-python/src/main/jython/gremlin_python/driver/protocol.py
@@ -80,21 +80,21 @@ class GremlinServerWSProtocol(AbstractBaseProtocol):
                 {'sasl': base64.b64encode(auth).decode()})
             self.write(request_id, request_message)
             data = self._transport.read()
+            # Allow recursive call for auth
             self.data_received(data, results_dict)
         elif status_code == 204:
             result_set.stream.put_nowait([])
             del results_dict[request_id]
+            return status_code
         elif status_code in [200, 206]:
             results = []
             for msg in data["result"]["data"]:
                 results.append(
                     self._message_serializer.deserialize_message(msg))
             result_set.stream.put_nowait(results)
-            if status_code == 206:
-                data = self._transport.read()
-                self.data_received(data, results_dict)
-            else:
+            if status_code == 200:
                 del results_dict[request_id]
+            return status_code
         else:
             del results_dict[request_id]
             raise GremlinServerError(


[09/14] tinkerpop git commit: Minor updates to the release email template CTR

Posted by sp...@apache.org.
Minor updates to the release email template CTR


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

Branch: refs/heads/TINKERPOP-1963
Commit: 4adca20d156e0a939fa0f10edda1525cb09ea17e
Parents: 58d3d40
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 14 16:35:56 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 14 16:35:56 2018 -0400

----------------------------------------------------------------------
 docs/src/dev/developer/release.asciidoc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4adca20d/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 37aa0df..473e842 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -348,11 +348,11 @@ link:http://tinkerpop.apache.org/docs/current/upgrade/#_tinkerpop_3_1_0[here] in
 
 [source,text]
 ----
-Subject: TinkerPop xx.yy.zz Released: [name of release line]
+Subject: Apache TinkerPop xx.yy.zz Released: [name of release line]
 
 Hello,
 
-TinkerPop xx.yy.zz has just been released. [some text to introduce the release - e.g. whether or not
+Apache TinkerPop xx.yy.zz has just been released. [some text to introduce the release - e.g. whether or not
 there is breaking change, an important game-changing feature or two, etc.]
 
 The release artifacts can be found at this location:
@@ -387,7 +387,7 @@ https://www.nuget.org/packages/Gremlin.Net/xx.yy.zz
 
 Javascript artifacts are available in npm:
 
-https://www.npmjs.com/package/gremlin
+https://www.npmjs.com/package/gremlin/v/xx.yy.zz
 
 [include the release line logo image]
 ----


[05/14] tinkerpop git commit: Fixed some minor asciidoc formatting problems CTR

Posted by sp...@apache.org.
Fixed some minor asciidoc formatting problems CTR


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

Branch: refs/heads/TINKERPOP-1963
Commit: 770375d4dad8dd57b6265a464e9346f63083072c
Parents: 90e7476
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 14 11:52:03 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 14 11:52:03 2018 -0400

----------------------------------------------------------------------
 docs/src/dev/developer/release.asciidoc            | 2 +-
 docs/src/upgrade/release-3.2.x-incubating.asciidoc | 5 ++---
 2 files changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/770375d4/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 8631a74..37aa0df 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -34,7 +34,7 @@ execute.
 IMPORTANT: The following instructions assume that the release manager's <<development-environment,environment>> is setup
 properly for release and includes a `.glv` files in the various GLV modules, so that they all build in full.
 
-=== Development Versions
+== Development Versions
 
 A "development version" or "snapshot" (in Java parlance) is not an "official" release. Artifacts produced for a
 snapshot are solely for the convenience of providers and other developers who want to use the latest releases of

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/770375d4/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 b5eb3b3..112ce22 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -509,6 +509,8 @@ See: link:https://issues.apache.org/jira/browse/TINKERPOP-1599[TINKERPOP-1599]
 IMPORTANT: It is recommended that providers also review all the upgrade instructions specified for users. Many of the
 changes there may prove important for the provider's implementation.
 
+==== Graph Database Providers
+
 ===== SimplePathStep and CyclicPathStep now PathFilterStep
 
 The Gremlin traversal machine use to support two step instructions: `SimplePathStep` and `CyclicPathStep`. These have
@@ -636,14 +638,12 @@ removed.
 
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-1562[TINKERPOP-1562]
 
-
 ==== SSL Client Authentication
 
 Added new server configuration option `ssl.needClientAuth`.
 
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-1602[TINKERPOP-1602]
 
-
 === Upgrading for Providers
 
 IMPORTANT: It is recommended that providers also review all the upgrade instructions specified for users. Many of the
@@ -692,7 +692,6 @@ public void addHasContainer(final HasContainer hasContainer) {
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-1482[TINKERPOP-1482],
 link:https://issues.apache.org/jira/browse/TINKERPOP-1502[TINKERPOP-1502]
 
-
 ===== Duplicate Multi-Properties
 
 Added `supportsDuplicateMultiProperties` to `VertexFeatures` so that graph provider who only support unique values as


[04/14] tinkerpop git commit: Added more release manager docs CTR

Posted by sp...@apache.org.
Added more release manager docs CTR


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

Branch: refs/heads/TINKERPOP-1963
Commit: 90e747688a860fdcbe5ae52d025144e52c9f4f4c
Parents: cc7d2e2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 14 10:55:18 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 14 10:55:18 2018 -0400

----------------------------------------------------------------------
 .../developer/development-environment.asciidoc  | 56 ++++++++++----------
 docs/src/dev/developer/release.asciidoc         | 46 ++++++++--------
 2 files changed, 51 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/90e74768/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index 3e3edad..4dfbcaa 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -97,6 +97,8 @@ integration tests and therefore must be actively switched on with `-DskipIntegra
 [source,text]
 mvn clean install -pl gremlin-console -DskipIntegrationTests=false
 
+See the <<release-environment,Release Environment>> section for more information on release manager configurations.
+
 [[dotnet-environment]]
 === DotNet Environment
 
@@ -114,33 +116,16 @@ and `test` directories of the `gremlin-dotnet` module  which will signify to Ma
 The `.glv` file need not have any contents and is ignored by Git. A standard `mvn clean install` will then build
 `gremlin-dotnet` in full.
 
-For those who will release TinkerPop, it is also necessary to install link:http://www.mono-project.com/[Mono]. The
-release process is known to work with 5.0.1, so it is best to probably install that version. Release managers should
-probably also do an install of link:https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe[nuget 3.4.4] as it
-will help with environmental setup. To get an environment ready to deploy to NuGet, it is necessary to have a
-NuGet API key (PMC members who have NuGet accounts can help with that). The API key should be added to `NuGet.Config`
-with the following:
-
-[source,text]
-----
-mono nuget.exe setApiKey [your-api-key]
-----
-
-This should update `~/.config/NuGet/NuGet.Config` a file with an entry containing the encrypted API key. On
-`mvn deploy`, this file will be referenced on the automated `nuget push`.
-
-See release documentation for more information on configuration for release.
-
+See the <<release-environment,Release Environment>> section for more information on release manager configurations.
 
 [[nodejs-environment]]
 === JavaScript Environment
+
 When building `gremlin-javascript`, mvn command will include a local copy of Node.js runtime and npm inside your project
 using `com.github.eirslett:frontend-maven-plugin` plugin. This copy of the Node.js runtime will not affect any
 other existing Node.js runtime instances in your machine.
 
-The release manager should have the authentication token set, for more information see the Release Environment
-section below.
-
+See the <<release-environment,Release Environment>> section for more information on release manager configurations.
 
 [[release-environment]]
 === Release Environment
@@ -152,9 +137,9 @@ link:https://dist.apache.org/repos/dist/dev/tinkerpop/KEYS[development] and
 link:https://dist.apache.org/repos/dist/release/tinkerpop/KEYS[release] distribution directories and committed
 using Apache Subversion (SVN).
 
-Uploading to pypi uses link:https://pypi.python.org/pypi/twine[twine] which is automatically installed by the build
-process in maven. Twine refers to `HOME/.pypirc` file for configuration on the pypi deploy environments and username
-and password combinations. The file typically looks like this:
+For Python releases, uploading to pypi uses link:https://pypi.python.org/pypi/twine[twine] which is automatically
+installed by the build process in maven. Twine refers to `HOME/.pypirc` file for configuration on the pypi deploy
+environments and username and password combinations. The file typically looks like this:
 
 [source,text]
 ----
@@ -164,7 +149,6 @@ index-servers=
     pypitest
 
 [pypitest]
-repository = https://testpypi.python.org/pypi
 username = <username>
 password =
 
@@ -174,12 +158,30 @@ username = <username>
 password =
 ----
 
-The release manager shall use the project's pypi credentials, which are available in the PMC repository.
-The `password` should be left blank so the deployment process in Maven will prompt for it at deployment time.
+The release manager shall use the project's pypi credentials, which are available in the
+link:https://svn.apache.org/repos/private/pmc/tinkerpop[PMC SVN repository]. The `password` should be left blank so
+the deployment process in Maven will prompt for it at deployment time.
+
+For .NET releases, install link:http://www.mono-project.com/[Mono]. The release process is known to work with 5.0.1,
+so it is best to probably install that version. Release managers should probably also do an install of
+link:https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe[nuget 3.4.4] as it will help with environmental setup.
+To get an environment ready to deploy to NuGet, it is necessary to have a NuGet API key. First, create an account with
+link:https://www.nuget.org[nuget] and request that a PMC member add your account to the Gremlin.Net package in nuget
+so that you can deploy. Next, generate an API key for your account on the nuget website. The API key should be added
+to `NuGet.Config` with the following:
+
+[source,text]
+----
+mono nuget.exe setApiKey [your-api-key]
+----
+
+This should update `~/.config/NuGet/NuGet.Config` a file with an entry containing the encrypted API key. On
+`mvn deploy`, this file will be referenced on the automated `nuget push`.
 
 To deploy `gremlin-javascript` on the link:https://www.npmjs.com[npm registry], the release manager must set the
 authentication information on the ~/.npmrc file. The easiest way to do that is to use the `npm adduser` command. This
-must be done only once, as the auth token doesn't have an expiration date and it's stored on your file system.
+must be done only once, as the auth token doesn't have an expiration date and it's stored on your file system. If
+this account is newly created then request that a PMC member add your account to the "gremlin" package on npm.
 
 [[building-testing]]
 == Building and Testing

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/90e74768/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 1a7ef82..8631a74 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -27,18 +27,16 @@ feedback.  Once a release point has been identified, the following phases repres
 * Submit the official release for PMC vote.
 * Release and promote.
 
-NOTE: It might be helpful to use this document as generated from the currently release as opposed to one generate
-from a previous version or from recent `SNAPSHOT`. When using one generated for release, all the "versions" in the
-commands end up being set to the version that is being released, making cut and paste of those commands less labor
-intensive and error prone.
+IMPORTANT: During release, it is best to use the current SNAPSHOT version of this documentation to ensure that you have
+the latest updates as almost every release includes improved documentation that may involve new or revised steps to
+execute.
 
 IMPORTANT: The following instructions assume that the release manager's <<development-environment,environment>> is setup
-properly for release and includes a `.glv` file in `gremlin-python` as described in the <<python-environment,Python Environment>>
-section, so that the `gremlin-python` module builds in full.
+properly for release and includes a `.glv` files in the various GLV modules, so that they all build in full.
 
 === Development Versions
 
-A "development version" or snapshot (in Java parlance) is not an "official" release. Artifacts produced for a
+A "development version" or "snapshot" (in Java parlance) is not an "official" release. Artifacts produced for a
 snapshot are solely for the convenience of providers and other developers who want to use the latest releases of
 TinkerPop. These releases do not require a VOTE and do not require a "release manager". Any PMC member can deploy them.
 It is important to note that these releases cannot be promoted outside of the developer mailing list and should not be
@@ -51,34 +49,32 @@ For JVM-based artifacts, simply use the following command:
 [source,text]
 mvn clean deploy
 
-and artifacts will be pushed to the link:http://repository.apache.org/snapshots/[Apache Snapshot Repository]. Python
+and artifacts will be pushed to the link:http://repository.apache.org/snapshots/[Apache Snapshot Repository]. GLV
 development artifacts must be generated and deployed separately with additional commands:
 
 [source,text]
+----
 mvn clean install -Pglv-python
 mvn deploy -pl gremlin-python -Dpypi
+mvn clean install -pl :gremlin-dotnet,:gremlin-dotnet-source -Dnuget
+mvn deploy -pl :gremlin-dotnet-source -Dnuget
+mvn deploy -pl gremlin-javascript -Dnpm`
+----
+
+Python, .NET and Javascript do not use the snapshot model the JVM does, however, the build is smart in that it will
+dynamically generate a development version number for the GLV artifacts when "-SNAPSHOT" is in the `pom.xml`.
+
+If you wish to verify that `mvn deploy` works before doing it officially then:
 
-Python does not use the snapshot model the JVM does, however, the build is smart in that it will dynamically
-generate a development version number for the Python artifacts when "-SNAPSHOT" is in the `pom.xml`. The previous
-command will push the development version to link:https://pypi.python.org/pypi/gremlinpython/[pypi] for distribution.
-Use the `testpypi` test environment by updating the `gremlin-python/pom.xml` to verify the `mvn deploy` command works.
+* For Python, use the `testpypi` test environment by updating the `gremlin-python/pom.xml`.
+* For .NET, use the `staging.nuget.org` environment by updating the `gremlin-dot-source/pom.xml`
 
 IMPORTANT: The `clean` in the above commands is more important to the pypi deployment because the process will deploy
 anything found in the `target/python-packaged/dist` directory. Since the names of the artifacts are based on
 timestamps, they will not overwrite one another and multiple artifacts will get uploaded.
 
-For .NET and NuGet, development artifacts can be created as follows:
-
-[source,text]
-mvn clean install -pl :gremlin-dotnet,:gremlin-dotnet-source -Dnuget
-mvn deploy -pl :gremlin-dotnet-source -Dnuget
-
-As with PyPi, NuGet does not support a snapshot model as Java does. The commands above will dynamically generate a
-version number when "-SNAPSHOT" is in the `pom.xml`. Use the `staging.nuget.org` environment by updating the
-`gremlin-dot-source/pom.xml` to ensure the `mvn deploy` command works.
-
-IMPORTANT: These commands will dynamically edit the `gremlin-dotnet-source/Gremlin.Net.csproj`. Take care to commit
-or not commit changes related to that as necessary.
+WARNING: These commands will dynamically edit certain files in the various GLVs given automated version number changes.
+Take care to commit or not commit changes related to that as necessary.
 
 == Release Manager Requirements
 
@@ -235,6 +231,8 @@ for generating javadoc and without that the binary distributions won't contain t
 .. `mvn deploy -pl gremlin-python -DskipTests -Dpypi`
 .. `mvn deploy -pl :gremlin-dotnet-source -DskipTests -Dnuget`
 .. `mvn deploy -pl gremlin-javascript -DskipTests -Dnpm`
+. Review the GLV releases at link:https://pypi.org/project/gremlinpython/[PyPi],
+link:https://www.nuget.org/packages/Gremlin.Net/[nuget] and link:https://www.npmjs.com/package/gremlin[npm]
 . `svn co --depth empty https://dist.apache.org/repos/dist/dev/tinkerpop dev; svn up dev/xx.yy.zz`
 . `svn co --depth empty https://dist.apache.org/repos/dist/release/tinkerpop release; mkdir release/xx.yy.zz`
 . Copy release files from `dev/xx.yy.zz` to `release/xx.yy.zz`.


[12/14] tinkerpop git commit: Merge branch 'TINKERPOP-1962' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1962' into tp32

Conflicts:
	CHANGELOG.asciidoc


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

Branch: refs/heads/TINKERPOP-1963
Commit: e39837330235bf9598077707234c25ad29e77742
Parents: ae562c1 4e8b4cf
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 18 18:49:30 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 18 18:49:30 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                  |  2 +-
 .../gremlin/groovy/jsr223/GroovyTranslatorTest.java | 16 +++++++++++++---
 .../gremlin/groovy/jsr223/GroovyTranslator.java     |  6 +++++-
 3 files changed, 19 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3983733/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index b407288,c7717d7..b286dcb
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -23,8 -23,7 +23,8 @@@ image::https://raw.githubusercontent.co
  [[release-3-2-10]]
  === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
  
 +* Removed recursive handling of streaming results from Gremlin-Python driver to avoid max recursion depth errors.
- 
+ * Fixed bug in `GroovyTranslator` that didn't properly handle empty `Map` objects.
  
  [[release-3-2-9]]
  === TinkerPop 3.2.9 (Release Date: May 8, 2018)


[10/14] tinkerpop git commit: Merge branch 'TINKERPOP-1841' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1841' into tp32


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

Branch: refs/heads/TINKERPOP-1963
Commit: 699a5aa63942c49ea677d311062d05095866a7ed
Parents: 4adca20 a2feb2a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue May 15 15:41:59 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue May 15 15:41:59 2018 -0400

----------------------------------------------------------------------
 .travis.yml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------



[06/14] tinkerpop git commit: Merge branch 'TINKERPOP-1933' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1933' into tp32


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

Branch: refs/heads/TINKERPOP-1963
Commit: fa3fb9eac88ca7b7f3669b18d097f0e69e09bfaf
Parents: 770375d 4c8717d
Author: davebshow <da...@gmail.com>
Authored: Mon May 14 12:09:21 2018 -0700
Committer: davebshow <da...@gmail.com>
Committed: Mon May 14 12:09:21 2018 -0700

----------------------------------------------------------------------
 .../src/main/jython/gremlin_python/driver/connection.py      | 7 +++++--
 .../src/main/jython/gremlin_python/driver/protocol.py        | 8 ++++----
 2 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------



[08/14] tinkerpop git commit: TINKERPOP-1841 Configure python tests in travis

Posted by sp...@apache.org.
TINKERPOP-1841 Configure python tests in travis


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

Branch: refs/heads/TINKERPOP-1963
Commit: a2feb2a518d550091b5c2cbaf0ef32db18956f21
Parents: 58d3d40
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 14 15:51:57 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 14 15:51:57 2018 -0400

----------------------------------------------------------------------
 .travis.yml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a2feb2a5/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 96cfe6a..6c98950 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -29,5 +29,6 @@ jobs:
   include:
     - script: "mvn clean install -Dci --batch-mode -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
     - script: "touch gremlin-dotnet/src/.glv && touch gremlin-dotnet/test/.glv && mvn clean install -q -DskipTests && mvn verify -pl :gremlin-dotnet,:gremlin-dotnet-tests -P gremlin-dotnet -DskipIntegrationTests=false"
+    - script: "touch gremlin-python/.glv && mvn clean install -q -DskipTests && mvn verify -pl gremlin-python -DskipIntegrationTests=false"
     - script: "mvn clean install -q -DskipTests && mvn verify -pl :gremlin-javascript -DskipIntegrationTests=false"
     - script: "mvn clean install -q -DskipTests && mvn verify -pl :spark-gremlin -DskipIntegrationTests=false"


[11/14] tinkerpop git commit: Fixed some bad javadoc CTR

Posted by sp...@apache.org.
Fixed some bad javadoc CTR


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

Branch: refs/heads/TINKERPOP-1963
Commit: ae562c183eee1d708759413e8c31b5db5db07295
Parents: 699a5aa
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu May 17 15:42:06 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu May 17 15:42:06 2018 -0400

----------------------------------------------------------------------
 .../computer/traversal/TraversalVertexProgram.java | 17 +++++++++--------
 .../traversal/dsl/graph/GraphTraversal.java        |  6 +++---
 2 files changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae562c18/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 3cb4d00..8694974 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -63,6 +63,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -82,15 +83,15 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 
-
 /**
- * TraversalVertexProgram enables the evaluation of a {@link Traversal} on a {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer}.
- * At the start of the computation, each {@link Vertex} (or {@link org.apache.tinkerpop.gremlin.structure.Edge}) is assigned a single {@link Traverser}.
- * For each traverser that is local to the vertex, the vertex looks up its current location in the traversal and processes that step.
- * If the outputted traverser of the step references a local structure on the vertex (e.g. the vertex, an incident edge, its properties, or an arbitrary object),
- * then the vertex continues to compute the next traverser. If the traverser references another location in the graph,
- * then the traverser is sent to that location in the graph via a message. The messages of TraversalVertexProgram are traversers.
- * This continues until all traversers in the computation have halted.
+ * {@code TraversalVertexProgram} enables the evaluation of a {@link Traversal} on a {@link GraphComputer}.
+ * At the start of the computation, each {@link Vertex} (or {@link Edge}) is assigned a single {@link Traverser}.
+ * For each traverser that is local to the vertex, the vertex looks up its current location in the traversal and
+ * processes that step. If the outputted traverser of the step references a local structure on the vertex (e.g. the
+ * vertex, an incident edge, its properties, or an arbitrary object), then the vertex continues to compute the next
+ * traverser. If the traverser references another location in the graph, then the traverser is sent to that location
+ * in the graph via a message. The messages of TraversalVertexProgram are traversers. This continues until all
+ * traversers in the computation have halted.
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae562c18/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 222fdab..1dccead 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -2406,10 +2406,10 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     /**
-     * Executes a Peer Pressure community detection algorithm over the graph.
+     * Executes an arbitrary {@link VertexProgram} over the graph.
      *
-     * @return the traversal with the appended {@link PeerPressureVertexProgramStep}
-     * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#peerpressure-step" target="_blank">Reference Documentation - PeerPressure Step</a>
+     * @return the traversal with the appended {@link ProgramVertexProgramStep}
+     * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#program-step" target="_blank">Reference Documentation - Program Step</a>
      * @since 3.2.0-incubating
      */
     public default GraphTraversal<S, E> program(final VertexProgram<?> vertexProgram) {


[13/14] tinkerpop git commit: All glvs build on integration tests phase, but don't need to be bound to skipIntegrationTests. Much easier to just bind to skipTests. CTR

Posted by sp...@apache.org.
All glvs build on integration tests phase, but don't need to be bound to skipIntegrationTests. Much easier to just bind to skipTests. CTR


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

Branch: refs/heads/TINKERPOP-1963
Commit: 7c696076dd8c20eda465869ef8f275bbf5c976bc
Parents: e398373
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 21 09:20:30 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 09:20:30 2018 -0400

----------------------------------------------------------------------
 .travis.yml                | 6 +++---
 gremlin-javascript/pom.xml | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c696076/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 6c98950..1c15c15 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,7 +28,7 @@ before_install:
 jobs:
   include:
     - script: "mvn clean install -Dci --batch-mode -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
-    - script: "touch gremlin-dotnet/src/.glv && touch gremlin-dotnet/test/.glv && mvn clean install -q -DskipTests && mvn verify -pl :gremlin-dotnet,:gremlin-dotnet-tests -P gremlin-dotnet -DskipIntegrationTests=false"
-    - script: "touch gremlin-python/.glv && mvn clean install -q -DskipTests && mvn verify -pl gremlin-python -DskipIntegrationTests=false"
-    - script: "mvn clean install -q -DskipTests && mvn verify -pl :gremlin-javascript -DskipIntegrationTests=false"
+    - script: "touch gremlin-dotnet/src/.glv && touch gremlin-dotnet/test/.glv && mvn clean install -q -DskipTests && mvn verify -pl :gremlin-dotnet,:gremlin-dotnet-tests -P gremlin-dotnet"
+    - script: "touch gremlin-python/.glv && mvn clean install -q -DskipTests && mvn verify -pl gremlin-python"
+    - script: "mvn clean install -q -DskipTests && mvn verify -pl :gremlin-javascript"
     - script: "mvn clean install -q -DskipTests && mvn verify -pl :spark-gremlin -DskipIntegrationTests=false"

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c696076/gremlin-javascript/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-javascript/pom.xml b/gremlin-javascript/pom.xml
index 4736576..a820f3b 100644
--- a/gremlin-javascript/pom.xml
+++ b/gremlin-javascript/pom.xml
@@ -212,7 +212,7 @@ limitations under the License.
                     </execution>
                 </executions>
                 <configuration>
-                    <skip>${skipIntegrationTests}</skip>
+                    <skip>${skipTests}</skip>
                     <workingDirectory>src/main/javascript/gremlin-javascript</workingDirectory>
                     <nodeVersion>v6.12.3</nodeVersion>
                 </configuration>


[03/14] tinkerpop git commit: Polish up the release docs a bit for 3.2.x

Posted by sp...@apache.org.
Polish up the release docs a bit for 3.2.x

Not sure why we kinda let those docs die a bit. I think that maybe I figured that we'd always use the /current docs for release but that's not realistic. We probably should try to keep release docs stable to the version being released. CTR


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

Branch: refs/heads/TINKERPOP-1963
Commit: cc7d2e24e1fcac3adfb34fe9b0429458e22f4ad1
Parents: 288b455
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon May 14 08:51:44 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 14 09:01:09 2018 -0400

----------------------------------------------------------------------
 docs/src/dev/developer/release.asciidoc | 59 +++++++++++++++++-----------
 1 file changed, 36 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc7d2e24/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 608bb31..1a7ef82 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -180,22 +180,30 @@ formatted properly - the easiest way to is to view the `CHANGELOG.asciidoc` to b
 GitHub viewer.
 .. Generate the JIRA release notes report for the current version and append them to the `CHANGELOG.asciidoc`.
 ... Use an "advanced" search to filter out JIRA issues already released on other versions. For example:
-`project = TINKERPOP and status = Closed AND fixVersion = 3.2.0 AND fixVersion not in (3.1.3, 3.1.2, 3.1.1, 3.1.0) ORDER BY type, Id ASC`.
+`project = TINKERPOP and status = Closed AND fixVersion = 3.2.0 ORDER BY type, Id ASC`.
 ... Consider use of an "Excel" export to organize and prepare the JIRA tickets to be pasted to `CHANGELOG.asciidoc`.
 This formula can help construct each line item for the CHANGELOG if column `A` is the issue number, `B` is the
 issue title and `D` is the label field: `="* "&A2&" "&B2&(IF(D2="breaking"," \*(breaking)*",""))`
 ... Be sure to include a link to other versions in the `CHANGELOG.asciidoc` that were previously released while the
 current release was under development as this new release will have those changes included within it. Please see
 3.2.1 for an example.
-.. Format "breaking" changes to be clearly marked (use JIRA and the "breaking" label to identify those)
+.. Format "breaking" changes to be clearly marked (use JIRA and the "breaking" label to identify those - already accounted for if using the suggested formula above)
 . Update "upgrade documentation":
 .. Update the release date.
 .. Update the link to `CHANGELOG.asciidoc` - this link may already be correct but will not exist until the repository is tagged.
+. Update homepage with references in `/site` to latest distribution and to other internal links elsewhere on the page.
+.. This step should only be performed by the release manager for the newest line of code (i.e. if release 3.3.x, 3.2.x and 3.1.x,
+then only do this step for 3.3.x (tp33 branch), and update the site for all releases).
+.. Update the `template/header-footer.html`.
+.. Update `index.html`.
+.. Update link:http://tinkerpop.apache.org/downloads.html[Downloads] page, when moving "Current Releases" to "Archived
+Releases" recall that the hyperlink must change to point to version in the link:https://archive.apache.org/dist/tinkerpop/[Apache Archives].
+.. Preview changes locally with `bin/generate-home.sh` then commit changes to git.
 . `mvn versions:set -DnewVersion=xx.yy.zz -DgenerateBackupPoms=false` to update project files to reference the non-SNAPSHOT version
 . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-standalone/bin/gremlin.sh gremlin.sh; popd`
 . `git diff` and review the updated files
 . `mvn clean install` - need to build first so that the right version of the console is used with `bin/publish-docs.sh`
-.. This step should update the Gremlin.Net project file with the newly bumped version.
+.. This step should update the Gremlin.Net project file and Gremlin Javascript package file with the newly bumped version.
 . `git commit -a -m "TinkerPop xx.yy.zz release"` and push
 . `bin/process-docs.sh` and validate the generated documentation locally. Don't rely on "BUILD SUCCESS" - scroll up through logs to ensure there were no errors and view the HTML directly. Code blocks that did not execute properly have a gray background and do not show the results of the commands.
 . `bin/publish-docs.sh <username>` - Note that this step requires no additional processing as the previous step handled
@@ -209,26 +217,12 @@ for generating javadoc and without that the binary distributions won't contain t
 .. `cp ~/.m2/repository/org/apache/tinkerpop/gremlin-console/xx.yy.zz/gremlin-console-xx.yy.zz-distribution.zip* dev/xx.yy.zz`
 .. `cp ~/.m2/repository/org/apache/tinkerpop/gremlin-server/xx.yy.zz/gremlin-server-xx.yy.zz-distribution.zip* dev/xx.yy.zz`
 .. `cp ~/.m2/repository/org/apache/tinkerpop/tinkerpop/xx.yy.zz/tinkerpop-xx.yy.zz-source-release.zip* dev/xx.yy.zz`
-.. `rm -f dev/*.md5
+.. `rm -f dev/*.md5`
 .. `cd dev/xx.yy.zz`
 .. pass:[<code>ls * | xargs -n1 -I {} echo "mv apache-tinkerpop-{} {}" | sed -e 's/distribution/bin/' -e 's/source-release/src/' -e 's/tinkerpop-tinkerpop/tinkerpop/' -e s'/^\(.*\) \(.*\) \(.*\)$/\1 \3 \2/' | /bin/bash</code>]
 .. `cd ..; svn add xx.yy.zz/; svn ci -m "TinkerPop xx.yy.zz release"`
 . Execute `bin/validate-distribution.sh` and any other relevant testing.
 . `git tag -a -m "TinkerPop xx.yy.zz release" xx.yy.zz` and `git push --tags`
-. Perform JIRA administration tasks:
-.. "Release" the current version and set the "release date"
-.. If there is to be a follow on release in the current line of code, create that new version specifying the "start date"
-. Prepare Git administration tasks. Note that this work can be performed at the release manager's discretion. It may be wise to wait until a successful VOTE is eminent before reopening development. Apply the following steps as needed per release branch:
-.. Make the appropriate branching changes as required by the release and bump the version to `SNAPSHOT` with
-`mvn versions:set -DnewVersion=xx.yy.zz-SNAPSHOT -DgenerateBackupPoms=false`.
-.. `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-SNAPSHOT-standalone/bin/gremlin.sh gremlin.sh; popd`
-.. Update CHANGELOG and upgrade docs to have the appropriate headers for the next version.
-.. `mvn clean install -DskipTests` - need to build first so that the right version of the console is used with `bin/publish-docs.sh`
-.. `mvn deploy -DskipTests` - deploy the new `SNAPSHOT`
-.. `bin/process-docs.sh` and validate the generated `SNAPSHOT` documentation locally and then `bin/publish-docs.sh <username>`
-.. Commit and push the `SNAPSHOT` changes to git
-.. Send email to advise that code freeze is lifted.
-.. Generate a list of dead branches that will be automatically deleted and post them as a DISCUSS thread for review, then once consensus is reached removed those branches.
 . Submit for `[VOTE]` at `dev@tinkerpop.apache.org` (see email template below)
 . *Wait for vote acceptance* (72 hours)
 
@@ -248,11 +242,7 @@ for generating javadoc and without that the binary distributions won't contain t
 . Wait for Apache Sonatype to sync the artifacts to Maven Central at (link:http://repo1.maven.org/maven2/org/apache/tinkerpop/tinkerpop/[http://repo1.maven.org/maven2/org/apache/tinkerpop/tinkerpop/]).
 . Report the release through link:https://reporter.apache.org/addrelease.html?tinkerpop[reporter.apache.org] (an email reminder should arrive shortly following the svn command above to do the release)
 . Wait for zip distributions to to sync to the Apache mirrors (i.e ensure the download links work from a mirror).
-. Update home page site with references to latest distribution - specifically:
-.. Update the `template/header-footer.html`.
-.. Update `index.html`.
-.. Update link:http://tinkerpop.apache.org/downloads.html[Downloads] page, when moving "Current Releases" to "Archived
-Releases" recall that the hyperlink must change to point to version in the link:https://archive.apache.org/dist/tinkerpop/[Apache Archives].
+. `bin/publish-home.sh <username>` to publish the updated web site with new releases.
 . Execute `bin/update-current-docs.sh` to migrate to the latest documentation set for `/current`.
 . This step should only occur after the website is updated and all links are working. If there are releases present in
 SVN that represents lines of code that are no longer under development, then remove those releases. In other words,
@@ -260,6 +250,29 @@ if `3.2.0` is present and `3.2.1` is released then remove `3.2.0`.  However, if
 code is still under potential development, it may stay.
 . Announce release on `dev@`/`gremlin-users@` mailing lists and tweet from `@apachetinkerpop`
 
+== Post-release Tasks
+
+A number of administration tasks should be taken care of after release is public. Some of these items can be performed
+during the VOTE period at the release manager's discretion, though it may be wise to wait until a successful VOTE is
+eminent before reopening development. When there are multiple release managers, it's best to coordinate these tasks
+as one individual may simply just handle them all.
+
+. Perform JIRA administration tasks:
+.. "Release" the current version and set the "release date"
+.. If there is to be a follow on release in the current line of code, create that new version specifying the "start date"
+. Prepare Git administration tasks. Apply the following steps as needed per release branch:
+.. Make the appropriate branching changes as required by the release and bump the version to `SNAPSHOT` with
+`mvn versions:set -DnewVersion=xx.yy.zz-SNAPSHOT -DgenerateBackupPoms=false`.
+.. `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-SNAPSHOT-standalone/bin/gremlin.sh gremlin.sh; popd`
+.. Update CHANGELOG and upgrade docs to have the appropriate headers for the next version.
+.. `mvn clean install -DskipTests` - need to build first so that the right version of the console is used with `bin/publish-docs.sh`
+.. `mvn deploy -DskipTests` - deploy the new `SNAPSHOT`
+.. `bin/process-docs.sh` and validate the generated `SNAPSHOT` documentation locally and then `bin/publish-docs.sh <username>`
+.. Commit and push the `SNAPSHOT` changes to git
+. Send email to advise that code freeze is lifted.
+. Generate a list of dead branches that will be automatically deleted and post them as a DISCUSS thread for review,
+then once consensus is reached removed those branches.
+
 == Email Templates
 
 === Release VOTE


[14/14] tinkerpop git commit: TINKERPOP-1963 Fixed branch() problems with reducing steps as options

Posted by sp...@apache.org.
TINKERPOP-1963 Fixed branch() problems with reducing steps as options


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

Branch: refs/heads/TINKERPOP-1963
Commit: f4a7097b7d8c0d0227de9a5950a1568ec561e5c8
Parents: 7c69607
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed May 9 17:52:32 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon May 21 10:00:18 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../traversal/step/branch/BranchStep.java       | 42 +++++++++++++++++---
 .../step/util/ReducingBarrierStep.java          |  1 -
 .../step/branch/GroovyChooseTest.groovy         | 11 +++++
 gremlin-test/features/branch/Choose.feature     | 27 +++++++++++++
 .../traversal/step/branch/ChooseTest.java       | 35 ++++++++++++++++
 6 files changed, 110 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a7097b/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b286dcb..0008a1a 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-10]]
 === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Fixed bug in `branch()` where reducing steps as options would produce incorrect results.
 * Removed recursive handling of streaming results from Gremlin-Python driver to avoid max recursion depth errors.
 * Fixed bug in `GroovyTranslator` that didn't properly handle empty `Map` objects.
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a7097b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
index 778722d..0b1a059 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
@@ -22,7 +22,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -62,7 +64,13 @@ public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements Trav
             this.traversalOptions.get(pickToken).add(traversalOption);
         else
             this.traversalOptions.put(pickToken, new ArrayList<>(Collections.singletonList(traversalOption)));
+
+        // adding an IdentityStep acts as a placeholder when reducing barriers get in the way - see the
+        // standardAlgorithm() method for more information.
+        if (TraversalHelper.hasStepOfAssignableClass(ReducingBarrierStep.class, traversalOption))
+            traversalOption.addStep(0, new IdentityStep(traversalOption));
         traversalOption.addStep(new EndStep(traversalOption));
+
         if (!this.hasBarrier && !TraversalHelper.getStepsOfAssignableClassRecursively(Barrier.class, traversalOption).isEmpty())
             this.hasBarrier = true;
         this.integrateChild(traversalOption);
@@ -89,32 +97,54 @@ public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements Trav
     protected Iterator<Traverser.Admin<E>> standardAlgorithm() {
         while (true) {
             if (!this.first) {
+                // this block is ignored on the first pass through the while(true) giving the opportunity for
+                // the traversalOptions to be prepared. Iterate all of them and simply return the ones that yield
+                // results. applyCurrentTraverser() will have only injected the current traverser into the options
+                // that met the choice requirements.  Note that in addGlobalChildOption an IdentityStep was added to
+                // be a holder for that current traverser. That allows us to check that first step for an injected
+                // traverser as part of the condition for using that traversal option in the output. This is necessary
+                // because barriers like fold(), max(), etc. will always return true for hasNext() even if a traverser
+                // was not seeded in applyCurrentTraverser().
                 for (final List<Traversal.Admin<S, E>> options : this.traversalOptions.values()) {
                     for (final Traversal.Admin<S, E> option : options) {
-                        if (option.hasNext())
+                        if (option.getStartStep().hasNext() && option.hasNext())
                             return option.getEndStep();
                     }
                 }
             }
+
             this.first = false;
-            ///
+
+            // pass the current traverser to applyCurrentTraverser() which will make the "choice" of traversal to
+            // apply with the given traverser. as this is in a while(true) this phase essentially prepares the options
+            // for execution above
             if (this.hasBarrier) {
                 if (!this.starts.hasNext())
                     throw FastNoSuchElementException.instance();
                 while (this.starts.hasNext()) {
-                    this.handleStart(this.starts.next());
+                    this.applyCurrentTraverser(this.starts.next());
                 }
             } else {
-                this.handleStart(this.starts.next());
+                this.applyCurrentTraverser(this.starts.next());
             }
         }
     }
 
-    private final void handleStart(final Traverser.Admin<S> start) {
+    /**
+     * Choose the right traversal option to apply and seed those options with this traverser.
+     */
+    private void applyCurrentTraverser(final Traverser.Admin<S> start) {
+        // first get the value of the choice based on the current traverser and use that to select the right traversal
+        // option to which that traverser should be routed
         final M choice = TraversalUtil.apply(start, this.branchTraversal);
-        final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
+        final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ?
+                this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
+
+        // if a branch is identified, then split the traverser and add it to the start of the option so that when
+        // that option is iterated (in the calling method) that value can be applied.
         if (null != branch)
             branch.forEach(traversal -> traversal.addStart(start.split()));
+
         if (choice != Pick.any) {
             final List<Traversal.Admin<S, E>> anyBranch = this.traversalOptions.get(Pick.any);
             if (null != anyBranch)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a7097b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
index 3b2823c..62e12f8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
@@ -32,7 +32,6 @@ import java.util.function.Supplier;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-
 public abstract class ReducingBarrierStep<S, E> extends AbstractStep<S, E> implements Barrier<E>, Generating<E, E> {
 
     protected Supplier<E> seedSupplier;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a7097b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
index 802c427..b3e9955 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
@@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
 public abstract class GroovyChooseTest {
 
     public static class Traversals extends ChooseTest {
+
         @Override
         public Traversal<Vertex, Object> get_g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX() {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())")
@@ -63,5 +64,15 @@ public abstract class GroovyChooseTest {
         public Traversal<Vertex, Map<String, String>> get_g_V_hasLabelXpersonX_asXp1X_chooseXoutEXknowsX__outXknowsXX_asXp2X_selectXp1_p2X_byXnameX() {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').as('p1').choose(outE('knows'), out('knows')).as('p2').select('p1', 'p2').by('name')");
         }
+
+        @Override
+        public Traversal<Integer, List<Integer>> get_g_injectX1X_chooseXisX1X__constantX10Xfold__foldX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.inject(1).choose(__.is(1), __.constant(10).fold(), __.fold())")
+        }
+
+        @Override
+        public Traversal<Integer, List<Integer>> get_g_injectX2X_chooseXisX1X__constantX10Xfold__foldX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.inject(2).choose(__.is(1), __.constant(10).fold(), __.fold())")
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a7097b/gremlin-test/features/branch/Choose.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Choose.feature b/gremlin-test/features/branch/Choose.feature
index aa5a545..225e40c 100644
--- a/gremlin-test/features/branch/Choose.feature
+++ b/gremlin-test/features/branch/Choose.feature
@@ -122,3 +122,30 @@ Feature: Step - choose()
       | m[{"p1":"vadas", "p2":"vadas"}] |
       | m[{"p1":"josh", "p2":"josh"}] |
       | m[{"p1":"peter", "p2":"peter"}] |
+
+  Scenario: g_injectX1X_chooseXisX1X__constantX10Xfold__foldX
+    Given the empty graph
+    And using the parameter d10 defined as "d[10].i"
+    And using the parameter d1 defined as "d[1].i"
+    And the traversal of
+      """
+      g.inject(d1).choose(__.is(d1), __.constant(d10).fold(), __.fold())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[10].i] |
+
+  Scenario: g_injectX2X_chooseXisX1X__constantX10Xfold__foldX
+    Given the empty graph
+    And using the parameter d10 defined as "d[10].i"
+    And using the parameter d1 defined as "d[1].i"
+    And using the parameter d2 defined as "d[2].i"
+    And the traversal of
+      """
+      g.inject(d2).choose(__.is(d1), __.constant(d10).fold(), __.fold())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[d[2].i] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4a7097b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java
index e59d659..6da38a7 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -30,7 +31,9 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
@@ -42,6 +45,8 @@ import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.valueMap;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 
@@ -64,6 +69,10 @@ public abstract class ChooseTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Map<String, String>> get_g_V_hasLabelXpersonX_asXp1X_chooseXoutEXknowsX__outXknowsXX_asXp2X_selectXp1_p2X_byXnameX();
 
+    public abstract Traversal<Integer, List<Integer>> get_g_injectX1X_chooseXisX1X__constantX10Xfold__foldX();
+
+    public abstract Traversal<Integer, List<Integer>> get_g_injectX2X_chooseXisX1X__constantX10Xfold__foldX();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX() {
@@ -128,6 +137,22 @@ public abstract class ChooseTest extends AbstractGremlinProcessTest {
         ), traversal);
     }
 
+    @Test
+    public void g_injectX1X_chooseXisX1X__constantX10Xfold__foldX() {
+        final Traversal<Integer, List<Integer>> traversal = get_g_injectX1X_chooseXisX1X__constantX10Xfold__foldX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.singletonList(10), traversal.next());
+        assertThat(traversal.hasNext(), is(false));
+    }
+
+    @Test
+    public void g_injectX2X_chooseXisX1X__constantX10Xfold__foldX() {
+        final Traversal<Integer, List<Integer>> traversal = get_g_injectX2X_chooseXisX1X__constantX10Xfold__foldX();
+        printTraversalForm(traversal);
+        assertEquals(Collections.singletonList(2), traversal.next());
+        assertThat(traversal.hasNext(), is(false));
+    }
+
     public static class Traversals extends ChooseTest {
 
         @Override
@@ -164,5 +189,15 @@ public abstract class ChooseTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Map<String, String>> get_g_V_hasLabelXpersonX_asXp1X_chooseXoutEXknowsX__outXknowsXX_asXp2X_selectXp1_p2X_byXnameX() {
             return g.V().hasLabel("person").as("p1").choose(outE("knows"), out("knows")).as("p2").<String>select("p1", "p2").by("name");
         }
+
+        @Override
+        public Traversal<Integer, List<Integer>> get_g_injectX1X_chooseXisX1X__constantX10Xfold__foldX() {
+            return g.inject(1).choose(__.is(1), __.constant(10).fold(), __.fold());
+        }
+
+        @Override
+        public Traversal<Integer, List<Integer>> get_g_injectX2X_chooseXisX1X__constantX10Xfold__foldX() {
+            return g.inject(2).choose(__.is(1), __.constant(10).fold(), __.fold());
+        }
     }
 }
\ No newline at end of file


[07/14] tinkerpop git commit: CTR changelog entry for TINKERPOP-1933

Posted by sp...@apache.org.
CTR changelog entry for TINKERPOP-1933


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

Branch: refs/heads/TINKERPOP-1963
Commit: 58d3d403f09d09651828fe216a58cc1e8c624797
Parents: fa3fb9e
Author: davebshow <da...@gmail.com>
Authored: Mon May 14 12:42:49 2018 -0700
Committer: davebshow <da...@gmail.com>
Committed: Mon May 14 12:42:49 2018 -0700

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/58d3d403/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 41d83c4..b407288 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,8 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-10]]
 === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Removed recursive handling of streaming results from Gremlin-Python driver to avoid max recursion depth errors.
+
 
 [[release-3-2-9]]
 === TinkerPop 3.2.9 (Release Date: May 8, 2018)


[02/14] tinkerpop git commit: TINKERPOP-1962 GroovyTranslator handles empty maps properly now.

Posted by sp...@apache.org.
TINKERPOP-1962 GroovyTranslator handles empty maps properly now.


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

Branch: refs/heads/TINKERPOP-1963
Commit: 4e8b4cff058298d0cb43be1402a14d77f22a53ac
Parents: 288b455
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed May 9 09:16:45 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sun May 13 11:24:02 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                  |  1 +
 .../gremlin/groovy/jsr223/GroovyTranslatorTest.java | 16 +++++++++++++---
 .../gremlin/groovy/jsr223/GroovyTranslator.java     |  6 +++++-
 3 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4e8b4cff/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 41d83c4..c7717d7 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-10]]
 === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Fixed bug in `GroovyTranslator` that didn't properly handle empty `Map` objects.
 
 [[release-3-2-9]]
 === TinkerPop 3.2.9 (Release Date: May 8, 2018)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4e8b4cff/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java
index 08451a4..56f9699 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java
@@ -38,9 +38,11 @@ import javax.script.Bindings;
 import javax.script.SimpleBindings;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.function.Function;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -119,12 +121,20 @@ public class GroovyTranslatorTest extends AbstractGremlinTest {
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
     public void shouldHandleMaps() {
-        GraphTraversalSource g = graph.traversal();
-        String script = GroovyTranslator.of("g").translate(g.V().id().is(new LinkedHashMap() {{
+        final GraphTraversalSource g = graph.traversal();
+        final String script = GroovyTranslator.of("g").translate(g.V().id().is(new LinkedHashMap<Object,Object>() {{
             put(3, "32");
             put(Arrays.asList(1, 2, 3.1d), 4);
         }}).asAdmin().getBytecode());
-        assertEquals(script, "g.V().id().is([((int) 3):(\"32\"),([(int) 1, (int) 2, 3.1d]):((int) 4)])");
+        assertEquals("g.V().id().is([((int) 3):(\"32\"),([(int) 1, (int) 2, 3.1d]):((int) 4)])", script);
+    }
+
+    @Test
+    public void shouldHandleEmptyMaps() {
+        final Function identity = new Lambda.OneArgLambda("it.get()", "gremlin-groovy");
+        final GraphTraversalSource g = graph.traversal();
+        final String script = GroovyTranslator.of("g").translate(g.inject(Collections.emptyMap()).map(identity).asAdmin().getBytecode());
+        assertEquals("g.inject([]).map({it.get()})", script);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4e8b4cff/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
index b6410ec..6e86ce9 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
@@ -137,7 +137,11 @@ public final class GroovyTranslator implements Translator.ScriptTranslator {
                         append(convertToString(entry.getValue())).
                         append("),");
             }
-            map.deleteCharAt(map.length() - 1);
+
+            // only need to remove this last bit if entries were added
+            if (!((Map<?, ?>) object).isEmpty())
+                map.deleteCharAt(map.length() - 1);
+
             return map.append("]").toString();
         } else if (object instanceof Long)
             return object + "L";