You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Tommaso Teofili (JIRA)" <ji...@apache.org> on 2015/04/22 11:33:59 UTC

[jira] [Commented] (OAK-2799) OakIndexInput cloned instances are not closed

    [ https://issues.apache.org/jira/browse/OAK-2799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14506718#comment-14506718 ] 

Tommaso Teofili commented on OAK-2799:
--------------------------------------

[~alexparvulescu], [~chetanm] WDYT? 

> OakIndexInput cloned instances are not closed
> ---------------------------------------------
>
>                 Key: OAK-2799
>                 URL: https://issues.apache.org/jira/browse/OAK-2799
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: lucene
>    Affects Versions: 1.2.1
>            Reporter: Tommaso Teofili
>            Assignee: Tommaso Teofili
>             Fix For: 1.2.2
>
>
> Related to the inspections I was doing for OAK-2798 I also noticed that we don't fully comply with the {{IndexInput}} javadoc [1] as the cloned instances should throw the given exception if original is closed, but I also think that the original instance should close the cloned instances, see also [ByteBufferIndexInput#close|https://github.com/apache/lucene-solr/blob/lucene_solr_4_7_1/lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java#L271].
> [1] : {code}
> /** Abstract base class for input from a file in a {@link Directory}.  A
>  * random-access input stream.  Used for all Lucene index input operations.
>  *
>  * <p>{@code IndexInput} may only be used from one thread, because it is not
>  * thread safe (it keeps internal state like file position). To allow
>  * multithreaded use, every {@code IndexInput} instance must be cloned before
>  * used in another thread. Subclasses must therefore implement {@link #clone()},
>  * returning a new {@code IndexInput} which operates on the same underlying
>  * resource, but positioned independently. Lucene never closes cloned
>  * {@code IndexInput}s, it will only do this on the original one.
>  * The original instance must take care that cloned instances throw
>  * {@link AlreadyClosedException} when the original one is closed.
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)