You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/12/08 22:54:13 UTC
[47/50] tinkerpop git commit: Minor fix to iteration completion logic
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/0a823579
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0a823579
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0a823579
Branch: refs/heads/TINKERPOP-1564
Commit: 0a8235793c3ced7919be745e5d8f356b672728f2
Parents: 53e932b
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:18:56 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/0a823579/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/0a823579/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);