lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yonik Seeley (JIRA)" <>
Subject [jira] Commented: (LUCENE-743) IndexReader.reopen()
Date Fri, 02 Nov 2007 14:10:51 GMT


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:
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Index
>            Reporter: Otis Gospodnetic
>            Assignee: Michael Busch
>            Priority: Minor
>             Fix For: 2.3
>         Attachments:, 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,,, 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:
For additional commands, e-mail:

View raw message