[ https://issues.apache.org/jira/browse/LUCENE-1453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12718004#action_12718004 ]
Uwe Schindler edited comment on LUCENE-1453 at 6/10/09 2:40 AM: ---------------------------------------------------------------- Hi Earwin, attached is a patch, that simply reuses SegmentReader.Ref. Factoring it out to o.a.l.util would be harder to do at the moment (some test-cases rely on this class). And SegmentReader seems to be the only class, that uses such a Ref construct. Other classes have their refCounter as Field. As the Filter is just a deprecated wrapper, that is removed in 3.0, I think reusing SegmentReader.Ref for that is ok. This patch also contains a new test for clone(), that does the same like the reopen test (checking the refcounts). Closeable is a Java 1.5 interface only, so this refactoring must wait until 3.0, but the idea is good! was (Author: thetaphi): Hi Earwin, attached is a patch, that simply reuses SegmentReader.Ref. Factoring it out to o.a.l.util would be harder to do at the moment (some test-cases rely on this class). And SegmentReader seems to be the only class, that uses such a Ref construct. Other classes have their refCounter as Field. As the Filter is just a deprecated wrapper, that is removed in 3.0, I think reusing SegmentReader.Ref for that is ok. Closeable is a Java 1.5 interface only, so this refactoring must wait until 3.0, but the idea is good! > When reopen returns a new IndexReader, both IndexReaders may now control the > lifecycle of the underlying Directory which is managed by reference counting > --------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: LUCENE-1453 > URL: https://issues.apache.org/jira/browse/LUCENE-1453 > Project: Lucene - Java > Issue Type: Bug > Affects Versions: 2.4 > Reporter: Mark Miller > Assignee: Michael McCandless > Priority: Minor > Fix For: 2.4.1, 2.9 > > Attachments: Failing-testcase-LUCENE-1453.patch, > LUCENE-1453-with-FSDir-open.patch, LUCENE-1453.patch, LUCENE-1453.patch, > LUCENE-1453.patch, LUCENE-1453.patch, LUCENE-1453.patch, LUCENE-1453.patch > > > Rough summary. Basically, FSDirectory tracks references to FSDirectory and > when IndexReader.reopen shares a Directory with a created IndexReader and > closeDirectory is true, FSDirectory's ref management will see two decrements > for one increment. You can end up getting an AlreadyClosed exception on the > Directory when the IndexReader is open. > I have a test I'll put up. A solution seems fairly straightforward (at least > in what needs to be accomplished). -- 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