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

Reply via email to