@@ -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