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



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