[ https://issues.apache.org/jira/browse/LUCENE-1516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12662603#action_12662603 ]
Jason Rutherglen commented on LUCENE-1516: ------------------------------------------ It looks like DirectoryIndexReader needs to have an IndexWriter mode as unfortunately subclassing won't work. In this context overriding a method implies the IW mode is being used. I assume we'll share the segmentInfos object from IW rather than share a clone with the IR? * DirectoryIndexReader.doCommit needs to be overridden * IndexReader uses the IndexDeletionPolicy from IndexWriter * DirectoryIndexReader.acquireWriteLock is overridden and synchronizes on the write lock of IndexWriter, other details need to be worked out * Method requiring synchronization in IW: optimize, expungeDeletes, prepareCommit, flush, addIndexes, methods that modify segmentInfos. Do we synchronize on IW or writeLock? * addDocument, updateDocument, deleteDocument do not seem to require synchronization * IW.getReader returns a cloned reader. IW keeps it's own reference. This is to allow IW to perform deletes using the internal reader rather than open a new reader and in general not affect IW's reader while still sharing resources. > Integrate IndexReader with IndexWriter > --------------------------------------- > > Key: LUCENE-1516 > URL: https://issues.apache.org/jira/browse/LUCENE-1516 > Project: Lucene - Java > Issue Type: Improvement > Affects Versions: 2.4 > Reporter: Jason Rutherglen > Priority: Minor > Fix For: 2.9 > > Original Estimate: 672h > Remaining Estimate: 672h > > The current problem is an IndexReader and IndexWriter cannot be open > at the same time and perform updates as they both require a write > lock to the index. While methods such as IW.deleteDocuments enables > deleting from IW, methods such as IR.deleteDocument(int doc) and > norms updating are not available from IW. This limits the > capabilities of performing updates to the index dynamically or in > realtime without closing the IW and opening an IR, deleting or > updating norms, flushing, then opening the IW again, a process which > can be detrimental to realtime updates. > This patch will expose an IndexWriter.getReader method that returns > the currently flushed state of the index as a class that implements > IndexReader. The new IR implementation will differ from existing IR > implementations such as MultiSegmentReader in that flushing will > synchronize updates with IW in part by sharing the write lock. All > methods of IR will be usable including reopen and clone. -- 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