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

IndexWriter applies wrong deletes during concurrent flush-all


    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.0-ALPHA
    • Component/s: core/index
    • Labels:
    • Lucene Fields:
      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
          56 kB
          Simon Willnauer
        2. LUCENE-3348.patch
          58 kB
          Michael McCandless
        3. fail2.txt.bz2
          129 kB
          Michael McCandless
        4. LUCENE-3348.patch
          56 kB
          Michael McCandless
        5. fail.txt.bz2
          833 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



            • Assignee:
              simonw Simon Willnauer
              mikemccand Michael McCandless
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created: