Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1278 5a778181c -> b2f42b83e
Refactored RemoteStep and RemoteStrategy again. Decided to store the traversal Bytecode in the RemoteStep. Cloning the Traversal worked, but I guess would have been bad because RemoteStep needs access to the original Traversal object so that it can eventually inject remote side-effects in there. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b2f42b83 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b2f42b83 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b2f42b83 Branch: refs/heads/TINKERPOP-1278 Commit: b2f42b83e9bec5d7f67250480df99c2bcb09e7d9 Parents: 5a77818 Author: Stephen Mallette <[email protected]> Authored: Wed Jul 20 13:41:23 2016 -0400 Committer: Stephen Mallette <[email protected]> Committed: Wed Jul 20 13:41:23 2016 -0400 ---------------------------------------------------------------------- .../gremlin/process/remote/traversal/step/map/RemoteStep.java | 5 ++++- .../remote/traversal/strategy/decoration/RemoteStrategy.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b2f42b83/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java index 651c11e..a8454ec 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java @@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.remote.traversal.step.map; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException; +import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; @@ -38,11 +39,13 @@ public final class RemoteStep<S, E> extends AbstractStep<S, E> { private transient RemoteConnection remoteConnection; private Iterator<Traverser.Admin<E>> remoteIterator; + private Bytecode bytecode; @SuppressWarnings("unchecked") public RemoteStep(final Traversal.Admin traversal, final RemoteConnection remoteConnection) { super(traversal); this.remoteConnection = remoteConnection; + this.bytecode = traversal.getBytecode(); } @Override @@ -56,7 +59,7 @@ public final class RemoteStep<S, E> extends AbstractStep<S, E> { if (null == this.remoteIterator) { try { - this.remoteIterator = this.remoteConnection.submit(this.traversal.getBytecode()); + this.remoteIterator = this.remoteConnection.submit(this.bytecode); } catch (final RemoteConnectionException sce) { throw new IllegalStateException(sce); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b2f42b83/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java index 4c9e828..20f7e80 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java @@ -87,7 +87,7 @@ public final class RemoteStrategy extends AbstractTraversalStrategy<TraversalStr throw new IllegalStateException("RemoteStrategy expects the RemoteGraph instance to have a RemoteConnection"); // remote step wraps the traversal and emits the results from the remote connection - final RemoteStep<?, ?> remoteStep = new RemoteStep<>(traversal.clone(), remoteGraph.getConnection()); + final RemoteStep<?, ?> remoteStep = new RemoteStep<>(traversal, remoteGraph.getConnection()); TraversalHelper.removeAllSteps(traversal); traversal.addStep(remoteStep);
