[ https://issues.apache.org/jira/browse/LUCENE-2334?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12847547#action_12847547 ]
Michael McCandless commented on LUCENE-2334: -------------------------------------------- Actually I think we should continue to protect against double close, in general. We do so in IndexWriter as well... here's a relevant comment: https://issues.apache.org/jira/browse/LUCENE-818?focusedCommentId=12477399&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12477399 Also, what's confusing? The rules seem simple: always close any IndexReader you'd open. If you .incRef an IndexReader, match that with a call to .decRef. The API works well for simple users (just open/close) and advanced users. > IndexReader.close() should call IndexReader.decRef() unconditionally ?? > ----------------------------------------------------------------------- > > Key: LUCENE-2334 > URL: https://issues.apache.org/jira/browse/LUCENE-2334 > Project: Lucene - Java > Issue Type: Improvement > Components: Index > Affects Versions: 3.0.1 > Reporter: Mike Hanafey > Priority: Minor > > IndexReader.close() is defined: > {code} /** > * Closes files associated with this index. > * Also saves any new deletions to disk. > * No other methods should be called after this has been called. > * @throws IOException if there is a low-level IO error > */ > public final synchronized void close() throws IOException { > if (!closed) { > decRef(); > closed = true; > } > } > {code} > This means that if the refCount is bigger than one, close() does not > actually close, but it is also true that calling close() again has no effect. > Why does close() not simply call decRef() unconditionally? This way if > incRef() is called each time an instance of IndexReader were handed out, if > close() is called by each recipient when they are done, the last one to call > close will actually close the index. As written it seems the API is very > confusing -- the first close() does one thing, but the next close() does > something different. > At a minimum the JavaDoc should clarify the behavior. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org