Index: src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/IndexWriter.java (revision 1097759) +++ src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -3008,6 +3008,16 @@ message("merge seg=" + merge.info.name); } + assert merge.estimatedMergeBytes == 0; + for(SegmentInfo info : merge.segments) { + if (info.docCount > 0) { + final int delCount = numDeletedDocs(info); + assert delCount <= info.docCount; + final double delRatio = ((double) delCount)/info.docCount; + merge.estimatedMergeBytes += info.sizeInBytes(true) * (1.0 - delRatio); + } + } + // TODO: I think this should no longer be needed (we // now build CFS before adding segment to the infos); // however, on removing it, tests fail for some reason! @@ -3133,8 +3143,6 @@ merge.readers = new ArrayList(); merge.readerClones = new ArrayList(); - merge.estimatedMergeBytes = 0; - // This is try/finally to make sure merger's readers are // closed: boolean success = false; @@ -3152,13 +3160,6 @@ -config.getReaderTermsIndexDivisor()); merge.readers.add(reader); - final int readerMaxDoc = reader.maxDoc(); - if (readerMaxDoc > 0) { - final int delCount = reader.numDeletedDocs(); - final double delRatio = ((double) delCount)/readerMaxDoc; - merge.estimatedMergeBytes += info.sizeInBytes(true) * (1.0 - delRatio); - } - // We clone the segment readers because other // deletes may come in while we're merging so we // need readers that will not change