[
https://issues.apache.org/jira/browse/LUCENE-4165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13401343#comment-13401343
]
Uwe Schindler commented on LUCENE-4165:
---------------------------------------
Two things:
- In Lucene we have a variant of the Java 7 close with resources logic. It is
(including examples) in the utility package (IOUtils). We should use this, as
it correctly handles special cases like supressing Exceptions occuring on
close(). It also ensures, *all* resources are closed.
- from my perspective / in my opinion: the general contract in Java is, that
methods getting streams or readers don't close. This is e.g. important if you
have the stuff in a ZIP file and read it with ZIPInputStream. If you close that
reader, you cannot read the other files in the archive anymore. So I would
prefer to let the user close the files. Behavior in APIs is different for
methods taking file names, of course. They close their internal streams. We
also fixed other places in Lucene to respect this contract. E.g., IndexWriter
does not close readers from Field instances.
> 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: [email protected]
For additional commands, e-mail: [email protected]