From 929898db277900ebdd68abbe7f3ddd135d0e7612 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Fri, 19 May 2017 16:30:00 -0700 Subject: [PATCH] Workaround for non-thread-safe use of CardinalityAggregator. --- .../query/aggregation/cardinality/CardinalityAggregator.java | 4 +++- .../query/aggregation/hyperloglog/HyperUniquesAggregator.java | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) 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); }