diff --git a/processing/src/main/java/io/druid/query/aggregation/cardinality/CardinalityAggregator.java b/processing/src/main/java/io/druid/query/aggregation/cardinality/CardinalityAggregator.java index ae96ff13736b..f79717eca817 100644 --- a/processing/src/main/java/io/druid/query/aggregation/cardinality/CardinalityAggregator.java +++ b/processing/src/main/java/io/druid/query/aggregation/cardinality/CardinalityAggregator.java @@ -109,7 +109,9 @@ public void reset() @Override public Object get() { - return collector; + // Workaround for non-thread-safe use of HyperLogLogCollector. + // OnheapIncrementalIndex has a penchant for calling "aggregate" and "get" simultaneously. + return HyperLogLogCollector.makeCollectorSharingStorage(collector); } @Override diff --git a/processing/src/main/java/io/druid/query/aggregation/hyperloglog/HyperUniquesAggregator.java b/processing/src/main/java/io/druid/query/aggregation/hyperloglog/HyperUniquesAggregator.java index 5ca26a7552eb..caf3476c0658 100644 --- a/processing/src/main/java/io/druid/query/aggregation/hyperloglog/HyperUniquesAggregator.java +++ b/processing/src/main/java/io/druid/query/aggregation/hyperloglog/HyperUniquesAggregator.java @@ -55,7 +55,8 @@ public void reset() @Override public Object get() { - // Workaround for OnheapIncrementalIndex's penchant for calling "aggregate" and "get" simultaneously. + // Workaround for non-thread-safe use of HyperLogLogCollector. + // OnheapIncrementalIndex has a penchant for calling "aggregate" and "get" simultaneously. return HyperLogLogCollector.makeCollectorSharingStorage(collector); }