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/08/16 15:40:33 UTC
[45/50] tinkerpop git commit: TINKERPOP-1913 Added status attribute
access to traversal side-effects
TINKERPOP-1913 Added status attribute access to traversal side-effects
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c252e7cf
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c252e7cf
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c252e7cf
Branch: refs/heads/TINKERPOP-1913
Commit: c252e7cf25a39b4b4f7c3012927a5be1eb20e22b
Parents: a9ab821
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Mar 7 12:05:23 2018 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Aug 16 09:19:14 2018 -0400
----------------------------------------------------------------------
.../driver/remote/DriverRemoteTraversal.java | 4 +---
.../DriverRemoteTraversalSideEffects.java | 25 ++++++++++++++++++++
.../op/traversal/TraversalOpProcessor.java | 1 +
.../server/GremlinServerIntegrateTest.java | 8 ++++++-
4 files changed, 34 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c252e7cf/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversal.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversal.java
index d991f21..46d1a2b 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversal.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversal.java
@@ -66,9 +66,7 @@ public class DriverRemoteTraversal<S, E> extends AbstractRemoteTraversal<S, E> {
}
this.rs = rs;
- this.sideEffects = new DriverRemoteTraversalSideEffects(client,
- rs.getOriginalRequestMessage().getRequestId(),
- rs.getHost(), rs.allItemsAvailableAsync());
+ this.sideEffects = new DriverRemoteTraversalSideEffects(client,rs);
}
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c252e7cf/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index 791c70e..17ce082 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -22,6 +22,7 @@ import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.tinkerpop.gremlin.driver.Client;
import org.apache.tinkerpop.gremlin.driver.Host;
import org.apache.tinkerpop.gremlin.driver.Result;
+import org.apache.tinkerpop.gremlin.driver.ResultSet;
import org.apache.tinkerpop.gremlin.driver.Tokens;
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.process.remote.traversal.AbstractRemoteTraversalSideEffects;
@@ -53,13 +54,37 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
private boolean closed = false;
private boolean retrievedAllKeys = false;
private final CompletableFuture<Void> ready;
+ private final CompletableFuture<Map<String,Object>> statusAttributes;
+ /**
+ * @deprecated As of release 3.3.2, replaced by {@link #DriverRemoteTraversalSideEffects(Client, ResultSet)}
+ */
+ @Deprecated
public DriverRemoteTraversalSideEffects(final Client client, final UUID serverSideEffect, final Host host,
final CompletableFuture<Void> ready) {
this.client = client;
this.serverSideEffect = serverSideEffect;
this.host = host;
this.ready = ready;
+ this.statusAttributes = CompletableFuture.completedFuture(Collections.emptyMap());
+ }
+
+ public DriverRemoteTraversalSideEffects(final Client client, final ResultSet rs) {
+ this.client = client;
+ this.serverSideEffect = rs.getOriginalRequestMessage().getRequestId();
+ this.host = rs.getHost();
+ this.ready = rs.allItemsAvailableAsync();
+ this.statusAttributes = rs.statusAttributes();
+ }
+
+ /**
+ * Gets the status attributes from the response from the server. This method will block until all results have
+ * been retrieved.
+ */
+ public Map<String,Object> statusAttributes() {
+ // wait for the read to complete (i.e. iteration on the server) before allowing the caller to get the
+ // attribute. simply following the pattern from other methods here for now.
+ return statusAttributes.join();
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c252e7cf/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
index e5383ac..2d1af49 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
@@ -489,6 +489,7 @@ public class TraversalOpProcessor extends AbstractOpProcessor {
}
ctx.writeAndFlush(ResponseMessage.build(msg)
.code(ResponseStatusCode.NO_CONTENT)
+ .statusAttributes(generateStatusAttributes(ctx, msg, ResponseStatusCode.NO_CONTENT, itty, settings))
.create());
return;
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c252e7cf/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index f97fb1f..5990c83 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -1021,7 +1021,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
}
@Test
- public void shouldGetSideEffectKeysUsingWithRemote() throws Exception {
+ public void shouldGetSideEffectKeysAndStatusUsingWithRemote() throws Exception {
final Graph graph = EmptyGraph.instance();
final GraphTraversalSource g = graph.traversal().withRemote(conf);
g.addV("person").property("age", 20).iterate();
@@ -1029,6 +1029,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
final GraphTraversal traversal = g.V().aggregate("a").aggregate("b");
traversal.iterate();
final DriverRemoteTraversalSideEffects se = (DriverRemoteTraversalSideEffects) traversal.asAdmin().getSideEffects();
+ assertThat(se.statusAttributes().containsKey(Tokens.ARGS_HOST), is(true));
// Get keys
final Set<String> sideEffectKeys = se.keys();
@@ -1051,6 +1052,11 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
final BulkSet localBSideEffects = se.get("b");
assertThat(localBSideEffects.isEmpty(), is(false));
+
+ final GraphTraversal gdotv = g.V();
+ gdotv.toList();
+ final DriverRemoteTraversalSideEffects gdotvSe = (DriverRemoteTraversalSideEffects) gdotv.asAdmin().getSideEffects();
+ assertThat(gdotvSe.statusAttributes().containsKey(Tokens.ARGS_HOST), is(true));
}
@Test