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();