From 14307c31c6ebba81fcbc44bfc44d522afcea8c91 Mon Sep 17 00:00:00 2001 From: Roman Leventov Date: Tue, 29 Jan 2019 10:46:53 +0700 Subject: [PATCH] Add a reference to the comment about guarded computeIfAbsent() optimization; IdentityHashMap optimization --- .../FilteredAggregatorBenchmark.java | 2 +- .../GroupByTypeInterfaceBenchmark.java | 2 +- .../benchmark/TopNTypeInterfaceBenchmark.java | 5 +- .../benchmark/query/GroupByBenchmark.java | 2 +- .../benchmark/query/QueryBenchmarkUtil.java | 2 +- .../benchmark/query/SearchBenchmark.java | 2 +- .../benchmark/query/SelectBenchmark.java | 2 +- .../benchmark/query/TimeseriesBenchmark.java | 2 +- .../druid/benchmark/query/TopNBenchmark.java | 5 +- .../timecompare/TimeCompareBenchmark.java | 7 +- .../emitter/core/ParametrizedUriEmitter.java | 10 +-- ...terializedViewQueryQueryToolChestTest.java | 2 +- .../segment/MapVirtualColumnGroupByTest.java | 2 +- .../segment/MapVirtualColumnSelectTest.java | 2 +- .../segment/MapVirtualColumnTopNTest.java | 2 +- .../ApproximateHistogramTopNQueryTest.java | 4 +- .../FixedBucketsHistogramTopNQueryTest.java | 4 +- .../namespace/cache/CacheScheduler.java | 6 +- .../variance/VarianceTopNQueryTest.java | 2 +- .../druid/indexing/common/Counters.java | 2 + ...DefaultQueryRunnerFactoryConglomerate.java | 9 ++- .../query/MapQueryToolChestWarehouse.java | 9 ++- .../apache/druid/query/QueryToolChest.java | 30 ++++++++ .../druid/query/ReflectionLoaderThingy.java | 77 ------------------- .../ReflectionQueryToolChestWarehouse.java | 22 +++++- .../DataSourceQueryQueryToolChest.java | 5 +- .../SpecializationService.java | 1 + .../druid/query/MultiValuedDimensionTest.java | 2 +- .../druid/query/QueryRunnerTestHelper.java | 4 +- .../apache/druid/query/TestQueryRunners.java | 6 +- .../aggregation/AggregationTestHelper.java | 8 +- .../groupby/GroupByQueryMergeBufferTest.java | 7 +- .../GroupByQueryRunnerFailureTest.java | 7 +- .../query/groupby/GroupByQueryRunnerTest.java | 8 +- .../groupby/NestedQueryPushDownTest.java | 6 +- .../query/search/SearchQueryRunnerTest.java | 2 +- .../search/SearchQueryRunnerWithCaseTest.java | 4 +- .../select/MultiSegmentSelectQueryTest.java | 2 +- .../select/SelectQueryQueryToolChestTest.java | 2 +- .../query/select/SelectQueryRunnerTest.java | 2 +- .../TimeSeriesUnionQueryRunnerTest.java | 4 +- .../TimeseriesQueryRunnerBonusTest.java | 2 +- .../timeseries/TimeseriesQueryRunnerTest.java | 10 +-- .../topn/TopNQueryQueryToolChestTest.java | 2 +- .../query/topn/TopNQueryRunnerBenchmark.java | 2 +- .../druid/query/topn/TopNQueryRunnerTest.java | 4 +- .../druid/query/topn/TopNUnionQueryTest.java | 4 +- .../IndexMergerV9WithSpatialIndexTest.java | 6 +- .../segment/data/IncrementalIndexTest.java | 4 +- .../filter/SpatialFilterBonusTest.java | 6 +- .../segment/filter/SpatialFilterTest.java | 6 +- .../OnheapIncrementalIndexBenchmark.java | 2 +- .../druid/client/DirectDruidClient.java | 31 +------- .../EventReceiverFirehoseFactory.java | 10 +-- .../client/CachingClusteredClientTest.java | 30 ++++---- .../CachingClusteredClientTestUtils.java | 8 +- .../druid/client/CachingQueryRunnerTest.java | 4 +- .../druid/sql/calcite/util/CalciteTests.java | 8 +- 58 files changed, 184 insertions(+), 239 deletions(-) delete mode 100644 processing/src/main/java/org/apache/druid/query/ReflectionLoaderThingy.java diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/FilteredAggregatorBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/FilteredAggregatorBenchmark.java index 2116a14c86bf..e156d24b38c4 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/FilteredAggregatorBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/FilteredAggregatorBenchmark.java @@ -201,7 +201,7 @@ public void setup() throws IOException factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator() + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() ), new TimeseriesQueryEngine(), QueryBenchmarkUtil.NOOP_QUERYWATCHER diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java index 43a353cd2db2..9a13f7c68458 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java @@ -407,7 +407,7 @@ public String getFormatString() strategySelector, new GroupByQueryQueryToolChest( strategySelector, - QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator() + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() ) ); } diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/TopNTypeInterfaceBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/TopNTypeInterfaceBenchmark.java index 2974441ae2a7..3d01e1a3eec7 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/TopNTypeInterfaceBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/TopNTypeInterfaceBenchmark.java @@ -299,7 +299,10 @@ public void setup() throws IOException 0, Integer.MAX_VALUE ), - new TopNQueryQueryToolChest(new TopNQueryConfig(), QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator()), + new TopNQueryQueryToolChest( + new TopNQueryConfig(), + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() + ), QueryBenchmarkUtil.NOOP_QUERYWATCHER ); } diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/GroupByBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/GroupByBenchmark.java index 243564c0e29e..f96aef616c10 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/GroupByBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/GroupByBenchmark.java @@ -495,7 +495,7 @@ public String getFormatString() strategySelector, new GroupByQueryQueryToolChest( strategySelector, - QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator() + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() ) ); } diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/QueryBenchmarkUtil.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/QueryBenchmarkUtil.java index 411ca226e00c..6e6ae2a82b72 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/QueryBenchmarkUtil.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/QueryBenchmarkUtil.java @@ -49,7 +49,7 @@ public static > QueryRunner makeQueryRunner( ); } - public static IntervalChunkingQueryRunnerDecorator NoopIntervalChunkingQueryRunnerDecorator() + public static IntervalChunkingQueryRunnerDecorator noopIntervalChunkingQueryRunnerDecorator() { return new IntervalChunkingQueryRunnerDecorator(null, null, null) { @Override diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java index 5c84a6799bce..122914ba00e1 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java @@ -373,7 +373,7 @@ public void setup() throws IOException new SearchStrategySelector(Suppliers.ofInstance(config)), new SearchQueryQueryToolChest( config, - QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator() + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() ), QueryBenchmarkUtil.NOOP_QUERYWATCHER ); diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/SelectBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/SelectBenchmark.java index bd2126465664..36fd251ba312 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/SelectBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/SelectBenchmark.java @@ -233,7 +233,7 @@ public void setup() throws IOException factory = new SelectQueryRunnerFactory( new SelectQueryQueryToolChest( JSON_MAPPER, - QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator(), + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator(), selectConfigSupplier ), new SelectQueryEngine(), diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/TimeseriesBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/TimeseriesBenchmark.java index 94efa930e065..5c58c94ff87f 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/TimeseriesBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/TimeseriesBenchmark.java @@ -296,7 +296,7 @@ public void setup() throws IOException factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator() + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() ), new TimeseriesQueryEngine(), QueryBenchmarkUtil.NOOP_QUERYWATCHER diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/TopNBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/TopNBenchmark.java index 717cd36968bb..566ebe326b2f 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/TopNBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/TopNBenchmark.java @@ -278,7 +278,10 @@ public void setup() throws IOException 0, Integer.MAX_VALUE ), - new TopNQueryQueryToolChest(new TopNQueryConfig(), QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator()), + new TopNQueryQueryToolChest( + new TopNQueryConfig(), + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() + ), QueryBenchmarkUtil.NOOP_QUERYWATCHER ); } diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/timecompare/TimeCompareBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/timecompare/TimeCompareBenchmark.java index 179bbd7cb7a1..85ef6007af8f 100644 --- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/timecompare/TimeCompareBenchmark.java +++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/timecompare/TimeCompareBenchmark.java @@ -229,7 +229,10 @@ private void setupQueries() 0, Integer.MAX_VALUE ), - new TopNQueryQueryToolChest(new TopNQueryConfig(), QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator()), + new TopNQueryQueryToolChest( + new TopNQueryConfig(), + QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator() + ), QueryBenchmarkUtil.NOOP_QUERYWATCHER ); } @@ -270,7 +273,7 @@ private void setupQueries() timeseriesQuery = timeseriesQueryBuilder.build(); timeseriesFactory = new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(QueryBenchmarkUtil.NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(QueryBenchmarkUtil.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryBenchmarkUtil.NOOP_QUERYWATCHER ); diff --git a/core/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriEmitter.java b/core/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriEmitter.java index 2588b32614be..8e4db9edf8ba 100644 --- a/core/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriEmitter.java +++ b/core/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriEmitter.java @@ -120,21 +120,19 @@ public void emit(Event event) { try { URI uri = uriExtractor.apply(event); + // get() before computeIfAbsent() is an optimization to avoid locking in computeIfAbsent() if not needed. + // See https://github.com/apache/incubator-druid/pull/6898#discussion_r251384586. HttpPostEmitter emitter = emitters.get(uri); if (emitter == null) { try { emitter = emitters.computeIfAbsent(uri, u -> { try { return innerLifecycle.addMaybeStartManagedInstance( - new HttpPostEmitter( - config.buildHttpEmitterConfig(u.toString()), - client, - jsonMapper - ) + new HttpPostEmitter(config.buildHttpEmitterConfig(u.toString()), client, jsonMapper) ); } catch (Exception e) { - throw Throwables.propagate(e); + throw new RuntimeException(e); } }); } diff --git a/extensions-contrib/materialized-view-selection/src/test/java/org/apache/druid/query/materializedview/MaterializedViewQueryQueryToolChestTest.java b/extensions-contrib/materialized-view-selection/src/test/java/org/apache/druid/query/materializedview/MaterializedViewQueryQueryToolChestTest.java index 0c750c3f5179..e3974eecb635 100644 --- a/extensions-contrib/materialized-view-selection/src/test/java/org/apache/druid/query/materializedview/MaterializedViewQueryQueryToolChestTest.java +++ b/extensions-contrib/materialized-view-selection/src/test/java/org/apache/druid/query/materializedview/MaterializedViewQueryQueryToolChestTest.java @@ -58,7 +58,7 @@ public void testMakePostComputeManipulatorFn() .put( TimeseriesQuery.class, new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ) .build() diff --git a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java index 29f25fa83fa4..5a28fbf98d75 100644 --- a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java +++ b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnGroupByTest.java @@ -109,7 +109,7 @@ public int getNumThreads() strategySelector, new GroupByQueryQueryToolChest( strategySelector, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); diff --git a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnSelectTest.java b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnSelectTest.java index ee15c7ec3689..f248bec0d3bb 100644 --- a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnSelectTest.java +++ b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnSelectTest.java @@ -70,7 +70,7 @@ public static Iterable constructorFeeder() throws IOException SelectQueryRunnerFactory factory = new SelectQueryRunnerFactory( new SelectQueryQueryToolChest( new DefaultObjectMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), selectConfigSupplier ), new SelectQueryEngine(), diff --git a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java index be1c10a43d77..761230d91cbf 100644 --- a/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java +++ b/extensions-contrib/virtual-columns/src/test/java/org/apache/druid/segment/MapVirtualColumnTopNTest.java @@ -69,7 +69,7 @@ public void setup() throws IOException new StupidPool<>("map-virtual-column-test", () -> ByteBuffer.allocate(1024)), new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTopNQueryTest.java b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTopNQueryTest.java index 5bac2ac8a0a8..4a5585da717f 100644 --- a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTopNQueryTest.java +++ b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTopNQueryTest.java @@ -81,7 +81,7 @@ public static Iterable constructorFeeder() defaultPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) @@ -91,7 +91,7 @@ public static Iterable constructorFeeder() customPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) diff --git a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramTopNQueryTest.java b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramTopNQueryTest.java index 42fc6487f3e9..04bc90469b1c 100644 --- a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramTopNQueryTest.java +++ b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramTopNQueryTest.java @@ -81,7 +81,7 @@ public static Iterable constructorFeeder() defaultPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) @@ -91,7 +91,7 @@ public static Iterable constructorFeeder() customPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) diff --git a/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/CacheScheduler.java b/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/CacheScheduler.java index 658cd2ce1058..40a05992114f 100644 --- a/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/CacheScheduler.java +++ b/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/CacheScheduler.java @@ -34,6 +34,7 @@ import sun.misc.Cleaner; import javax.annotation.Nullable; +import java.util.IdentityHashMap; import java.util.Map; import java.util.concurrent.CancellationException; import java.util.concurrent.CountDownLatch; @@ -424,7 +425,9 @@ public CacheScheduler( NamespaceExtractionCacheManager cacheManager ) { - this.namespaceGeneratorMap = namespaceGeneratorMap; + // Accesses to IdentityHashMap should be faster than to HashMap or ImmutableMap. + // Class doesn't override Object.equals(). + this.namespaceGeneratorMap = new IdentityHashMap<>(namespaceGeneratorMap); this.cacheManager = cacheManager; cacheManager.scheduledExecutorService().scheduleAtFixedRate( new Runnable() @@ -506,6 +509,7 @@ public Entry scheduleAndWait(ExtractionNamespace namespace, long waitForFirstRun public Entry schedule(final T namespace) { + @SuppressWarnings("unchecked") final CacheGenerator generator = (CacheGenerator) namespaceGeneratorMap.get(namespace.getClass()); if (generator == null) { throw new ISE("Cannot find generator for namespace [%s]", namespace); diff --git a/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/VarianceTopNQueryTest.java b/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/VarianceTopNQueryTest.java index e634b67984b6..7b5406bc4b3e 100644 --- a/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/VarianceTopNQueryTest.java +++ b/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/VarianceTopNQueryTest.java @@ -137,7 +137,7 @@ private Sequence> assertExpectedResults( { final TopNQueryQueryToolChest chest = new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); final QueryRunner> mergeRunner = chest.mergeResults(runner); final Sequence> retval = mergeRunner.run( diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/common/Counters.java b/indexing-service/src/main/java/org/apache/druid/indexing/common/Counters.java index 4ea064abc983..e46389083fb6 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/common/Counters.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/common/Counters.java @@ -28,6 +28,7 @@ public final class Counters public static int incrementAndGetInt(ConcurrentHashMap counters, K key) { // get() before computeIfAbsent() is an optimization to avoid locking in computeIfAbsent() if not needed. + // See https://github.com/apache/incubator-druid/pull/6898#discussion_r251384586. AtomicInteger counter = counters.get(key); if (counter == null) { counter = counters.computeIfAbsent(key, k -> new AtomicInteger()); @@ -38,6 +39,7 @@ public static int incrementAndGetInt(ConcurrentHashMap cou public static long incrementAndGetLong(ConcurrentHashMap counters, K key) { // get() before computeIfAbsent() is an optimization to avoid locking in computeIfAbsent() if not needed. + // See https://github.com/apache/incubator-druid/pull/6898#discussion_r251384586. AtomicLong counter = counters.get(key); if (counter == null) { counter = counters.computeIfAbsent(key, k -> new AtomicLong()); diff --git a/processing/src/main/java/org/apache/druid/query/DefaultQueryRunnerFactoryConglomerate.java b/processing/src/main/java/org/apache/druid/query/DefaultQueryRunnerFactoryConglomerate.java index ecd77b70021b..7f004ffa6343 100644 --- a/processing/src/main/java/org/apache/druid/query/DefaultQueryRunnerFactoryConglomerate.java +++ b/processing/src/main/java/org/apache/druid/query/DefaultQueryRunnerFactoryConglomerate.java @@ -21,6 +21,7 @@ import com.google.inject.Inject; +import java.util.IdentityHashMap; import java.util.Map; /** @@ -30,11 +31,11 @@ public class DefaultQueryRunnerFactoryConglomerate implements QueryRunnerFactory private final Map, QueryRunnerFactory> factories; @Inject - public DefaultQueryRunnerFactoryConglomerate( - Map, QueryRunnerFactory> factories - ) + public DefaultQueryRunnerFactoryConglomerate(Map, QueryRunnerFactory> factories) { - this.factories = factories; + // Accesses to IdentityHashMap should be faster than to HashMap or ImmutableMap. + // Class doesn't override Object.equals(). + this.factories = new IdentityHashMap<>(factories); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/MapQueryToolChestWarehouse.java b/processing/src/main/java/org/apache/druid/query/MapQueryToolChestWarehouse.java index db88db14dbe3..7199c957c4a4 100644 --- a/processing/src/main/java/org/apache/druid/query/MapQueryToolChestWarehouse.java +++ b/processing/src/main/java/org/apache/druid/query/MapQueryToolChestWarehouse.java @@ -21,6 +21,7 @@ import com.google.inject.Inject; +import java.util.IdentityHashMap; import java.util.Map; /** @@ -30,11 +31,11 @@ public class MapQueryToolChestWarehouse implements QueryToolChestWarehouse private final Map, QueryToolChest> toolchests; @Inject - public MapQueryToolChestWarehouse( - Map, QueryToolChest> toolchests - ) + public MapQueryToolChestWarehouse(Map, QueryToolChest> toolchests) { - this.toolchests = toolchests; + // Accesses to IdentityHashMap should be faster than to HashMap or ImmutableMap. + // Class doesn't override Object.equals(). + this.toolchests = new IdentityHashMap<>(toolchests); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/QueryToolChest.java b/processing/src/main/java/org/apache/druid/query/QueryToolChest.java index 0b890c061331..22194598350f 100644 --- a/processing/src/main/java/org/apache/druid/query/QueryToolChest.java +++ b/processing/src/main/java/org/apache/druid/query/QueryToolChest.java @@ -20,6 +20,8 @@ package org.apache.druid.query; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.type.TypeFactory; import com.google.common.base.Function; import org.apache.druid.guice.annotations.ExtensionPoint; import org.apache.druid.query.aggregation.MetricManipulationFn; @@ -34,6 +36,34 @@ @ExtensionPoint public abstract class QueryToolChest> { + private final JavaType baseResultType; + private final JavaType bySegmentResultType; + + protected QueryToolChest() + { + final TypeFactory typeFactory = TypeFactory.defaultInstance(); + baseResultType = typeFactory.constructType(getResultTypeReference()); + bySegmentResultType = typeFactory.constructParametrizedType( + Result.class, + Result.class, + typeFactory.constructParametrizedType( + BySegmentResultValueClass.class, + BySegmentResultValueClass.class, + baseResultType + ) + ); + } + + public final JavaType getBaseResultType() + { + return baseResultType; + } + + public final JavaType getBySegmentResultType() + { + return bySegmentResultType; + } + /** * This method wraps a QueryRunner. The input QueryRunner, by contract, will provide a series of * ResultType objects in time order (ascending or descending). This method should return a new QueryRunner that diff --git a/processing/src/main/java/org/apache/druid/query/ReflectionLoaderThingy.java b/processing/src/main/java/org/apache/druid/query/ReflectionLoaderThingy.java deleted file mode 100644 index 6fb01cd0102a..000000000000 --- a/processing/src/main/java/org/apache/druid/query/ReflectionLoaderThingy.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.druid.query; - -import org.apache.druid.java.util.common.StringUtils; -import org.apache.druid.java.util.common.logger.Logger; - -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.atomic.AtomicReference; - -/** - */ -@Deprecated -public class ReflectionLoaderThingy -{ - private static final Logger log = new Logger(ReflectionLoaderThingy.class); - - public static ReflectionLoaderThingy create(Class interfaceClass) - { - return new ReflectionLoaderThingy(interfaceClass); - } - - ConcurrentMap, AtomicReference> toolChestMap = new ConcurrentHashMap<>(); - - private final Class interfaceClass; - - public ReflectionLoaderThingy( - Class interfaceClass - ) - { - this.interfaceClass = interfaceClass; - } - - public T getForObject(Object keyObject) - { - Class clazz = keyObject.getClass(); - - AtomicReference retVal = toolChestMap.get(clazz); - - if (retVal == null) { - String interfaceName = interfaceClass.getSimpleName(); - - AtomicReference retVal1; - try { - final Class queryToolChestClass = Class.forName(StringUtils.format("%s%s", clazz.getName(), interfaceName)); - retVal1 = new AtomicReference(interfaceClass.cast(queryToolChestClass.newInstance())); - } - catch (Exception e) { - log.warn(e, "Unable to load interface[%s] for input class[%s]", interfaceClass, clazz); - retVal1 = new AtomicReference(null); - } - retVal = retVal1; - - toolChestMap.put(clazz, retVal); - } - - return retVal.get(); - } -} diff --git a/processing/src/main/java/org/apache/druid/query/ReflectionQueryToolChestWarehouse.java b/processing/src/main/java/org/apache/druid/query/ReflectionQueryToolChestWarehouse.java index 4c7aab72d439..e2b047c1b2d1 100644 --- a/processing/src/main/java/org/apache/druid/query/ReflectionQueryToolChestWarehouse.java +++ b/processing/src/main/java/org/apache/druid/query/ReflectionQueryToolChestWarehouse.java @@ -19,17 +19,35 @@ package org.apache.druid.query; +import org.apache.druid.java.util.common.logger.Logger; + /** */ @Deprecated public class ReflectionQueryToolChestWarehouse implements QueryToolChestWarehouse { - ReflectionLoaderThingy loader = ReflectionLoaderThingy.create(QueryToolChest.class); + private static final Logger log = new Logger(ReflectionQueryToolChestWarehouse.class); + + private final ClassValue> toolChests = new ClassValue>() + { + @Override + protected QueryToolChest computeValue(Class type) + { + try { + final Class queryToolChestClass = Class.forName(type.getName() + "QueryToolChest"); + return (QueryToolChest) queryToolChestClass.newInstance(); + } + catch (Exception e) { + log.warn(e, "Unable to load interface[QueryToolChest] for input class[%s]", type); + throw new RuntimeException(e); + } + } + }; @Override @SuppressWarnings("unchecked") public > QueryToolChest getToolChest(QueryType query) { - return (QueryToolChest) loader.getForObject(query); + return (QueryToolChest) toolChests.get(query.getClass()); } } diff --git a/processing/src/main/java/org/apache/druid/query/datasourcemetadata/DataSourceQueryQueryToolChest.java b/processing/src/main/java/org/apache/druid/query/datasourcemetadata/DataSourceQueryQueryToolChest.java index 13d265186b40..e1befab71ad3 100644 --- a/processing/src/main/java/org/apache/druid/query/datasourcemetadata/DataSourceQueryQueryToolChest.java +++ b/processing/src/main/java/org/apache/druid/query/datasourcemetadata/DataSourceQueryQueryToolChest.java @@ -48,9 +48,8 @@ public class DataSourceQueryQueryToolChest extends QueryToolChest, DataSourceMetadataQuery> { - private static final TypeReference> TYPE_REFERENCE = new TypeReference>() - { - }; + private static final TypeReference> TYPE_REFERENCE = + new TypeReference>() {}; private final GenericQueryMetricsFactory queryMetricsFactory; diff --git a/processing/src/main/java/org/apache/druid/query/monomorphicprocessing/SpecializationService.java b/processing/src/main/java/org/apache/druid/query/monomorphicprocessing/SpecializationService.java index b5de1e27597c..7f0089d73a05 100644 --- a/processing/src/main/java/org/apache/druid/query/monomorphicprocessing/SpecializationService.java +++ b/processing/src/main/java/org/apache/druid/query/monomorphicprocessing/SpecializationService.java @@ -164,6 +164,7 @@ SpecializationState getSpecializationState(String runtimeShape, ImmutableMap< { SpecializationId specializationId = new SpecializationId(runtimeShape, classRemapping); // get() before computeIfAbsent() is an optimization to avoid locking in computeIfAbsent() if not needed. + // See https://github.com/apache/incubator-druid/pull/6898#discussion_r251384586. SpecializationState alreadyExistingState = specializationStates.get(specializationId); if (alreadyExistingState != null) { return alreadyExistingState; diff --git a/processing/src/test/java/org/apache/druid/query/MultiValuedDimensionTest.java b/processing/src/test/java/org/apache/druid/query/MultiValuedDimensionTest.java index 877043bcf729..c4c4a0b99af6 100644 --- a/processing/src/test/java/org/apache/druid/query/MultiValuedDimensionTest.java +++ b/processing/src/test/java/org/apache/druid/query/MultiValuedDimensionTest.java @@ -271,7 +271,7 @@ public void testTopNWithDimFilterAndWithFilteredDimSpec() pool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/query/QueryRunnerTestHelper.java b/processing/src/test/java/org/apache/druid/query/QueryRunnerTestHelper.java index 1b7b8900a6fc..094e8fc2c321 100644 --- a/processing/src/test/java/org/apache/druid/query/QueryRunnerTestHelper.java +++ b/processing/src/test/java/org/apache/druid/query/QueryRunnerTestHelper.java @@ -475,7 +475,7 @@ public Sequence run(QueryPlus queryPlus, Map responseConte .applyPostMergeDecoration(); } - public static IntervalChunkingQueryRunnerDecorator NoopIntervalChunkingQueryRunnerDecorator() + public static IntervalChunkingQueryRunnerDecorator noopIntervalChunkingQueryRunnerDecorator() { return new IntervalChunkingQueryRunnerDecorator(null, null, null) { @@ -518,7 +518,7 @@ public static Map of(Object... keyvalues) public static TimeseriesQueryRunnerFactory newTimeseriesQueryRunnerFactory() { return new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/query/TestQueryRunners.java b/processing/src/test/java/org/apache/druid/query/TestQueryRunners.java index 24b104da87c6..ecba0055ef2e 100644 --- a/processing/src/test/java/org/apache/druid/query/TestQueryRunners.java +++ b/processing/src/test/java/org/apache/druid/query/TestQueryRunners.java @@ -57,7 +57,7 @@ public static QueryRunner makeTopNQueryRunner(Segment adapter, NonBlockin pool, new TopNQueryQueryToolChest( topNConfig, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -71,7 +71,7 @@ public static QueryRunner makeTimeSeriesQueryRunner(Segment adapter) { QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -89,7 +89,7 @@ public static QueryRunner makeSearchQueryRunner(Segment adapter) new SearchStrategySelector(Suppliers.ofInstance(config)), new SearchQueryQueryToolChest( config, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/AggregationTestHelper.java b/processing/src/test/java/org/apache/druid/query/aggregation/AggregationTestHelper.java index f1503cb1c312..cff1b4f689ac 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/AggregationTestHelper.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/AggregationTestHelper.java @@ -195,14 +195,14 @@ public static AggregationTestHelper createSelectQueryAggregationTestHelper( SelectQueryQueryToolChest toolchest = new SelectQueryQueryToolChest( TestHelper.makeJsonMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), configSupplier ); SelectQueryRunnerFactory factory = new SelectQueryRunnerFactory( new SelectQueryQueryToolChest( TestHelper.makeJsonMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), configSupplier ), new SelectQueryEngine( @@ -242,7 +242,7 @@ public static AggregationTestHelper createTimeseriesQueryAggregationTestHelper( ObjectMapper mapper = TestHelper.makeJsonMapper(); TimeseriesQueryQueryToolChest toolchest = new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( @@ -284,7 +284,7 @@ public static AggregationTestHelper createTopNQueryAggregationTestHelper( TopNQueryQueryToolChest toolchest = new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); final CloseableStupidPool pool = new CloseableStupidPool<>( diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java index 19f3a5862677..36e55051e5f8 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java @@ -157,12 +157,9 @@ private static GroupByQueryRunnerFactory makeQueryRunnerFactory( ); final GroupByQueryQueryToolChest toolChest = new GroupByQueryQueryToolChest( strategySelector, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() - ); - return new GroupByQueryRunnerFactory( - strategySelector, - toolChest + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); + return new GroupByQueryRunnerFactory(strategySelector, toolChest); } private static final CloseableStupidPool bufferPool = new CloseableStupidPool<>( diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java index 9222ba5c7ace..e804de9cf49d 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java @@ -119,12 +119,9 @@ private static GroupByQueryRunnerFactory makeQueryRunnerFactory( ); final GroupByQueryQueryToolChest toolChest = new GroupByQueryQueryToolChest( strategySelector, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() - ); - return new GroupByQueryRunnerFactory( - strategySelector, - toolChest + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); + return new GroupByQueryRunnerFactory(strategySelector, toolChest); } private static final CloseableStupidPool bufferPool = new CloseableStupidPool<>( diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java index 3a2d5324e53b..96e369966dbb 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java @@ -396,13 +396,7 @@ public ByteBuffer get() final Closer closer = Closer.create(); closer.register(bufferPool); closer.register(mergeBufferPool); - return Pair.of( - new GroupByQueryRunnerFactory( - strategySelector, - toolChest - ), - closer - ); + return Pair.of(new GroupByQueryRunnerFactory(strategySelector, toolChest), closer); } @Parameterized.Parameters(name = "{0}") diff --git a/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java b/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java index 0eb5e9afd922..e730abf1d410 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java @@ -354,7 +354,7 @@ public String getFormatString() strategySelector, new GroupByQueryQueryToolChest( strategySelector, - NoopIntervalChunkingQueryRunnerDecorator() + noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -362,7 +362,7 @@ public String getFormatString() strategySelector2, new GroupByQueryQueryToolChest( strategySelector2, - NoopIntervalChunkingQueryRunnerDecorator() + noopIntervalChunkingQueryRunnerDecorator() ) ); } @@ -919,7 +919,7 @@ public void registerQuery(Query query, ListenableFuture future) } }; - public static IntervalChunkingQueryRunnerDecorator NoopIntervalChunkingQueryRunnerDecorator() + public static IntervalChunkingQueryRunnerDecorator noopIntervalChunkingQueryRunnerDecorator() { return new IntervalChunkingQueryRunnerDecorator(null, null, null) { diff --git a/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerTest.java index 4d3d1e059057..af2bdf8b28f6 100644 --- a/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerTest.java @@ -79,7 +79,7 @@ public class SearchQueryRunnerTest private static final SearchQueryConfig config = new SearchQueryConfig(); private static final SearchQueryQueryToolChest toolChest = new SearchQueryQueryToolChest( config, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); private static final SearchStrategySelector selector = new SearchStrategySelector(Suppliers.ofInstance(config)); diff --git a/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java b/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java index 98d3568b3fbd..b80253890ea2 100644 --- a/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java +++ b/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java @@ -51,12 +51,12 @@ import java.util.TreeMap; import static org.apache.druid.query.QueryRunnerTestHelper.NOOP_QUERYWATCHER; -import static org.apache.druid.query.QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator; import static org.apache.druid.query.QueryRunnerTestHelper.allGran; import static org.apache.druid.query.QueryRunnerTestHelper.dataSource; import static org.apache.druid.query.QueryRunnerTestHelper.fullOnIntervalSpec; import static org.apache.druid.query.QueryRunnerTestHelper.makeQueryRunner; import static org.apache.druid.query.QueryRunnerTestHelper.marketDimension; +import static org.apache.druid.query.QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator; import static org.apache.druid.query.QueryRunnerTestHelper.placementDimension; import static org.apache.druid.query.QueryRunnerTestHelper.placementishDimension; import static org.apache.druid.query.QueryRunnerTestHelper.qualityDimension; @@ -130,7 +130,7 @@ static SearchQueryRunnerFactory makeRunnerFactory(final SearchQueryConfig config new SearchStrategySelector(Suppliers.ofInstance(config)), new SearchQueryQueryToolChest( config, - NoopIntervalChunkingQueryRunnerDecorator() + noopIntervalChunkingQueryRunnerDecorator() ), NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/query/select/MultiSegmentSelectQueryTest.java b/processing/src/test/java/org/apache/druid/query/select/MultiSegmentSelectQueryTest.java index 2edc2b6c8e5c..1b7eacc449f0 100644 --- a/processing/src/test/java/org/apache/druid/query/select/MultiSegmentSelectQueryTest.java +++ b/processing/src/test/java/org/apache/druid/query/select/MultiSegmentSelectQueryTest.java @@ -75,7 +75,7 @@ public class MultiSegmentSelectQueryTest private static final SelectQueryQueryToolChest toolChest = new SelectQueryQueryToolChest( new DefaultObjectMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), configSupplier ); diff --git a/processing/src/test/java/org/apache/druid/query/select/SelectQueryQueryToolChestTest.java b/processing/src/test/java/org/apache/druid/query/select/SelectQueryQueryToolChestTest.java index 5d9da392a89c..46f12daad0ff 100644 --- a/processing/src/test/java/org/apache/druid/query/select/SelectQueryQueryToolChestTest.java +++ b/processing/src/test/java/org/apache/druid/query/select/SelectQueryQueryToolChestTest.java @@ -38,7 +38,7 @@ public class SelectQueryQueryToolChestTest private static final SelectQueryQueryToolChest toolChest = new SelectQueryQueryToolChest( new DefaultObjectMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), configSupplier ); diff --git a/processing/src/test/java/org/apache/druid/query/select/SelectQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/select/SelectQueryRunnerTest.java index a5ce234c68be..3034315c5984 100644 --- a/processing/src/test/java/org/apache/druid/query/select/SelectQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/select/SelectQueryRunnerTest.java @@ -129,7 +129,7 @@ public class SelectQueryRunnerTest private static final SelectQueryQueryToolChest toolChest = new SelectQueryQueryToolChest( new DefaultObjectMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), configSupplier ); diff --git a/processing/src/test/java/org/apache/druid/query/timeseries/TimeSeriesUnionQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/timeseries/TimeSeriesUnionQueryRunnerTest.java index 4efcddb990e0..48a322b08c87 100644 --- a/processing/src/test/java/org/apache/druid/query/timeseries/TimeSeriesUnionQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/timeseries/TimeSeriesUnionQueryRunnerTest.java @@ -62,7 +62,7 @@ public static Iterable constructorFeeder() return QueryRunnerTestHelper.cartesian( QueryRunnerTestHelper.makeUnionQueryRunners( new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) @@ -145,7 +145,7 @@ public void testUnionResultMerging() ) .descending(descending) .build(); - QueryToolChest toolChest = new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()); + QueryToolChest toolChest = new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()); final List> ds1 = Lists.newArrayList( new Result<>( DateTimes.of("2011-04-02"), diff --git a/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerBonusTest.java b/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerBonusTest.java index 824552203d9f..22134a10e863 100644 --- a/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerBonusTest.java +++ b/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerBonusTest.java @@ -112,7 +112,7 @@ public void testOneRowAtATime() throws Exception private List> runTimeseriesCount(IncrementalIndex index) { final QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java index d59ddf12e2fc..c24fc72c0da2 100644 --- a/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/timeseries/TimeseriesQueryRunnerTest.java @@ -93,7 +93,7 @@ public static Iterable constructorFeeder() QueryRunnerTestHelper.makeQueryRunners( new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER @@ -508,7 +508,7 @@ public void testTimeseriesGrandTotal() // Must create a toolChest so we can run mergeResults (which applies grand totals). QueryToolChest, TimeseriesQuery> toolChest = new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); // Must wrapped in a results finalizer to stop the runner's builtin finalizer from being called. @@ -559,7 +559,7 @@ public void testTimeseriesIntervalOutOfRanges() // Must create a toolChest so we can run mergeResults (which creates the zeroed-out row). QueryToolChest, TimeseriesQuery> toolChest = new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); // Must wrapped in a results finalizer to stop the runner's builtin finalizer from being called. @@ -2425,7 +2425,7 @@ public void testTimeSeriesWithSelectionFilterLookupExtractionFn() TestHelper.assertExpectedResults(expectedResults, results); QueryToolChest, TimeseriesQuery> toolChest = new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); QueryRunner> optimizedRunner = toolChest.postMergeQueryDecoration( toolChest.mergeResults(toolChest.preMergeQueryDecoration(runner))); @@ -2455,7 +2455,7 @@ public void testTimeseriesWithLimit() // Must create a toolChest so we can run mergeResults. QueryToolChest, TimeseriesQuery> toolChest = new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); // Must wrapped in a results finalizer to stop the runner's builtin finalizer from being called. diff --git a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryQueryToolChestTest.java b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryQueryToolChestTest.java index 8212dc7f7a7c..e263c1eef2b8 100644 --- a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryQueryToolChestTest.java +++ b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryQueryToolChestTest.java @@ -136,7 +136,7 @@ public void testMinTopNThreshold() TopNQueryConfig config = new TopNQueryConfig(); final TopNQueryQueryToolChest chest = new TopNQueryQueryToolChest( config, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); try (CloseableStupidPool pool = TestQueryRunners.createDefaultNonBlockingPool()) { QueryRunnerFactory factory = new TopNQueryRunnerFactory( diff --git a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerBenchmark.java b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerBenchmark.java index a43957e755cf..839ee6d5aba7 100644 --- a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerBenchmark.java +++ b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerBenchmark.java @@ -99,7 +99,7 @@ public ByteBuffer get() } } ), - new TopNQueryQueryToolChest(new TopNQueryConfig(), QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + new TopNQueryQueryToolChest(new TopNQueryConfig(), QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); testCaseMap.put( diff --git a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java index da23ca673a73..0244372dc309 100644 --- a/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/topn/TopNQueryRunnerTest.java @@ -260,7 +260,7 @@ private Sequence> runWithMerge(TopNQuery query, Map> mergeRunner = new FinalizeResultsQueryRunner( chest.mergeResults(runner), @@ -4281,7 +4281,7 @@ private Sequence> runWithPreMergeAndMerge(TopNQuery quer { final TopNQueryQueryToolChest chest = new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); final QueryRunner> Runner = new FinalizeResultsQueryRunner( chest.mergeResults(chest.preMergeQueryDecoration(runner)), diff --git a/processing/src/test/java/org/apache/druid/query/topn/TopNUnionQueryTest.java b/processing/src/test/java/org/apache/druid/query/topn/TopNUnionQueryTest.java index 0aa1fcde8827..076bbda48fe3 100644 --- a/processing/src/test/java/org/apache/druid/query/topn/TopNUnionQueryTest.java +++ b/processing/src/test/java/org/apache/druid/query/topn/TopNUnionQueryTest.java @@ -73,7 +73,7 @@ public static Iterable constructorFeeder() defaultPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) @@ -83,7 +83,7 @@ public static Iterable constructorFeeder() customPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) diff --git a/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java b/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java index 1f94d71b5b77..e2064e0d89e7 100644 --- a/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java +++ b/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java @@ -574,7 +574,7 @@ public void testSpatialQuery() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER @@ -628,7 +628,7 @@ public void testSpatialQueryWithOtherSpatialDim() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER @@ -717,7 +717,7 @@ public void testSpatialQueryMorePoints() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER diff --git a/processing/src/test/java/org/apache/druid/segment/data/IncrementalIndexTest.java b/processing/src/test/java/org/apache/druid/segment/data/IncrementalIndexTest.java index a9c60350f4c9..a3c3478ebedd 100644 --- a/processing/src/test/java/org/apache/druid/segment/data/IncrementalIndexTest.java +++ b/processing/src/test/java/org/apache/druid/segment/data/IncrementalIndexTest.java @@ -433,7 +433,7 @@ public void testSingleThreadedIndexingAndQuery() throws Exception final Segment incrementalIndexSegment = new IncrementalIndexSegment(index, null); final QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -530,7 +530,7 @@ public void testConcurrentAddRead() throws InterruptedException, ExecutionExcept final List> queryFutures = Lists.newArrayListWithExpectedSize(concurrentThreads); final Segment incrementalIndexSegment = new IncrementalIndexSegment(index, null); final QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java index ff54321b5d07..69857f5c5ecc 100644 --- a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java +++ b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java @@ -508,7 +508,7 @@ public void testSpatialQuery() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -596,7 +596,7 @@ public void testSpatialQueryMorePoints() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -690,7 +690,7 @@ public void testSpatialQueryFilteredAggregator() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java index ee745a50f1cb..22e3e6838297 100644 --- a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java +++ b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java @@ -564,7 +564,7 @@ public void testSpatialQuery() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -617,7 +617,7 @@ public void testSpatialQueryWithOtherSpatialDim() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); @@ -705,7 +705,7 @@ public void testSpatialQueryMorePoints() try { TimeseriesQueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/processing/src/test/java/org/apache/druid/segment/incremental/OnheapIncrementalIndexBenchmark.java b/processing/src/test/java/org/apache/druid/segment/incremental/OnheapIncrementalIndexBenchmark.java index eb4609cb6881..096e4d3de432 100644 --- a/processing/src/test/java/org/apache/druid/segment/incremental/OnheapIncrementalIndexBenchmark.java +++ b/processing/src/test/java/org/apache/druid/segment/incremental/OnheapIncrementalIndexBenchmark.java @@ -350,7 +350,7 @@ public void testConcurrentAddRead() final List> queryFutures = new ArrayList<>(); final Segment incrementalIndexSegment = new IncrementalIndexSegment(incrementalIndex, null); final QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); diff --git a/server/src/main/java/org/apache/druid/client/DirectDruidClient.java b/server/src/main/java/org/apache/druid/client/DirectDruidClient.java index d5005ebb4bbf..7f73abf97c8f 100644 --- a/server/src/main/java/org/apache/druid/client/DirectDruidClient.java +++ b/server/src/main/java/org/apache/druid/client/DirectDruidClient.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.dataformat.smile.SmileFactory; import com.fasterxml.jackson.jaxrs.smile.SmileMediaTypes; import com.google.common.base.Preconditions; @@ -29,7 +28,6 @@ import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import org.apache.druid.java.util.common.Pair; import org.apache.druid.java.util.common.RE; import org.apache.druid.java.util.common.StringUtils; import org.apache.druid.java.util.common.guava.BaseSequence; @@ -45,7 +43,6 @@ import org.apache.druid.java.util.http.client.response.HttpResponseHandler; import org.apache.druid.java.util.http.client.response.StatusResponseHandler; import org.apache.druid.java.util.http.client.response.StatusResponseHolder; -import org.apache.druid.query.BySegmentResultValueClass; import org.apache.druid.query.Query; import org.apache.druid.query.QueryContexts; import org.apache.druid.query.QueryMetrics; @@ -54,7 +51,6 @@ import org.apache.druid.query.QueryToolChest; import org.apache.druid.query.QueryToolChestWarehouse; import org.apache.druid.query.QueryWatcher; -import org.apache.druid.query.Result; import org.apache.druid.query.aggregation.MetricManipulatorFns; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; @@ -93,9 +89,6 @@ public class DirectDruidClient implements QueryRunner private static final Logger log = new Logger(DirectDruidClient.class); - private static final ConcurrentHashMap, Pair> typesMap = - new ConcurrentHashMap<>(); - private final QueryToolChestWarehouse warehouse; private final QueryWatcher queryWatcher; private final ObjectMapper objectMapper; @@ -155,27 +148,7 @@ public Sequence run(final QueryPlus queryPlus, final Map c final Query query = queryPlus.getQuery(); QueryToolChest> toolChest = warehouse.getToolChest(query); boolean isBySegment = QueryContexts.isBySegment(query); - - // get() before computeIfAbsent() is an optimization to avoid locking in computeIfAbsent() if not needed. - Pair types = typesMap.get(query.getClass()); - if (types == null) { - types = typesMap.computeIfAbsent(query.getClass(), queryClass -> { - final TypeFactory typeFactory = objectMapper.getTypeFactory(); - JavaType baseType = typeFactory.constructType(toolChest.getResultTypeReference()); - JavaType bySegmentType = typeFactory.constructParametricType( - Result.class, - typeFactory.constructParametricType(BySegmentResultValueClass.class, baseType) - ); - return Pair.of(baseType, bySegmentType); - }); - } - - final JavaType typeRef; - if (isBySegment) { - typeRef = types.rhs; - } else { - typeRef = types.lhs; - } + final JavaType queryResultType = isBySegment ? toolChest.getBySegmentResultType() : toolChest.getBaseResultType(); final ListenableFuture future; final String url = StringUtils.format("%s://%s/druid/v2/", scheme, host); @@ -544,7 +517,7 @@ public void onFailure(Throwable t) @Override public JsonParserIterator make() { - return new JsonParserIterator(typeRef, future, url, query, host, objectMapper, null); + return new JsonParserIterator(queryResultType, future, url, query, host, objectMapper, null); } @Override diff --git a/server/src/main/java/org/apache/druid/segment/realtime/firehose/EventReceiverFirehoseFactory.java b/server/src/main/java/org/apache/druid/segment/realtime/firehose/EventReceiverFirehoseFactory.java index d6f843c578b1..09751f9d0fb4 100644 --- a/server/src/main/java/org/apache/druid/segment/realtime/firehose/EventReceiverFirehoseFactory.java +++ b/server/src/main/java/org/apache/druid/segment/realtime/firehose/EventReceiverFirehoseFactory.java @@ -486,11 +486,11 @@ private Optional checkProducerSequence( if (newSequence <= producerSequence) { return Optional.of( Response.ok( - responseMapper.writeValueAsString( - ImmutableMap.of("eventCount", 0, "skipped", true) - ), - responseContentType - ).build() + responseMapper.writeValueAsString( + ImmutableMap.of("eventCount", 0, "skipped", true) + ), + responseContentType + ).build() ); } diff --git a/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java b/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java index 2eff321d78f0..ac57d5f62e5b 100644 --- a/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java +++ b/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java @@ -444,7 +444,7 @@ public void run() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -483,7 +483,7 @@ public void testTimeseriesCaching() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -610,7 +610,7 @@ public void testTimeseriesMergingOutOfOrderPartitions() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()) + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()) ); testQueryCaching( @@ -671,7 +671,7 @@ public void testTimeseriesCachingTimeZone() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -716,7 +716,7 @@ public void testDisableUseCache() .context(CONTEXT); QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), - new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()) + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()) ); testQueryCaching( runner, @@ -792,7 +792,7 @@ public void testTopNCaching() getDefaultQueryRunner(), new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -869,7 +869,7 @@ public void testTopNCachingTimeZone() getDefaultQueryRunner(), new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -974,7 +974,7 @@ public void testTopNCachingEmptyResults() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); testQueryCaching( @@ -1047,7 +1047,7 @@ public void testTopNOnPostAggMetricCaching() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); testQueryCaching( @@ -1148,7 +1148,7 @@ public void testSearchCaching() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new SearchQueryQueryToolChest( new SearchQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); HashMap context = new HashMap(); @@ -1218,7 +1218,7 @@ public void testSearchCachingRenamedOutput() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new SearchQueryQueryToolChest( new SearchQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); HashMap context = new HashMap(); @@ -1316,7 +1316,7 @@ public void testSelectCaching() getDefaultQueryRunner(), new SelectQueryQueryToolChest( JSON_MAPPER, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), SELECT_CONFIG_SUPPLIER ) ); @@ -1394,7 +1394,7 @@ public void testSelectCachingRenamedOutputName() getDefaultQueryRunner(), new SelectQueryQueryToolChest( JSON_MAPPER, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), SELECT_CONFIG_SUPPLIER ) ); @@ -1638,7 +1638,7 @@ public void testTimeSeriesWithFilter() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); @@ -1712,7 +1712,7 @@ public void testSingleDimensionPruning() QueryRunner runner = new FinalizeResultsQueryRunner( getDefaultQueryRunner(), new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ); diff --git a/server/src/test/java/org/apache/druid/client/CachingClusteredClientTestUtils.java b/server/src/test/java/org/apache/druid/client/CachingClusteredClientTestUtils.java index 5a283f893978..8de4223c3e69 100644 --- a/server/src/test/java/org/apache/druid/client/CachingClusteredClientTestUtils.java +++ b/server/src/test/java/org/apache/druid/client/CachingClusteredClientTestUtils.java @@ -71,28 +71,28 @@ public static Pair createWarehouse( .put( TimeseriesQuery.class, new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ) .put( TopNQuery.class, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ) .put( SearchQuery.class, new SearchQueryQueryToolChest( new SearchQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ) ) .put( SelectQuery.class, new SelectQueryQueryToolChest( objectMapper, - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), selectConfigSupplier ) ) diff --git a/server/src/test/java/org/apache/druid/client/CachingQueryRunnerTest.java b/server/src/test/java/org/apache/druid/client/CachingQueryRunnerTest.java index 444db9c2e1ec..630321a0247f 100644 --- a/server/src/test/java/org/apache/druid/client/CachingQueryRunnerTest.java +++ b/server/src/test/java/org/apache/druid/client/CachingQueryRunnerTest.java @@ -142,7 +142,7 @@ public void testCloseAndPopulate() throws Exception QueryToolChest toolchest = new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); testCloseAndPopulate(expectedRes, expectedCacheRes, builder.build(), toolchest); @@ -190,7 +190,7 @@ public void testTimeseries() throws Exception } QueryToolChest toolChest = new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ); testCloseAndPopulate(expectedResults, expectedResults, query, toolChest); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java b/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java index 359ca25bd066..a4bbb67b7960 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java @@ -514,7 +514,7 @@ public int getNumMergeBuffers() new SelectQueryRunnerFactory( new SelectQueryQueryToolChest( TestHelper.makeJsonMapper(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator(), + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator(), SELECT_CONFIG_SUPPLIER ), new SelectQueryEngine(), @@ -524,9 +524,7 @@ public int getNumMergeBuffers() .put( TimeseriesQuery.class, new TimeseriesQueryRunnerFactory( - new TimeseriesQueryQueryToolChest( - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() - ), + new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) @@ -537,7 +535,7 @@ public int getNumMergeBuffers() stupidPool, new TopNQueryQueryToolChest( new TopNQueryConfig(), - QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() + QueryRunnerTestHelper.noopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER )