[
https://issues.apache.org/jira/browse/TINKERPOP-2416?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephen Mallette closed TINKERPOP-2416.
---------------------------------------
Fix Version/s: 3.4.9
3.5.0
Assignee: Stephen Mallette
Resolution: Done
> MultiIterator should implement AutoCloseable
> --------------------------------------------
>
> Key: TINKERPOP-2416
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2416
> Project: TinkerPop
> Issue Type: Improvement
> Components: structure
> Affects Versions: 3.4.8
> Reporter: Norio Akagi
> Assignee: Stephen Mallette
> Priority: Minor
> Fix For: 3.5.0, 3.4.9
>
>
> TinkerPop has a handy set of util methods for Iterators and specifically
> IteratorUtils#concat provides a way to combine multiple iterators and treat
> it as if we have a single iterator.
> [https://github.com/apache/tinkerpop/blob/master/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/iterator/IteratorUtils.java#L352]
> While this is convenient, when we use it we had some memory leak issue.
> The reason is because sometimes an iterator we use needs to be explicitly
> closed when it holds underlying resource to be released. TinkerPop is aware
> of this pattern and it has [CloseableIterator#closeIterator
> |[https://github.com/apache/tinkerpop/blob/cff4c161615f2b50bda27b6ba523c7f52b833532/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/CloseableIterator.java#L50]]method
> that closes an iterator if it implements AutoCloseable.
> However MultiIterator which Tinkerpop uses to combine multiple iterators when
> concat method is called does not implement AutoCloseable therefore when we
> use concat method while expecting the iterator is eventually closed by
> CloseableIterator#closeIterator method, it leaves the underlying iterators
> unclosed then it causes some resources never released.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)