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 2021/12/28 13:07:08 UTC

[tinkerpop] branch ci-fix updated: Revert "TINKERPOP-2626 Prevent premature close of traversal"

This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch ci-fix
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/ci-fix by this push:
     new 4730d35  Revert "TINKERPOP-2626 Prevent premature close of traversal"
4730d35 is described below

commit 4730d35bd49ee37ee726895e8d0d320d57f2c33d
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Tue Dec 28 08:06:49 2021 -0500

    Revert "TINKERPOP-2626 Prevent premature close of traversal"
    
    This reverts commit 96ccc21a8dc3134c4a5148bf1ada855ec7a79a4e.
---
 CHANGELOG.asciidoc                                                    | 1 -
 .../gremlin/process/traversal/step/filter/RangeGlobalStep.java        | 3 +++
 .../tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java    | 4 +---
 .../apache/tinkerpop/gremlin/structure/util/CloseableIterator.java    | 3 ++-
 4 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 0eda5e4..89842c7 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,7 +23,6 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-4-13]]
 === TinkerPop 3.4.13 (Release Date: NOT OFFICIALLY RELEASED YET)
 
-* Fixed `RangeGlobalStep` which was prematurely closing the iterator.
 * Prevented XML External Entity (XXE) style attacks via `GraphMLReader` by disabling DTD and external entities by default.
 * Improved error message for failed serialization for HTTP-based requests.
 * Fixed a `NullPointerException` that could occur during a failed `Connection` initialization due to uninstantiated `AtomicInteger`.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
index 9824332..37441eb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
@@ -63,6 +63,9 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
         if (this.bypass) return true;
 
         if (this.high != -1 && this.counter.get() >= this.high) {
+            // This is a global step and this place would be the end of the traversal.
+            // Close the traversal to free up resources.
+            CloseableIterator.closeIterator(traversal);
             throw FastNoSuchElementException.instance();
         }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 3aa7bc1..cd3b7c4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -193,9 +193,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     @Override
     public boolean hasNext() {
         if (!this.locked) this.applyStrategies();
-        final boolean more = this.lastTraverser.bulk() > 0L || this.finalEndStep.hasNext();
-        if (!more) CloseableIterator.closeIterator(this);
-        return more;
+        return this.lastTraverser.bulk() > 0L || this.finalEndStep.hasNext();
     }
 
     @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/CloseableIterator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/CloseableIterator.java
index 5c33f8d..2464d11 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/CloseableIterator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/CloseableIterator.java
@@ -51,7 +51,8 @@ public interface CloseableIterator<T> extends Iterator<T>, Closeable {
         if (iterator instanceof AutoCloseable) {
             try {
                 ((AutoCloseable) iterator).close();
-            } catch (Exception e) {
+            }
+            catch (Exception e) {
                 throw new RuntimeException(e);
             }
         }