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);