You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/01/04 17:11:23 UTC

svn commit: r1428949 - in /lucene/dev/trunk/lucene: CHANGES.txt core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java

Author: mikemccand
Date: Fri Jan  4 16:11:22 2013
New Revision: 1428949

URL: http://svn.apache.org/viewvc?rev=1428949&view=rev
Log:
LUCENE-4660: add missing notifyAll after merge finishes

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1428949&r1=1428948&r2=1428949&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Fri Jan  4 16:11:22 2013
@@ -310,6 +310,10 @@ Bug Fixes
   that have no TermToBytesRefAttribute (commonly provided by CharTermAttribute),
   e.g., oal.analysis.miscellaneous.EmptyTokenStream.
   (Uwe Schindler, Adrien Grand, Robert Muir)
+
+* LUCENE-4660: ConcurrentMergeScheduler was taking too long to
+  un-pause incoming threads it had paused when too many merges were
+  queued up. (Mike McCandless)
     
 Changes in Runtime Behavior
   

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java?rev=1428949&r1=1428948&r2=1428949&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java Fri Jan  4 16:11:22 2013
@@ -479,6 +479,14 @@ public class ConcurrentMergeScheduler ex
           // Subsequent times through the loop we do any new
           // merge that writer says is necessary:
           merge = tWriter.getNextMerge();
+
+          // Notify here in case any threads were stalled;
+          // they will notice that the pending merge has
+          // been pulled and possibly resume:
+          synchronized(ConcurrentMergeScheduler.this) {
+            ConcurrentMergeScheduler.this.notifyAll();
+          }
+
           if (merge != null) {
             updateMergeThreads();
             if (verbose()) {