Lucene - Core
  1. Lucene - Core
  2. LUCENE-3373

waitForMerges deadlocks if background merge fails

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 3.0.3
    • Fix Version/s: None
    • Component/s: core/index
    • Labels:
      None
    • Lucene Fields:
      New

      Description

      waitForMerges can deadlock if a merge fails for ConcurrentMergeScheduler

      this is because the merge thread will die, but pending merges are still available

      normally, the merge thread will pick up the next merge once it finishes the previous merge, but in the event of a merge exception, the pending work is not resumed, but waitForMerges won't complete until all pending work is complete

      i worked around this by overriding doMerge() like so:

        protected final void doMerge(MergePolicy.OneMerge merge) throws IOException {
          try {
            super.doMerge(merge);
          } catch (Throwable exc) {
            // Just logging the exception and not rethrowing
            // insert logging code here
          }
        }
      

      Here's the rough steps i used to reproduce this issue:
      override doMerge like so

        protected final void doMerge(MergePolicy.OneMerge merge) throws IOException {
          try {Thread.sleep(500L);} catch (InterruptedException e) { }
          super.doMerge(merge);
          throw new IOException("fail");
        }
      

      then, if you do the following:
      loop 50 times:
      addDocument // any doc
      commit
      waitForMerges // This will deadlock sometimes

      SOLR-2017 may be related to this (stack trace for deadlock looked related)

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Tim Smith
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development