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()) {