[
https://issues.apache.org/jira/browse/LUCENE-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12727567#action_12727567
]
Michael McCandless commented on LUCENE-1726:
--------------------------------------------
Can we make the MapValue strongly typed? Eg name it SegmentReaderValue, and it
has a single member "SegmentReader reader".
getIfExists has duplicate checks for null (mv != null is checked twice and
mv.value != null too).
I think there is a thread hazard here, in particular a risk that one thread
decrefs a reader just as another thread is trying to get it, and the reader in
fact gets closed while the other thread has an mv.reader != null and illegally
increfs that. I think you'll have to do the sr.incRef inside the
synchronized(this), but I don't think that entirely resolves it.
I'm going to move this out out 2.9; I don't think it should block it.
> IndexWriter.readerPool create new segmentReader outside of sync block
> ---------------------------------------------------------------------
>
> Key: LUCENE-1726
> URL: https://issues.apache.org/jira/browse/LUCENE-1726
> Project: Lucene - Java
> Issue Type: Improvement
> Components: Index
> Affects Versions: 2.4.1
> Reporter: Jason Rutherglen
> Assignee: Michael McCandless
> Priority: Trivial
> Fix For: 3.1
>
> Attachments: LUCENE-1726.patch
>
> Original Estimate: 48h
> Remaining Estimate: 48h
>
> I think we will want to do something like what field cache does
> with CreationPlaceholder for IndexWriter.readerPool. Otherwise
> we have the (I think somewhat problematic) issue of all other
> readerPool.get* methods waiting for an SR to warm.
> It would be good to implement this for 2.9.
--
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]