Skip to content

Commit 3e02f1a

Browse files
committed
Revert "updated the logic for reducing buckets"
This reverts commit 34386f9.
1 parent 34386f9 commit 3e02f1a

File tree

1 file changed

+32
-20
lines changed

1 file changed

+32
-20
lines changed

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

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -466,33 +466,45 @@ 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-
}
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));
469+
int selectedSize = 0;
470+
for (B bucket : reducedBucketsArr) {
471+
if (sumDocCountError == -1) {
472+
bucket.setDocCountError(-1);
483473
} else {
484-
selectedSize++;
485-
reduceContext.consumeBucketsAndMaybeBreak(1);
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+
}
486+
} else {
487+
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(bucket));
486488
}
487-
} else {
488-
reduceContext.consumeBucketsAndMaybeBreak(-countInnerBucket(bucket));
489489
}
490-
}
491-
if (selectedSize != size) {
492490
list = createBucketsArray(selectedSize);
493491
System.arraycopy(reducedBucketsArr, 0, list, 0, selectedSize);
494492
} else {
493+
// since only else case possible is size == reducedBuckets.size() we can use the entire list of reduced buckets
495494
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+
}
496508
}
497509
Arrays.sort(list, cmp);
498510
} else {

0 commit comments

Comments
 (0)