Skip to content

Commit 5087f77

Browse files
committed
fixed updated logic for reducing buckets
Signed-off-by: Vinay Krishna Pudyodu <[email protected]>
1 parent 34386f9 commit 5087f77

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

server/src/main/java/org/opensearch/search/aggregations/bucket/terms/InternalTerms.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -464,33 +464,36 @@ For backward compatibility, we disable the merge sort and use ({@link InternalTe
464464
}
465465
final int size = Math.min(localBucketCountThresholds.getRequiredSize(), reducedBuckets.size());
466466
final Comparator<MultiBucketsAggregation.Bucket> cmp = order.comparator();
467-
if (size < reducedBuckets.size()) {
468-
ArrayUtil.select(reducedBucketsArr, 0, reducedBuckets.size(), size, cmp);
469-
}
470-
int selectedSize = 0;
467+
471468
for (B bucket : reducedBucketsArr) {
472469
if (sumDocCountError == -1) {
473470
bucket.setDocCountError(-1);
474471
} else {
475472
final long finalSumDocCountError = sumDocCountError;
476473
bucket.setDocCountError(docCountError -> docCountError + finalSumDocCountError);
477474
}
478-
if (bucket.getDocCount() >= localBucketCountThresholds.getMinDocCount()) {
479-
B removed = ((selectedSize == size) ? bucket : null);
480-
if (removed != null) {
481-
otherDocCount += removed.getDocCount();
482-
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(removed));
483-
} else {
484-
selectedSize++;
485-
reduceContext.consumeBucketsAndMaybeBreak(1);
486-
}
487-
} else {
475+
476+
if (bucket.getDocCount() < localBucketCountThresholds.getMinDocCount()) {
488477
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(bucket));
489478
}
490479
}
480+
if (size < reducedBuckets.size()) {
481+
ArrayUtil.select(reducedBucketsArr, 0, reducedBuckets.size(), size, cmp);
482+
}
483+
484+
int selectedSize = 0;
485+
for (B bucket : reducedBucketsArr) {
486+
B removed = ((selectedSize == size) ? bucket : null);
487+
if (removed != null) {
488+
otherDocCount += removed.getDocCount();
489+
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(removed));
490+
} else {
491+
selectedSize++;
492+
reduceContext.consumeBucketsAndMaybeBreak(1);
493+
}
494+
}
491495
if (selectedSize != size) {
492496
list = createBucketsArray(selectedSize);
493-
System.arraycopy(reducedBucketsArr, 0, list, 0, selectedSize);
494497
} else {
495498
list = reducedBucketsArr;
496499
}

0 commit comments

Comments
 (0)