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 2014/12/22 11:10:47 UTC

svn commit: r1647279 - in /lucene/dev/branches/branch_5x: ./ lucene/ lucene/core/ lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java lucene/core/src/java/org/apache/lucene/index/IndexWriter.java

Author: mikemccand
Date: Mon Dec 22 10:10:47 2014
New Revision: 1647279

URL: http://svn.apache.org/r1647279
Log:
fix IW infoStream: don't repeat 'too many merges' 4X per sec; add merge summary details about overall MB/sec

Modified:
    lucene/dev/branches/branch_5x/   (props changed)
    lucene/dev/branches/branch_5x/lucene/   (props changed)
    lucene/dev/branches/branch_5x/lucene/core/   (props changed)
    lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java
    lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java

Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java?rev=1647279&r1=1647278&r2=1647279&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/ConcurrentMergeScheduler.java Mon Dec 22 10:10:47 2014
@@ -445,10 +445,10 @@ public class ConcurrentMergeScheduler ex
       // updateMergeThreads).  We stall this producer
       // thread to prevent creation of new segments,
       // until merging has caught up:
-      startStallTime = System.currentTimeMillis();
-      if (verbose()) {
+      if (verbose() && startStallTime == 0) {
         message("    too many merges; stalling...");
       }
+      startStallTime = System.currentTimeMillis();
       try {
         // Only wait 0.25 seconds, so if all merges are aborted (by IW.rollback) we notice:
         wait(250);

Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1647279&r1=1647278&r2=1647279&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Mon Dec 22 10:10:47 2014
@@ -3936,6 +3936,11 @@ public class IndexWriter implements Clos
 
       merge.checkAborted(directory);
 
+      long mergeStartTime = 0;
+      if (infoStream.isEnabled("IW")) {
+        mergeStartTime = System.nanoTime();
+      }
+
       // This is where all the work happens:
       boolean success3 = false;
       try {
@@ -3958,12 +3963,20 @@ public class IndexWriter implements Clos
 
       if (infoStream.isEnabled("IW")) {
         if (merger.shouldMerge()) {
+          long t1 = System.nanoTime();
+          double sec = (t1-mergeStartTime)/1000000000.;
+          double segmentMB = (merge.info.sizeInBytes()/1024./1024.);
           infoStream.message("IW", "merge codec=" + codec + " docCount=" + merge.info.info.getDocCount() + "; merged segment has " +
-                           (mergeState.mergeFieldInfos.hasVectors() ? "vectors" : "no vectors") + "; " +
-                           (mergeState.mergeFieldInfos.hasNorms() ? "norms" : "no norms") + "; " + 
-                           (mergeState.mergeFieldInfos.hasDocValues() ? "docValues" : "no docValues") + "; " + 
-                           (mergeState.mergeFieldInfos.hasProx() ? "prox" : "no prox") + "; " + 
-                           (mergeState.mergeFieldInfos.hasProx() ? "freqs" : "no freqs"));
+                             (mergeState.mergeFieldInfos.hasVectors() ? "vectors" : "no vectors") + "; " +
+                             (mergeState.mergeFieldInfos.hasNorms() ? "norms" : "no norms") + "; " + 
+                             (mergeState.mergeFieldInfos.hasDocValues() ? "docValues" : "no docValues") + "; " + 
+                             (mergeState.mergeFieldInfos.hasProx() ? "prox" : "no prox") + "; " + 
+                             (mergeState.mergeFieldInfos.hasProx() ? "freqs" : "no freqs") + "; " +
+                             String.format(Locale.ROOT,
+                                           "%d msec to merge segment [%.2f MB, %.2f MB/sec]",
+                                           ((t1-mergeStartTime)/1000000),
+                                           segmentMB,
+                                           segmentMB / sec));
         } else {
           infoStream.message("IW", "skip merging fully deleted segments");
         }