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 2016/03/07 17:42:12 UTC
[2/4] incubator-tinkerpop git commit: Compile the traversal on the
server first before trying to get Traversers.
Compile the traversal on the server first before trying to get Traversers.
Without compiling, the Traversal returns no Traversers.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/9131c4d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/9131c4d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/9131c4d2
Branch: refs/heads/TINKERPOP-575
Commit: 9131c4d212da1000e50cd878c5d9899f16b0ea1a
Parents: e88e9e5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Mar 7 09:32:28 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Mar 7 09:32:28 2016 -0500
----------------------------------------------------------------------
.../op/traversal/TraversalOpProcessor.java | 27 +++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9131c4d2/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 3d50b26..4036d55 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
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.server.Context;
import org.apache.tinkerpop.gremlin.server.GraphManager;
import org.apache.tinkerpop.gremlin.server.OpProcessor;
@@ -38,6 +39,7 @@ import org.apache.tinkerpop.gremlin.util.function.ThrowingConsumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Iterator;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeoutException;
@@ -142,7 +144,11 @@ public class TraversalOpProcessor extends AbstractOpProcessor {
if (supportsTransactions && graph.tx().isOpen()) graph.tx().rollback();
try {
- handleIterator(context, traversal);
+ // compile the traversal - without it getEndStep() has nothing in it
+ traversal.hasNext();
+
+ final Iterator<Traverser> itty = new DetachingIterator(traversal.asAdmin().getEndStep());
+ handleIterator(context, itty);
} catch (TimeoutException ex) {
final String errorMessage = String.format("Response iteration exceeded the configured threshold for request [%s] - %s", msg.getRequestId(), ex.getMessage());
logger.warn(errorMessage);
@@ -169,4 +175,23 @@ public class TraversalOpProcessor extends AbstractOpProcessor {
ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR).statusMessage(ex.getMessage()).create());
}
}
+
+ static class DetachingIterator implements Iterator<Traverser> {
+
+ private Iterator<Traverser> inner;
+
+ public DetachingIterator(final Iterator<Traverser> toDetach) {
+ inner = toDetach;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return inner.hasNext();
+ }
+
+ @Override
+ public Traverser next() {
+ return inner.next().asAdmin().detach();
+ }
+ }
}