Never reduce the same agg twice

Some randomization caused reduction of the same agg multiple times
which causes issues on some aggregations.

Relates to #23253
This commit is contained in:
Simon Willnauer 2017-02-21 17:55:44 +01:00
parent 489f38918d
commit 5e4ba4a60e
2 changed files with 6 additions and 6 deletions

View File

@ -180,9 +180,9 @@ public abstract class AggregatorTestCase extends ESTestCase {
if (aggs.isEmpty()) { if (aggs.isEmpty()) {
return null; return null;
} else { } else {
if (randomBoolean()) { if (randomBoolean() && aggs.size() > 1) {
// sometimes do an incremental reduce // never do am incremental reduce with only one - some aggs can't deal with this.
List<InternalAggregation> internalAggregations = randomSubsetOf(randomIntBetween(1, aggs.size()), aggs); List<InternalAggregation> internalAggregations = randomSubsetOf(randomIntBetween(2, aggs.size()), aggs);
A internalAgg = (A) aggs.get(0).doReduce(internalAggregations, A internalAgg = (A) aggs.get(0).doReduce(internalAggregations,
new InternalAggregation.ReduceContext(root.context().bigArrays(), null, false)); new InternalAggregation.ReduceContext(root.context().bigArrays(), null, false));
aggs.removeAll(internalAggregations); aggs.removeAll(internalAggregations);

View File

@ -57,9 +57,9 @@ public abstract class InternalAggregationTestCase<T extends InternalAggregation>
inputs.add(t); inputs.add(t);
toReduce.add(t); toReduce.add(t);
} }
if (randomBoolean()) { if (randomBoolean() && toReduceSize > 1) {
// we leave at least one in the list // never do am incremental reduce with only one - some aggs can't deal with this.
List<InternalAggregation> internalAggregations = randomSubsetOf(randomIntBetween(1, toReduceSize), toReduce); List<InternalAggregation> internalAggregations = randomSubsetOf(randomIntBetween(2, toReduceSize), toReduce);
InternalAggregation.ReduceContext context = new InternalAggregation.ReduceContext(null, null, true); InternalAggregation.ReduceContext context = new InternalAggregation.ReduceContext(null, null, true);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
T reduced = (T) inputs.get(0).reduce(internalAggregations, context); T reduced = (T) inputs.get(0).reduce(internalAggregations, context);