Skip to content

Commit 34386f9

Browse files
committed
updated the logic for reducing buckets
Signed-off-by: Vinay Krishna Pudyodu <vinkrish.neo@gmail.com>
1 parent a711100 commit 34386f9

File tree

1 file changed

+20
-32
lines changed

1 file changed

+20
-32
lines changed

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

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -466,45 +466,33 @@ For backward compatibility, we disable the merge sort and use ({@link InternalTe
466466
final Comparator<MultiBucketsAggregation.Bucket> cmp = order.comparator();
467467
if (size < reducedBuckets.size()) {
468468
ArrayUtil.select(reducedBucketsArr, 0, reducedBuckets.size(), size, cmp);
469-
int selectedSize = 0;
470-
for (B bucket : reducedBucketsArr) {
471-
if (sumDocCountError == -1) {
472-
bucket.setDocCountError(-1);
473-
} else {
474-
final long finalSumDocCountError = sumDocCountError;
475-
bucket.setDocCountError(docCountError -> docCountError + finalSumDocCountError);
476-
}
477-
if (bucket.getDocCount() >= localBucketCountThresholds.getMinDocCount()) {
478-
B removed = ((selectedSize == size) ? bucket : null);
479-
if (removed != null) {
480-
otherDocCount += removed.getDocCount();
481-
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(removed));
482-
} else {
483-
selectedSize++;
484-
reduceContext.consumeBucketsAndMaybeBreak(1);
485-
}
469+
}
470+
int selectedSize = 0;
471+
for (B bucket : reducedBucketsArr) {
472+
if (sumDocCountError == -1) {
473+
bucket.setDocCountError(-1);
474+
} else {
475+
final long finalSumDocCountError = sumDocCountError;
476+
bucket.setDocCountError(docCountError -> docCountError + finalSumDocCountError);
477+
}
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));
486483
} else {
487-
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(bucket));
484+
selectedSize++;
485+
reduceContext.consumeBucketsAndMaybeBreak(1);
488486
}
487+
} else {
488+
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(bucket));
489489
}
490+
}
491+
if (selectedSize != size) {
490492
list = createBucketsArray(selectedSize);
491493
System.arraycopy(reducedBucketsArr, 0, list, 0, selectedSize);
492494
} else {
493-
// since only else case possible is size == reducedBuckets.size() we can use the entire list of reduced buckets
494495
list = reducedBucketsArr;
495-
for (B bucket : reducedBucketsArr) {
496-
if (sumDocCountError == -1) {
497-
bucket.setDocCountError(-1);
498-
} else {
499-
final long finalSumDocCountError = sumDocCountError;
500-
bucket.setDocCountError(docCountError -> docCountError + finalSumDocCountError);
501-
}
502-
if (bucket.getDocCount() >= localBucketCountThresholds.getMinDocCount()) {
503-
reduceContext.consumeBucketsAndMaybeBreak(1);
504-
} else {
505-
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(bucket));
506-
}
507-
}
508496
}
509497
Arrays.sort(list, cmp);
510498
} else {

0 commit comments

Comments
 (0)