From 5e4ba4a60ecc1169e86c1dd517ed05a225c5278b Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Tue, 21 Feb 2017 17:55:44 +0100 Subject: [PATCH] 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 --- .../search/aggregations/AggregatorTestCase.java | 6 +++--- .../search/aggregations/InternalAggregationTestCase.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java index aa23dfdb7a5..62249f83333 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java @@ -180,9 +180,9 @@ public abstract class AggregatorTestCase extends ESTestCase { if (aggs.isEmpty()) { return null; } else { - if (randomBoolean()) { - // sometimes do an incremental reduce - List internalAggregations = randomSubsetOf(randomIntBetween(1, aggs.size()), aggs); + if (randomBoolean() && aggs.size() > 1) { + // never do am incremental reduce with only one - some aggs can't deal with this. + List internalAggregations = randomSubsetOf(randomIntBetween(2, aggs.size()), aggs); A internalAgg = (A) aggs.get(0).doReduce(internalAggregations, new InternalAggregation.ReduceContext(root.context().bigArrays(), null, false)); aggs.removeAll(internalAggregations); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java index 502767e07bf..3ec00ce335c 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java @@ -57,9 +57,9 @@ public abstract class InternalAggregationTestCase inputs.add(t); toReduce.add(t); } - if (randomBoolean()) { - // we leave at least one in the list - List internalAggregations = randomSubsetOf(randomIntBetween(1, toReduceSize), toReduce); + if (randomBoolean() && toReduceSize > 1) { + // never do am incremental reduce with only one - some aggs can't deal with this. + List internalAggregations = randomSubsetOf(randomIntBetween(2, toReduceSize), toReduce); InternalAggregation.ReduceContext context = new InternalAggregation.ReduceContext(null, null, true); @SuppressWarnings("unchecked") T reduced = (T) inputs.get(0).reduce(internalAggregations, context);