Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-3348

IndexWriter applies wrong deletes during concurrent flush-all


    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 4.0-ALPHA
    • core/index
    • None
    • New, Patch Available


      Yonik uncovered this with the TestRealTimeGet test: if a flush-all is
      underway, it is possible for an incoming update to pick a DWPT that is
      stale, ie, not yet pulled/marked for flushing, yet the DW has cutover
      to a new deletes queue. If this happens, and the deleted term was
      also updated in one of the non-stale DWPTs, then the wrong document is
      deleted and the test fails by detecting the wrong value.

      There's a 2nd failure mode that I haven't figured out yet, whereby 2
      docs are returned when searching by id (there should only ever be 1
      doc since the test uses updateDocument which is atomic wrt

      Yonik verified the test passes pre-DWPT, so my guess is (but I
      have yet to verify) this test also passes on 3.x. I'll backport
      the test to 3.x to be sure.


        1. LUCENE-3348.patch
          31 kB
          Michael McCandless
        2. LUCENE-3348.patch
          48 kB
          Michael McCandless
        3. LUCENE-3348.patch
          54 kB
          Michael McCandless
        4. LUCENE-3348.patch
          56 kB
          Michael McCandless
        5. LUCENE-3348.patch
          58 kB
          Michael McCandless
        6. LUCENE-3348.patch
          56 kB
          Simon Willnauer
        7. fail2.txt.bz2
          129 kB
          Michael McCandless
        8. fail.txt.bz2
          833 kB
          Michael McCandless



            simonw Simon Willnauer
            mikemccand Michael McCandless
            0 Vote for this issue
            2 Start watching this issue