You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/05/22 15:29:05 UTC

incubator-tinkerpop git commit: Fix bug in driver where NO_CONTENT was not being handled properly.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 91df79294 -> e8597650b


Fix bug in driver where NO_CONTENT was not being handled properly.

This bug was introduced back when the protocol for Gremlin Server changed and the NO_CONTENT status code was introduced.  NO_CONTENT is a success code but was being treated as an error code.


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

Branch: refs/heads/master
Commit: e8597650be5a077cb8a1b18fd7bf97ae95d9c026
Parents: 91df792
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 22 09:27:55 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 22 09:27:55 2015 -0400

----------------------------------------------------------------------
 .../org/apache/tinkerpop/gremlin/driver/Handler.java     |  8 +++++---
 .../gremlin/server/GremlinDriverIntegrateTest.java       | 11 +++++++++++
 2 files changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e8597650/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
index 5489a61..8b721ae 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
@@ -50,8 +50,8 @@ class Handler {
         @Override
         protected void channelRead0(final ChannelHandlerContext channelHandlerContext, final ResponseMessage response) throws Exception {
             try {
-                if (response.getStatus().getCode() == ResponseStatusCode.SUCCESS ||
-                        response.getStatus().getCode() == ResponseStatusCode.PARTIAL_CONTENT) {
+                final ResponseStatusCode statusCode = response.getStatus().getCode();
+                if (statusCode == ResponseStatusCode.SUCCESS || statusCode == ResponseStatusCode.PARTIAL_CONTENT) {
                     final Object data = response.getResult().getData();
                     if (data instanceof List) {
                         // unrolls the collection into individual results to be handled by the queue.
@@ -63,7 +63,9 @@ class Handler {
                         pending.get(response.getRequestId()).add(new Result(response.getResult().getData()));
                     }
                 } else {
-                    pending.get(response.getRequestId()).markError(new ResponseException(response.getStatus().getCode(), response.getStatus().getMessage()));
+                    // this is a "success" but represents no results otherwise it is an error
+                    if (statusCode != ResponseStatusCode.NO_CONTENT)
+                        pending.get(response.getRequestId()).markError(new ResponseException(response.getStatus().getCode(), response.getStatus().getMessage()));
                 }
 
                 // as this is a non-PARTIAL_CONTENT code - the stream is done

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e8597650/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 4f4ebab..579376c 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
@@ -187,6 +187,17 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
+    public void shouldHandleEmptyResult() throws Exception {
+        final Cluster cluster = Cluster.open();
+        final Client client = cluster.connect();
+
+        final ResultSet results = client.submit("g.V(100,1000,1000)");
+        assertEquals(0, results.all().get().size());
+
+        cluster.close();
+    }
+
+    @Test
     public void shouldCloseWithServerDown() throws Exception {
         final Cluster cluster = Cluster.open();
         cluster.connect();