lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (JIRA)" <>
Subject [jira] [Commented] (LUCENE-4165) HunspellDictionary - AffixFile Reader closed, Dictionary Readers left unclosed
Date Tue, 26 Jun 2012 12:24:43 GMT


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:
>             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
> 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
> 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:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message