diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java index 085070d6d1f..c33a805cb15 100644 --- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java +++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java @@ -3363,6 +3363,18 @@ public class IndexWriter implements Closeable, TwoPhaseCommit { mergingSegments.add(info); } + assert merge.estimatedMergeBytes == 0; + assert merge.totalMergeBytes == 0; + for(SegmentInfoPerCommit info : merge.segments) { + if (info.info.getDocCount() > 0) { + final int delCount = numDeletedDocs(info); + assert delCount <= info.info.getDocCount(); + final double delRatio = ((double) delCount)/info.info.getDocCount(); + merge.estimatedMergeBytes += info.sizeInBytes() * (1.0 - delRatio); + merge.totalMergeBytes += info.sizeInBytes(); + } + } + // Merge is now registered merge.registerDone = true; @@ -3451,17 +3463,6 @@ public class IndexWriter implements Closeable, TwoPhaseCommit { if (infoStream.isEnabled("IW")) { infoStream.message("IW", "merge seg=" + merge.info.info.name + " " + segString(merge.segments)); } - - assert merge.estimatedMergeBytes == 0; - for(SegmentInfoPerCommit info : merge.segments) { - if (info.info.getDocCount() > 0) { - final int delCount = numDeletedDocs(info); - assert delCount <= info.info.getDocCount(); - final double delRatio = ((double) delCount)/info.info.getDocCount(); - merge.estimatedMergeBytes += info.sizeInBytes() * (1.0 - delRatio); - merge.totalMergeBytes += info.sizeInBytes(); - } - } } static void setDiagnostics(SegmentInfo info, String source) { diff --git a/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java b/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java index e85ec16191f..a90fe6f7f35 100644 --- a/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java +++ b/lucene/core/src/test/org/apache/lucene/index/TestConcurrentMergeScheduler.java @@ -365,6 +365,7 @@ public class TestConcurrentMergeScheduler extends LuceneTestCase { w.deleteDocuments(new Term("id", ""+random().nextInt(i+1))); } } + assertTrue(((TrackingCMS) iwc.getMergeScheduler()).totMergedBytes != 0); w.close(); d.close(); }