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/12/08 14:21:37 UTC

tinkerpop git commit: Minor fix to iteration completion logic

Repository: tinkerpop
Updated Branches:
  refs/heads/tp32 595cf3b7d -> 966df9892


Minor fix to iteration completion logic

Had to store the value of hasNext() as some graphs may open a new transaction on such calls and leave it hanging. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/966df989
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/966df989
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/966df989

Branch: refs/heads/tp32
Commit: 966df98921e42a2918ea9f676ac2ad3a3027d64f
Parents: 595cf3b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Dec 8 09:18:56 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Dec 8 09:21:24 2016 -0500

----------------------------------------------------------------------
 .../tinkerpop/gremlin/server/op/AbstractOpProcessor.java    | 9 +++++++--
 .../gremlin/server/op/traversal/TraversalOpProcessor.java   | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/966df989/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
index 5482de1..c3ac475 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
@@ -154,9 +154,14 @@ public abstract class AbstractOpProcessor implements OpProcessor {
                         break;
                     }
 
+                    // track whether there is anything left in the iterator because it needs to be accessed after
+                    // the transaction could be closed - in that case a call to hasNext() could open a new transaction
+                    // unintentionally
+                    final boolean moreInIterator = itty.hasNext();
+
                     try {
                         // only need to reset the aggregation list if there's more stuff to write
-                        if (itty.hasNext())
+                        if (moreInIterator)
                             aggregate = new ArrayList<>(resultIterationBatchSize);
                         else {
                             // iteration and serialization are both complete which means this finished successfully. note that
@@ -179,7 +184,7 @@ public abstract class AbstractOpProcessor implements OpProcessor {
                         throw ex;
                     }
 
-                    if (!itty.hasNext()) iterateComplete(ctx, msg, itty);
+                    if (!moreInIterator) iterateComplete(ctx, msg, itty);
 
                     // the flush is called after the commit has potentially occurred.  in this way, if a commit was
                     // required then it will be 100% complete before the client receives it. the "frame" at this point

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/966df989/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 5edbe26..5461007 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
@@ -110,7 +110,7 @@ public class TraversalOpProcessor extends AbstractOpProcessor {
         }};
     }
 
-    private static Cache<UUID, TraversalSideEffects> cache = null;
+    protected static Cache<UUID, TraversalSideEffects> cache = null;
 
     public TraversalOpProcessor() {
         super(false);