Index: src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java =================================================================== --- src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (revision 723736) +++ src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (working copy) @@ -94,8 +94,12 @@ } } + private boolean messagesEnabled() { + return writer != null && writer.messagesEnabled(); + } + private void message(String message) { - if (writer != null) + if (messagesEnabled()) writer.message("CMS: " + message); } @@ -115,11 +119,14 @@ public synchronized void sync() { while(mergeThreadCount() > 0) { - message("now wait for threads; currently " + mergeThreads.size() + " still running"); + if (messagesEnabled()) + message("now wait for threads; currently " + mergeThreads.size() + " still running"); final int count = mergeThreads.size(); - for(int i=0;i= maxThreadCount) { - message(" too many merge threads running; stalling..."); + if (messagesEnabled()) + message(" too many merge threads running; stalling..."); try { wait(); } catch (InterruptedException ie) { @@ -185,7 +196,8 @@ } } - message(" consider merge " + merge.segString(dir)); + if (messagesEnabled()) + message(" consider merge " + merge.segString(dir)); assert mergeThreadCount() < maxThreadCount; @@ -193,7 +205,8 @@ // merge: final MergeThread merger = getMergeThread(writer, merge); mergeThreads.add(merger); - message(" launch new thread [" + merger.getName() + "]"); + if (messagesEnabled()) + message(" launch new thread [" + merger.getName() + "]"); merger.start(); } } @@ -253,7 +266,8 @@ try { - message(" merge thread: start"); + if (messagesEnabled()) + message(" merge thread: start"); while(true) { setRunningMerge(merge); @@ -264,12 +278,14 @@ merge = writer.getNextMerge(); if (merge != null) { writer.mergeInit(merge); - message(" merge thread: do another merge " + merge.segString(dir)); + if (messagesEnabled()) + message(" merge thread: do another merge " + merge.segString(dir)); } else break; } - message(" merge thread: done"); + if (messagesEnabled()) + message(" merge thread: done"); } catch (Throwable exc) { Index: src/java/org/apache/lucene/index/DocumentsWriter.java =================================================================== --- src/java/org/apache/lucene/index/DocumentsWriter.java (revision 723736) +++ src/java/org/apache/lucene/index/DocumentsWriter.java (working copy) @@ -395,7 +395,8 @@ } void message(String message) { - writer.message("DW: " + message); + if (infoStream != null) + writer.message("DW: " + message); } final List openFiles = new ArrayList(); @@ -433,7 +434,8 @@ synchronized void abort() throws IOException { try { - message("docWriter: now abort"); + if (infoStream != null) + message("docWriter: now abort"); // Forcefully remove waiting ThreadStates from line waitQueue.abort(); Index: src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/IndexWriter.java (revision 723736) +++ src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -1181,7 +1181,8 @@ oldInfos.read(directory, commit.getSegmentsFileName()); segmentInfos.replace(oldInfos); changeCount++; - message("init: loaded commit \"" + commit.getSegmentsFileName() + "\""); + if (infoStream != null) + message("init: loaded commit \"" + commit.getSegmentsFileName() + "\""); } // We assume that this segments_N was previously @@ -1606,6 +1607,11 @@ return infoStream; } + /** Returns true if messages output is enabled (i.e., infoStream != null). */ + public boolean messagesEnabled() { + return infoStream != null; + } + /** * Sets the maximum time to wait for a write lock (in milliseconds) for this instance of IndexWriter. @see * @see #setDefaultWriteLockTimeout to change the default value for all instances of IndexWriter. @@ -1817,9 +1823,8 @@ docStoreSegment = docWriter.closeDocStore(); success = true; } finally { - if (!success) { - if (infoStream != null) - message("hit exception closing doc store segment"); + if (!success && infoStream != null) { + message("hit exception closing doc store segment"); } } @@ -3582,7 +3587,8 @@ if (!autoCommit && pendingCommit != null) throw new IllegalStateException("prepareCommit was already called with no corresponding call to commit"); - message("prepareCommit: flush"); + if (infoStream != null) + message("prepareCommit: flush"); flush(true, true, true); @@ -3658,12 +3664,14 @@ waitForCommit(); try { - message("commit: start"); + if (infoStream != null) + message("commit: start"); if (autoCommit || pendingCommit == null) { - message("commit: now prepare"); + if (infoStream != null) + message("commit: now prepare"); prepareCommit(commitUserData, true); - } else + } else if (infoStream != null) message("commit: already prepared"); finishCommit(); @@ -3676,9 +3684,11 @@ if (pendingCommit != null) { try { - message("commit: pendingCommit != null"); + if (infoStream != null) + message("commit: pendingCommit != null"); pendingCommit.finishCommit(directory); - message("commit: wrote segments file \"" + pendingCommit.getCurrentSegmentFileName() + "\""); + if (infoStream != null) + message("commit: wrote segments file \"" + pendingCommit.getCurrentSegmentFileName() + "\""); lastCommitChangeCount = pendingCommitChangeCount; segmentInfos.updateGeneration(pendingCommit); segmentInfos.setUserData(pendingCommit.getUserData()); @@ -3690,10 +3700,11 @@ notifyAll(); } - } else - message("commit: pendingCommit == null; skip"); + } else if (infoStream != null) + message("commit: pendingCommit == null; skip"); - message("commit: done"); + if (infoStream != null) + message("commit: done"); } /** @@ -4008,7 +4019,8 @@ if (deletes != null) { merge.info.advanceDelGen(); - message("commit merge deletes to " + merge.info.getDelFileName()); + if (infoStream != null) + message("commit merge deletes to " + merge.info.getDelFileName()); deletes.write(directory, merge.info.getDelFileName()); merge.info.setDelCount(delCount); assert delCount == deletes.count(); @@ -4857,7 +4869,8 @@ // Because we incRef'd this commit point, above, // the file had better exist: assert directory.fileExists(fileName): "file '" + fileName + "' does not exist dir=" + directory; - message("now sync " + fileName); + if (infoStream != null) + message("now sync " + fileName); directory.sync(fileName); success = true; } finally { @@ -4888,7 +4901,8 @@ // Wait now for any current pending commit to complete: while(pendingCommit != null) { - message("wait for existing pendingCommit to finish..."); + if (infoStream != null) + message("wait for existing pendingCommit to finish..."); doWait(); } @@ -4917,14 +4931,15 @@ pendingCommitChangeCount = myChangeCount; success = true; } finally { - if (!success) + if (!success && infoStream != null) message("hit exception committing segments file"); } - } else + } else if (infoStream != null) message("sync superseded by newer infos"); } - message("done all syncs"); + if (infoStream != null) + message("done all syncs"); assert testPoint("midStartCommitSuccess"); Index: src/java/org/apache/lucene/index/LogMergePolicy.java =================================================================== --- src/java/org/apache/lucene/index/LogMergePolicy.java (revision 723736) +++ src/java/org/apache/lucene/index/LogMergePolicy.java (working copy) @@ -63,8 +63,12 @@ private boolean useCompoundDocStore = true; private IndexWriter writer; + protected boolean messagesEnabled() { + return writer != null && writer.messagesEnabled(); + } + private void message(String message) { - if (writer != null) + if (messagesEnabled()) writer.message("LMP: " + message); } @@ -258,20 +262,23 @@ final int numSegments = segmentInfos.size(); - message("findMergesToExpungeDeletes: " + numSegments + " segments"); + if (messagesEnabled()) + message("findMergesToExpungeDeletes: " + numSegments + " segments"); MergeSpecification spec = new MergeSpecification(); int firstSegmentWithDeletions = -1; for(int i=0;i