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

Uwe Schindler commented on LUCENE-4165:
---------------------------------------

bq. And creating Readers and not closing them is imho not good either, e.g. 
take a look at: com.sun.org.apache.xerces.internal.impl.io.UTF8Reader. No 
finalize there, if you do not call close on that reader, the ThreadLocal 
allocated does leak - imho if you create readers, you should close them.

LOOOOL :-) UTF8Reader of Xerces is broken, so don't take this one as example. 
It should go away, especially it is slower (like Jettys broken readers, too) 
than recent Java ones. In times of Java 1.1 there was a speed improvement, but 
not any more.

The Readers we wrap around the InputStream are standard Java readers 
(InputStreamReader) and we really don't need to close them. This is done 
everywhere that way. BufferedReader (if needed), also needs no close. No broken 
ThreadLocals, nothing, just plain GC. So please don't do any crazy stuff here.

The only thing that takes *system* resources like FDs may be the InputStream 
from a File or ZIP file. And those will be closed by the caller.

We should just document that the InputStream is not closed. There is nothing to 
worry about. We had a similar discussion already in the past with the Readers 
passed to Fields.

Uwe
                
> HunspellDictionary - AffixFile Reader closed, Dictionary Readers left unclosed
> ------------------------------------------------------------------------------
>
>                 Key: LUCENE-4165
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4165
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: modules/analysis
>    Affects Versions: 3.6
>         Environment: Linux, Java 1.6
>            Reporter: Torsten Krah
>            Priority: Minor
>         Attachments: lucene_36.patch, lucene_trunk.patch
>
>
> The HunspellDictionary takes an InputStream for affix file and a List of 
> Streams for dictionaries.
> Javadoc is not clear about i have to close those stream myself or the 
> Dictionary constructor does this already.
> Looking at the code, at least reader.close() is called when the affix file is 
> read via readAffixFile() method (although closing streams is not done in a 
> finally block - so the constructor may fail to do so).
> The readDictionaryFile() method does miss the call to close the reader in 
> contrast to readAffixFile().
> So the question here is - have i have to close the streams myself after 
> instantiating the dictionary?
> Or is the close call only missing for the dictionary streams?
> Either way, please add the close calls in a safe manner or clarify javadoc so 
> i have to do this myself.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to