[
https://issues.apache.org/jira/browse/LUCENE-743?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12519377
]
Hoss Man commented on LUCENE-743:
---------------------------------
(note: i haven't looked at the latest patch in detail, just commenting on the
comments)
One key problem i see with automatically closing things in reopen is
MultiReader: it's perfectly legal to do something like this psuedocode...
IndexReader a, b, c = ...
MultiReader ab = new MultiReader({a, b})
MultiReader bc = new MultiReader({b, c})
...b changes on disk...
ab.reopen(); // this shouldn't affect bc;
one possibility would be for the semantics of reopen to close old readers only
if it completely owns them; ie: MultiReader should never close anything in
reopen, MultiSegmentReader should close all of the subreaders since it opened
them in the first place ... things get into a grey area with SegementReader
though.
In general i think the safest thing to do is for reopen to never close.
Yonik's comment showcases one of the most compelling reasons why it can be
important for clients to be able to keep using an old IndexReader instance, and
it's easy enough for clients that want the old one closed to do something
like...
IndexReader r = ...
...
IndexReader tmp = r.reopen();
if (tmp != r) r.close();
r = tmp;
...
(one question that did jump out at me while greping the patch for the where old
readers were being closed: why is the meat of reopen still in "IndexReader"
with a "if (reader instanceof SegmentReader)" style logic in it? can't the
different reopen mechanisms be refactored down into SegmentReader and
MultiSegmentReader respectively? shouldn't the default impl of IndexReader
throw an UnsuppportedOperationException?)
> IndexReader.reopen()
> --------------------
>
> Key: LUCENE-743
> URL: https://issues.apache.org/jira/browse/LUCENE-743
> Project: Lucene - Java
> Issue Type: Improvement
> Components: Index
> Reporter: Otis Gospodnetic
> Assignee: Michael Busch
> Priority: Minor
> Fix For: 2.3
>
> Attachments: IndexReaderUtils.java, lucene-743.patch,
> lucene-743.patch, lucene-743.patch, MyMultiReader.java, MySegmentReader.java
>
>
> This is Robert Engels' implementation of IndexReader.reopen() functionality,
> as a set of 3 new classes (this was easier for him to implement, but should
> probably be folded into the core, if this looks good).
--
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]