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

Reply via email to