minor tweaks to TraverserVertexProgram to make it more efficient.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/a6aacdc5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/a6aacdc5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/a6aacdc5 Branch: refs/heads/TINKERPOP-1308 Commit: a6aacdc51eba895e04f9d75d64343470fbaca5c5 Parents: 07e1299 Author: Marko A. Rodriguez <[email protected]> Authored: Wed May 18 17:11:26 2016 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Wed May 18 17:11:26 2016 -0600 ---------------------------------------------------------------------- .../process/computer/traversal/TraversalVertexProgram.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a6aacdc5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java index 211a5e5..aba44d3 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java @@ -196,19 +196,18 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet< public void setup(final Memory memory) { // memory is local MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, MemoryTraversalSideEffects.State.SETUP); - final MemoryTraversalSideEffects sideEffects = ((MemoryTraversalSideEffects) this.traversal.get().getSideEffects()); - sideEffects.storeSideEffectsInMemory(); + ((MemoryTraversalSideEffects) this.traversal.get().getSideEffects()).storeSideEffectsInMemory(); memory.set(VOTE_TO_HALT, true); memory.set(MUTATED_MEMORY_KEYS, new HashSet<>()); memory.set(COMPLETED_BARRIERS, new HashSet<>()); // if halted traversers are being sent from a previous VertexProgram in an OLAP chain (non-distributed traversers), get them into the stream - if (null != this.haltedTraversers) { + if (null != this.haltedTraversers && !this.haltedTraversers.isEmpty()) { final TraverserSet<Object> toProcessTraversers = new TraverserSet<>(); IteratorUtils.removeOnNext(this.haltedTraversers.iterator()).forEachRemaining(traverser -> { traverser.setStepId(this.traversal.get().getStartStep().getId()); toProcessTraversers.add(traverser); }); - assert haltedTraversers.isEmpty(); // TODO: this should be empty + assert haltedTraversers.isEmpty(); final TraverserSet<Object> remoteActiveTraversers = new TraverserSet<>(); MasterExecutor.processTraversers(this.traversal, this.traversalMatrix, toProcessTraversers, remoteActiveTraversers, this.haltedTraversers); memory.set(HALTED_TRAVERSERS, this.haltedTraversers); @@ -217,6 +216,8 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet< memory.set(HALTED_TRAVERSERS, new TraverserSet<>()); memory.set(ACTIVE_TRAVERSERS, new TraverserSet<>()); } + // local variable will no longer be used so null it for GC + this.haltedTraversers = null; } @Override
