You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by di...@apache.org on 2020/08/26 17:32:33 UTC

[tinkerpop] branch 3.4-dev updated: TINKERPOP-2408 Fix iterator leak in HasContainer (#1315)

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

divijv pushed a commit to branch 3.4-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/3.4-dev by this push:
     new b1ae147  TINKERPOP-2408 Fix iterator leak in HasContainer (#1315)
b1ae147 is described below

commit b1ae14773bddeeaea2cdb3a7154ac49e81d43110
Author: Divij Vaidya <di...@amazon.com>
AuthorDate: Wed Aug 26 10:31:22 2020 -0700

    TINKERPOP-2408 Fix iterator leak in HasContainer (#1315)
---
 CHANGELOG.asciidoc                                            |  1 +
 .../gremlin/process/traversal/step/util/HasContainer.java     | 11 ++++++++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 34647e9..d1b8122 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Delegated handling of erroneous response to the worker thread pool instead of event loop thread pool in Java Driver.
 * Removed `Connection` from `Connection Pool` when server closes a connection with no pending requests in Java Driver.
 * Fixed bug in Javascript `Translator` that wasn't handling child traversals well.
+* Fix an interator leak in HasContainer. 
 
 [[release-3-4-8]]
 === TinkerPop 3.4.8 (Release Date: August 3, 2020)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
index 1cfc7eb..111e23c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.util.CloseableIterator;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.io.Serializable;
@@ -82,9 +83,13 @@ public class HasContainer implements Serializable, Cloneable, Predicate<Element>
             return testLabel(element);
 
         final Iterator<? extends Property> itty = element.properties(this.key);
-        while (itty.hasNext()) {
-            if (testValue(itty.next()))
-                return true;
+        try {
+            while (itty.hasNext()) {
+                if (testValue(itty.next()))
+                    return true;
+            }
+        } finally {
+            CloseableIterator.closeIterator(itty);
         }
         return false;
     }