LUCENE-8393: TieredMergePolicy needs to take into account the maximum segment size when computing the allowed number of segments.

This commit is contained in:
Adrien Grand 2018-07-10 08:47:41 +02:00
parent 9433ab79e2
commit 8e0d9849bd
1 changed files with 2 additions and 2 deletions

View File

@ -402,13 +402,13 @@ public class TieredMergePolicy extends MergePolicy {
double allowedSegCount = 0;
while (true) {
final double segCountLevel = bytesLeft / (double) levelSize;
if (segCountLevel < segsPerTier) {
if (segCountLevel < segsPerTier || levelSize == maxMergedSegmentBytes) {
allowedSegCount += Math.ceil(segCountLevel);
break;
}
allowedSegCount += segsPerTier;
bytesLeft -= segsPerTier * levelSize;
levelSize *= mergeFactor;
levelSize = Math.min(maxMergedSegmentBytes, levelSize * mergeFactor);
}
if (verbose(mergeContext) && tooBigCount > 0) {