Index: lucene/core/src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (revision 1364417) +++ lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -899,8 +899,24 @@ mergePolicy.close(); synchronized(this) { - finishMerges(waitForMerges); + boolean success = false; + ThreadInterruptedException priorE = null; + while (!success) { + try { + finishMerges(waitForMerges); + success = true; + } catch (ThreadInterruptedException tie) { + // change to waitForMerges = false, so we just try + // to let the scheduler stop: + waitForMerges = false; + if (priorE == null) priorE = tie; + } + } stopMerges = true; + if (priorE != null) { + mergeScheduler.close(); + throw priorE; + } } mergeScheduler.close();