lucene-dev mailing list archives

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

    [ 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: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message