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