NRT can temporarily lose deletions at high indexing rates
---------------------------------------------------------

                 Key: LUCENE-2158
                 URL: https://issues.apache.org/jira/browse/LUCENE-2158
             Project: Lucene - Java
          Issue Type: Bug
          Components: Index
            Reporter: Michael McCandless
            Assignee: Michael McCandless
            Priority: Minor
             Fix For: 2.9.2, 3.0.1, 3.1


OK, I found a sneaky case where NRT can temporarily lose deletions.
The deletions aren't permanently lost - they are seen on the next
opened NRT reader.

It happens like this (in IW.getReader):

  * First flush() is called, to flush added docs & materialize the
    deletes.

  * The very next statement enters a sync'd block to open the reader,
    but, if indexing rate is very high, and threads get scheduled
    "appropriately", a "natural" flush (due to RAM buffer being full
    or flush doc count being reached) could be hit before the sync
    block is entered, in which case that 2nd flush won't materialize
    the deletes associated with it, and the returned NRT reader will
    only see its adds until it's next reopened.

The fix is simple -- we should materialize deletes inside the sync
block, not during the flush.


-- 
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

Reply via email to