lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael McCandless (JIRA)" <j...@apache.org>
Subject [jira] Updated: (LUCENE-1314) IndexReader.clone
Date Fri, 27 Feb 2009 21:05:12 GMT

     [ https://issues.apache.org/jira/browse/LUCENE-1314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Michael McCandless updated LUCENE-1314:
---------------------------------------

    Attachment: LUCENE-1314.patch


Attached patch.  I plan to commit in a day or two.

OK I changed deletedDocRefs to only be inc/decRef'd once for the
reader, not every time the reader is inc/decRef'd (which was causing
the bug you saw).

But then because of how a reopened SegmentReader references the
original, the deleted docs were being unecessarily copy-on-write'd (on
closing the first reader we would fail to decref the deletedDocsRef so
when the 2nd reader did a delete, it would copy).

So then I added a new coreRef to SegmentReader, instead of the
referencedSegmengReader.  I like this approach better because it
allows the original reader to be closed, without closing the core
objects when other readers share them.

It also simplifies SegmentReader's inc/decRef so that they no longer
need to be overridden.

Also, when cloning the BitVector, I changed it to not copy count over
-- if a separate thread is changing the deleted docs at the same time,
the count could be off.

Back-compat tests don't pass, because TestIndexReaderReopen is
checking internal reference counts; I'll commit fixes to tests when I
commit.


> IndexReader.clone
> -----------------
>
>                 Key: LUCENE-1314
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1314
>             Project: Lucene - Java
>          Issue Type: New Feature
>          Components: Index
>    Affects Versions: 2.3.1
>            Reporter: Jason Rutherglen
>            Assignee: Michael McCandless
>            Priority: Minor
>             Fix For: 2.9
>
>         Attachments: LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch,
LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch,
LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch,
LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch,
LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch, LUCENE-1314.patch,
lucene-1314.patch, lucene-1314.patch, lucene-1314.patch, lucene-1314.patch, lucene-1314.patch,
lucene-1314.patch, lucene-1314.patch, lucene-1314.patch, lucene-1314.patch, lucene-1314.patch,
lucene-1314.patch, lucene-1314.patch
>
>
> Based on discussion http://www.nabble.com/IndexReader.reopen-issue-td18070256.html. 
The problem is reopen returns the same reader if there are no changes, so if docs are deleted
from the new reader, they are also reflected in the previous reader which is not always desired
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-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message