[ https://issues.apache.org/jira/browse/LUCENE-4165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13401381#comment-13401381 ]
Torsten Krah edited comment on LUCENE-4165 at 6/26/12 1:28 PM: --------------------------------------------------------------- I did not say its a good example, but its a example that match the docs. A reader may allocate resources depending on the implementation and you are creating and not closing them - you may leak resources a reader may have allocated - that was the purpose for that example; you can imagine every reader you want (e.g. a Buffered one which does buffer things on disk and clear the files if you call close ...). The actual JRE implementation used does not use such readers - but imho you should not depend on implementation when using an interface; the JRE implementation may change and code will leak resources in that case. Whats the problem with calling close on that readers and tell the caller that the stream is consumed and closed? You said: "This is done everywhere that way." - hm what do you mean with everywhere? Usually at least i do close all my readers which i did create. was (Author: tkrah): I did not say its a good example, but its a example that match the docs. A reader may allocate resources depending on the implementation and you are creating and not closing them - you may leak resources a reader may have allocated - that was the purpose for that example; you can imagine every reader you want (e.g. a Buffered one which does buffer things on disk and clear the files if you call close ...). The actual JRE implementation used does not use such readers - but imho you should not depend on implementation when using an interface; the JRE implementation may change and code will leak resources in that case. Whats the problem with calling close on that readers and tell the caller that the stream is consumed and closed? > 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