Index: src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java =================================================================== --- src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (revision 585596) +++ src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (working copy) @@ -33,8 +33,6 @@ public class ConcurrentMergeScheduler implements MergeScheduler { - public static boolean VERBOSE = false; - private int mergeThreadPriority = -1; private List mergeThreads = new ArrayList(); @@ -44,6 +42,7 @@ private Directory dir; private boolean closed; + private IndexWriter writer; public ConcurrentMergeScheduler() { if (allInstances != null) { @@ -94,7 +93,8 @@ } private void message(String message) { - System.out.println("CMS [" + Thread.currentThread().getName() + "]: " + message); + if (writer != null) + writer.message("CMS: " + message); } private synchronized void initMergeThreadPriority() { @@ -110,11 +110,10 @@ public synchronized void sync() { while(mergeThreadCount() > 0) { - if (VERBOSE) { - message("now wait for threads; currently " + mergeThreads.size() + " still running"); - for(int i=0;iReturns the number of segments that are merged at * once and also controls the total number of segments * allowed to accumulate in the index.

*/ @@ -211,6 +217,8 @@ public MergeSpecification findMerges(SegmentInfos infos, IndexWriter writer) throws IOException { final int numSegments = infos.size(); + this.writer = writer; + message("findMerges: " + numSegments + " segments"); // Compute levels, which is just log (base mergeFactor) // of the size of each segment @@ -284,6 +292,7 @@ } upto--; } + message(" level " + levelBottom + " to " + maxLevel + ": " + (1+upto-start) + " segments"); // Finally, record all merges that are viable at this level: int end = start + mergeFactor; @@ -297,8 +306,11 @@ if (!anyTooLarge) { if (spec == null) spec = new MergeSpecification(); + message(" " + start + " to " + end + ": add this merge"); spec.add(new OneMerge(infos.range(start, end), useCompoundFile)); - } + } else + message(" " + start + " to " + end + ": contains segment over maxMergeSize or maxMergeDocs; skipping"); + start = end; end = start + mergeFactor; } Index: src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/IndexWriter.java (revision 585596) +++ src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -304,8 +304,14 @@ } } - private void message(String message) { - infoStream.println("IW " + messageID + " [" + Thread.currentThread().getName() + "]: " + message); + /** + * Prints a message to the infoStream (if non-null), + * prefixed with the identifying information for this + * writer and the thread that's calling it. + */ + public void message(String message) { + if (infoStream != null) + infoStream.println("IW " + messageID + " [" + Thread.currentThread().getName() + "]: " + message); } private synchronized void setMessageID() {