[
https://issues.apache.org/jira/browse/LUCENE-743?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539588
]
Yonik Seeley commented on LUCENE-743:
-------------------------------------
I just did a quick partial review of SegmentReader for thread safety only and
ran across some potential issues
- It looks like fieldsReader is shared between clones(), and that isn't
thread-safe (synchronization is done at the SegmentReader level, and now there
is more than one)
- maybe the same issue with deletedDocs? mutual exclusion is no longer
enforced.
- it looks like the norms Hashtable could be shared... looping over the
individual norms and calling incRef doesn't seem safe for a number of reasons
(for example, you might miss some just being added)
- reading new norms isn't safe...
synchronized norms(String field, byte[] bytes, int offset) uses the "norm'
IndexInput that is shared. synchronization on a single reader no longer
guarantees mutual exclusion.
There's probably other stuff, but I stopped looking. Since we are sharing
things now, every method that was synchronized is now potentially unsafe.
Synchronizing on the object being shared is probably a much better strategy now.
This is complex enough that in addition to review, I think we need a good
multi-threaded test - 100 or 1000 threads over a ram directory, all changing,
querying, retrieving docs, reopening, closing, etc.
> 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-take2.patch,
> lucene-743-take3.patch, lucene-743-take4.patch, lucene-743-take5.patch,
> lucene-743.patch, lucene-743.patch, lucene-743.patch, MyMultiReader.java,
> MySegmentReader.java, varient-no-isCloneSupported.BROKEN.patch
>
>
> 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]