From 4a88f447db7f7f9d2e0e2a294d1baacd93e6b074 Mon Sep 17 00:00:00 2001 From: Fokko Driesprong Date: Wed, 31 Jul 2019 17:21:43 +0200 Subject: [PATCH] Enable NP_NONNULL_PARAM_VIOLATION in Spotbugs --- codestyle/spotbugs-exclude.xml | 2 -- .../druid/collections/SerializablePair.java | 5 ++++- .../theta/SketchEstimatePostAggregator.java | 10 ++++++---- .../histogram/ApproximateHistogram.java | 15 ++++++--------- .../ApproximateHistogramErrorBenchmark.java | 2 +- .../histogram/ApproximateHistogramTest.java | 18 +++++++++--------- .../variance/VarianceAggregatorCollector.java | 2 +- .../variance/VarianceAggregatorFactory.java | 6 ++++-- .../VarianceFoldingAggregatorFactory.java | 4 +++- .../DoubleMaxAggregatorFactory.java | 2 +- .../DoubleMinAggregatorFactory.java | 2 +- .../DoubleSumAggregatorFactory.java | 2 +- .../aggregation/FloatMaxAggregatorFactory.java | 2 +- .../aggregation/FloatMinAggregatorFactory.java | 2 +- .../aggregation/FloatSumAggregatorFactory.java | 2 +- .../aggregation/LongMaxAggregatorFactory.java | 2 +- .../aggregation/LongMinAggregatorFactory.java | 2 +- .../aggregation/LongSumAggregatorFactory.java | 2 +- .../query/aggregation/PostAggregator.java | 1 + .../SerializablePairLongString.java | 4 +++- .../last/StringLastBufferAggregator.java | 2 +- .../post/ArithmeticPostAggregator.java | 4 +++- .../post/ExpressionPostAggregator.java | 2 +- .../post/FieldAccessPostAggregator.java | 6 +++++- .../druid/query/groupby/GroupByQuery.java | 12 ++++++------ .../epinephelinae/ByteBufferHashTable.java | 6 ++++-- .../epinephelinae/GroupByRowProcessor.java | 4 +++- .../epinephelinae/ParallelCombiner.java | 5 ++++- .../epinephelinae/RowBasedGrouperHelper.java | 4 ++-- .../groupby/strategy/GroupByStrategyV2.java | 2 +- .../druid/segment/DimensionHandlerUtils.java | 2 +- .../apache/druid/segment/DimensionIndexer.java | 2 +- .../druid/segment/DoubleDimensionIndexer.java | 2 +- .../druid/segment/FloatDimensionIndexer.java | 2 +- .../org/apache/druid/segment/IndexSpec.java | 10 ++++++---- .../druid/segment/LongDimensionIndexer.java | 2 +- .../druid/segment/StringDimensionIndexer.java | 4 ++-- .../segment/data/GenericIndexedWriter.java | 2 +- .../segment/incremental/IncrementalIndex.java | 2 +- .../coordination/ChangeRequestsSnapshot.java | 14 +++++++++++--- .../coordination/DataSegmentChangeHandler.java | 6 ++++-- .../coordination/DataSegmentChangeRequest.java | 4 +++- .../coordination/SegmentChangeRequestDrop.java | 4 +++- .../coordination/SegmentChangeRequestLoad.java | 4 +++- .../coordination/SegmentChangeRequestNoop.java | 8 ++++++-- 45 files changed, 122 insertions(+), 80 deletions(-) diff --git a/codestyle/spotbugs-exclude.xml b/codestyle/spotbugs-exclude.xml index fe8a6dee64fd..510a7491bb37 100644 --- a/codestyle/spotbugs-exclude.xml +++ b/codestyle/spotbugs-exclude.xml @@ -60,8 +60,6 @@ - - diff --git a/core/src/main/java/org/apache/druid/collections/SerializablePair.java b/core/src/main/java/org/apache/druid/collections/SerializablePair.java index ce98933ee8dc..46b399551173 100644 --- a/core/src/main/java/org/apache/druid/collections/SerializablePair.java +++ b/core/src/main/java/org/apache/druid/collections/SerializablePair.java @@ -23,10 +23,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.druid.java.util.common.Pair; +import javax.annotation.Nullable; + public class SerializablePair extends Pair { @JsonCreator - public SerializablePair(@JsonProperty("lhs") T1 lhs, @JsonProperty("rhs") T2 rhs) + public SerializablePair(@JsonProperty("lhs") T1 lhs, @JsonProperty("rhs") @Nullable T2 rhs) { super(lhs, rhs); } @@ -38,6 +40,7 @@ public T1 getLhs() } @JsonProperty + @Nullable public T2 getRhs() { return rhs; diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java index b52c74df4ba2..a725c64b48ba 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java @@ -29,6 +29,8 @@ import org.apache.druid.query.aggregation.post.PostAggregatorIds; import org.apache.druid.query.cache.CacheKeyBuilder; +import javax.annotation.Nullable; + import java.util.Comparator; import java.util.HashSet; import java.util.Map; @@ -39,13 +41,14 @@ public class SketchEstimatePostAggregator implements PostAggregator private final String name; private final PostAggregator field; + @Nullable private final Integer errorBoundsStdDev; @JsonCreator public SketchEstimatePostAggregator( @JsonProperty("name") String name, @JsonProperty("field") PostAggregator field, - @JsonProperty("errorBoundsStdDev") Integer errorBoundsStdDev + @JsonProperty("errorBoundsStdDev") @Nullable Integer errorBoundsStdDev ) { this.name = Preconditions.checkNotNull(name, "name is null"); @@ -56,9 +59,7 @@ public SketchEstimatePostAggregator( @Override public Set getDependentFields() { - Set dependentFields = new HashSet<>(); - dependentFields.addAll(field.getDependentFields()); - return dependentFields; + return new HashSet<>(field.getDependentFields()); } @Override @@ -111,6 +112,7 @@ public PostAggregator getField() return field; } + @Nullable @JsonProperty public Integer getErrorBoundsStdDev() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java index eeac3a53af6c..35ac0b45d2d9 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java @@ -23,6 +23,8 @@ import com.google.common.base.Preconditions; import com.google.common.primitives.Floats; +import javax.annotation.Nullable; + import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; @@ -470,11 +472,6 @@ protected void shiftLeft(int start, int end) } } - public ApproximateHistogram fold(ApproximateHistogram h) - { - return fold(h, null, null, null); - } - public ApproximateHistogram fold(ApproximateHistogram h, float[] mergedPositions, long[] mergedBins, float[] deltas) { if (size == 0) { @@ -496,7 +493,7 @@ public ApproximateHistogram foldFast(ApproximateHistogram h) * * @return returns this histogram with h folded into it */ - public ApproximateHistogram foldFast(ApproximateHistogram h, float[] mergedPositions, long[] mergedBins) + public ApproximateHistogram foldFast(ApproximateHistogram h, @Nullable float[] mergedPositions, @Nullable long[] mergedBins) { if (size == 0) { return copy(h); @@ -612,7 +609,7 @@ protected ApproximateHistogram foldMin( return this; } - protected ApproximateHistogram foldRule(ApproximateHistogram h, float[] mergedPositions, long[] mergedBins) + protected ApproximateHistogram foldRule(ApproximateHistogram h, @Nullable float[] mergedPositions, @Nullable long[] mergedBins) { // ruleCombine bins requires at least one bin if (h.binCount == 0) { @@ -1079,8 +1076,8 @@ private static int combineBins( float[] rightPositions, long[] rightBins, float[] mergedPositions, - long[] mergedBins, - float[] deltas + @Nullable long[] mergedBins, + @Nullable float[] deltas ) { int i = 0; diff --git a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java index 5f12e6089aea..ce0b70e7b179 100644 --- a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java +++ b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java @@ -144,7 +144,7 @@ private float[] getErrors() for (int i = 0; i < numValues; ++i) { tmp.offer(values[i]); if ((i + 1) % numPerHist == 0) { - ah1.fold(tmp); + ah1.fold(tmp, null, null, null); ah2.foldRule(tmp, null, null); tmp = new ApproximateHistogram(resolution); } diff --git a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java index c63ead315bbc..64e3a15aa01a 100644 --- a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java +++ b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java @@ -111,8 +111,8 @@ public void testFold() h2.offer(VALUES[i]); } - merged.fold(h1); - merged.fold(h2); + merged.fold(h1, null, null, null); + merged.fold(h2, null, null, null); mergedFast.foldFast(h1); mergedFast.foldFast(h2); @@ -144,7 +144,7 @@ public void testFold() ApproximateHistogram aFast = buildHistogram(10, new float[]{1, 2, 3, 4, 5, 6}); ApproximateHistogram b = buildHistogram(5, new float[]{3, 4, 5, 6}); - a.fold(b); + a.fold(b, null, null, null); aFast.foldFast(b); Assert.assertEquals( @@ -172,7 +172,7 @@ public void testFold() for (float v : VALUES4) { h4.offer(v); } - h3.fold(h4); + h3.fold(h4, null, null, null); Assert.assertArrayEquals( "final bin positions match expected positions", new float[]{-50.98f, -21.77f, -9.81f, 3.73f, 13.72f, 20.1f, 29f, 44.79f, 53.8f, 64.67f}, @@ -191,7 +191,7 @@ public void testFoldNothing() ApproximateHistogram h1 = new ApproximateHistogram(10); ApproximateHistogram h2 = new ApproximateHistogram(10); - h1.fold(h2); + h1.fold(h2, null, null, null); h1.foldFast(h2); } @@ -210,8 +210,8 @@ public void testFoldNothing2() h4Fast.offer(v); } - h1.fold(h3); - h4.fold(h2); + h1.fold(h3, null, null, null); + h4.fold(h2, null, null, null); h1Fast.foldFast(h3); h4Fast.foldFast(h2); @@ -300,7 +300,7 @@ public void testSerializeCompact() ApproximateHistogram h = buildHistogram(5, VALUES); Assert.assertEquals(h, ApproximateHistogram.fromBytes(h.toBytes())); - ApproximateHistogram h2 = new ApproximateHistogram(50).fold(h); + ApproximateHistogram h2 = new ApproximateHistogram(50).fold(h, null, null, null); Assert.assertEquals(h2, ApproximateHistogram.fromBytes(h2.toBytes())); } @@ -331,7 +331,7 @@ public void testSerializeCompactExact() h = buildHistogram(5, new float[]{1f, 2f, 3f}); Assert.assertEquals(h, ApproximateHistogram.fromBytes(h.toBytes())); - h = new ApproximateHistogram(40).fold(h); + h = new ApproximateHistogram(40).fold(h, null, null, null); Assert.assertEquals(h, ApproximateHistogram.fromBytes(h.toBytes())); } diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java index 6077057e59a7..860d9855c391 100644 --- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java +++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java @@ -49,7 +49,7 @@ */ public class VarianceAggregatorCollector { - public static boolean isVariancePop(String estimator) + public static boolean isVariancePop(@Nullable String estimator) { return estimator != null && "population".equalsIgnoreCase(estimator); } diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java index fdc9cb22e695..79bbe96908ed 100644 --- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java +++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java @@ -53,6 +53,7 @@ public class VarianceAggregatorFactory extends AggregatorFactory { protected final String fieldName; protected final String name; + @Nullable protected final String estimator; private final String inputType; @@ -62,8 +63,8 @@ public class VarianceAggregatorFactory extends AggregatorFactory public VarianceAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") String fieldName, - @JsonProperty("estimator") String estimator, - @JsonProperty("inputType") String inputType + @JsonProperty("estimator") @Nullable String estimator, + @JsonProperty("inputType") @Nullable String inputType ) { Preconditions.checkNotNull(name, "Must have a valid, non-null aggregator name"); @@ -238,6 +239,7 @@ public String getName() return name; } + @Nullable @JsonProperty public String getEstimator() { diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java index a61921cc5b63..c9e15269c911 100644 --- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java +++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java @@ -22,6 +22,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; +import javax.annotation.Nullable; + /** */ @JsonTypeName("varianceFold") @@ -30,7 +32,7 @@ public class VarianceFoldingAggregatorFactory extends VarianceAggregatorFactory public VarianceFoldingAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") String fieldName, - @JsonProperty("estimator") String estimator + @JsonProperty("estimator") @Nullable String estimator ) { super(name, fieldName, estimator, "variance"); diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java index 75ef2f614095..21562af0672f 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java @@ -40,7 +40,7 @@ public class DoubleMaxAggregatorFactory extends SimpleDoubleAggregatorFactory public DoubleMaxAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java index e1ddb7f9bf9a..f308db4efb7b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java @@ -40,7 +40,7 @@ public class DoubleMinAggregatorFactory extends SimpleDoubleAggregatorFactory public DoubleMinAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java index 0292823056ac..1a019d7b1278 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java @@ -42,7 +42,7 @@ public class DoubleSumAggregatorFactory extends SimpleDoubleAggregatorFactory public DoubleSumAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java index a0b2f24eb927..b17b8c316a41 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java @@ -40,7 +40,7 @@ public class FloatMaxAggregatorFactory extends SimpleFloatAggregatorFactory public FloatMaxAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java index bf5cc24c9d50..81b93878c73b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java @@ -40,7 +40,7 @@ public class FloatMinAggregatorFactory extends SimpleFloatAggregatorFactory public FloatMinAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java index debe44d518f2..a921656aeb4c 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java @@ -42,7 +42,7 @@ public class FloatSumAggregatorFactory extends SimpleFloatAggregatorFactory public FloatSumAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java index 78f398b1dae0..182cba93d67f 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java @@ -40,7 +40,7 @@ public class LongMaxAggregatorFactory extends SimpleLongAggregatorFactory public LongMaxAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java index bb0f199efd68..1c436bfc4026 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java @@ -40,7 +40,7 @@ public class LongMinAggregatorFactory extends SimpleLongAggregatorFactory public LongMinAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java index accfc787f7a4..5577b8e6a5e0 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java @@ -42,7 +42,7 @@ public class LongSumAggregatorFactory extends SimpleLongAggregatorFactory public LongSumAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName, - @JsonProperty("expression") String expression, + @JsonProperty("expression") @Nullable String expression, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java index 5df02d09d32a..aecc95245c21 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java @@ -40,6 +40,7 @@ public interface PostAggregator extends Cacheable @Nullable Object compute(Map combinedAggregators); + @Nullable String getName(); /** diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java b/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java index 69261aa4e501..edecfc6229cb 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java @@ -23,10 +23,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.druid.collections.SerializablePair; +import javax.annotation.Nullable; + public class SerializablePairLongString extends SerializablePair { @JsonCreator - public SerializablePairLongString(@JsonProperty("lhs") Long lhs, @JsonProperty("rhs") String rhs) + public SerializablePairLongString(@JsonProperty("lhs") Long lhs, @JsonProperty("rhs") @Nullable String rhs) { super(lhs, rhs); } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java index 168694ee7e53..9271e5aba726 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java @@ -108,7 +108,7 @@ public Object get(ByteBuffer buf, int position) mutationBuffer.position(position); Long timeValue = mutationBuffer.getLong(position); - Integer stringSizeBytes = mutationBuffer.getInt(position + Long.BYTES); + int stringSizeBytes = mutationBuffer.getInt(position + Long.BYTES); SerializablePairLongString serializablePair; diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java index 556d39fe89e5..ea678dc9136d 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java @@ -29,6 +29,8 @@ import org.apache.druid.query.aggregation.PostAggregator; import org.apache.druid.query.cache.CacheKeyBuilder; +import javax.annotation.Nullable; + import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; @@ -71,7 +73,7 @@ public ArithmeticPostAggregator( @JsonProperty("name") String name, @JsonProperty("fn") String fnName, @JsonProperty("fields") List fields, - @JsonProperty("ordering") String ordering + @JsonProperty("ordering") @Nullable String ordering ) { Preconditions.checkArgument(fnName != null, "fn cannot not be null"); diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java index cfd6578b1ae1..e978f186cef2 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java @@ -74,7 +74,7 @@ public class ExpressionPostAggregator implements PostAggregator public ExpressionPostAggregator( @JsonProperty("name") String name, @JsonProperty("expression") String expression, - @JsonProperty("ordering") String ordering, + @JsonProperty("ordering") @Nullable String ordering, @JacksonInject ExprMacroTable macroTable ) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java index d816bc6b24f3..17506d373098 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java @@ -27,6 +27,8 @@ import org.apache.druid.query.aggregation.PostAggregator; import org.apache.druid.query.cache.CacheKeyBuilder; +import javax.annotation.Nullable; + import java.util.Comparator; import java.util.Map; import java.util.Set; @@ -35,12 +37,13 @@ */ public class FieldAccessPostAggregator implements PostAggregator { + @Nullable private final String name; private final String fieldName; @JsonCreator public FieldAccessPostAggregator( - @JsonProperty("name") String name, + @JsonProperty("name") @Nullable String name, @JsonProperty("fieldName") String fieldName ) { @@ -67,6 +70,7 @@ public Object compute(Map combinedAggregators) return combinedAggregators.get(fieldName); } + @Nullable @Override @JsonProperty public String getName() diff --git a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java index 29ec5ec332cc..117aa8577076 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java @@ -665,7 +665,7 @@ public GroupByQuery withQuerySegmentSpec(QuerySegmentSpec spec) return new Builder(this).setQuerySegmentSpec(spec).build(); } - public GroupByQuery withDimFilter(final DimFilter dimFilter) + public GroupByQuery withDimFilter(@Nullable final DimFilter dimFilter) { return new Builder(this).setDimFilter(dimFilter).build(); } @@ -691,7 +691,7 @@ public GroupByQuery withAggregatorSpecs(final List aggregator return new Builder(this).setAggregatorSpecs(aggregatorSpecs).build(); } - public GroupByQuery withSubtotalsSpec(final List> subtotalsSpec) + public GroupByQuery withSubtotalsSpec(@Nullable final List> subtotalsSpec) { return new Builder(this).setSubtotalsSpec(subtotalsSpec).build(); } @@ -876,7 +876,7 @@ public Builder setLimit(int limit) return this; } - public Builder setSubtotalsSpec(List> subtotalsSpec) + public Builder setSubtotalsSpec(@Nullable List> subtotalsSpec) { this.subtotalsSpec = subtotalsSpec; return this; @@ -887,7 +887,7 @@ public Builder addOrderByColumn(String dimension) return addOrderByColumn(dimension, null); } - public Builder addOrderByColumn(String dimension, OrderByColumnSpec.Direction direction) + public Builder addOrderByColumn(String dimension, @Nullable OrderByColumnSpec.Direction direction) { return addOrderByColumn(new OrderByColumnSpec(dimension, direction)); } @@ -929,7 +929,7 @@ public Builder setQuerySegmentSpec(QuerySegmentSpec querySegmentSpec) return this; } - public Builder setDimFilter(DimFilter dimFilter) + public Builder setDimFilter(@Nullable DimFilter dimFilter) { this.dimFilter = dimFilter; return this; @@ -1020,7 +1020,7 @@ public Builder overrideContext(Map contextOverride) return this; } - public Builder setHavingSpec(HavingSpec havingSpec) + public Builder setHavingSpec(@Nullable HavingSpec havingSpec) { this.havingSpec = havingSpec; this.postProcessingFn = null; diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java index 6ba201e1183d..b9d0c7cc8132 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java @@ -22,6 +22,8 @@ import org.apache.druid.java.util.common.IAE; import org.apache.druid.java.util.common.ISE; +import javax.annotation.Nullable; + import java.nio.ByteBuffer; public class ByteBufferHashTable @@ -74,7 +76,7 @@ public static int calculateTableArenaSizeWithFixedAdditionalSize( // how many times the table buffer has filled/readjusted (through adjustTableWhenFull()) protected int growthCount; - + @Nullable protected BucketUpdateHandler bucketUpdateHandler; public ByteBufferHashTable( @@ -84,7 +86,7 @@ public ByteBufferHashTable( ByteBuffer buffer, int keySize, int maxSizeForTesting, - BucketUpdateHandler bucketUpdateHandler + @Nullable BucketUpdateHandler bucketUpdateHandler ) { this.maxLoadFactor = maxLoadFactor; diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java index 2fa3b57bf5a8..48d892408e75 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java @@ -46,6 +46,8 @@ import org.joda.time.DateTime; import org.joda.time.Interval; +import javax.annotation.Nullable; + import java.io.Closeable; import java.io.File; import java.nio.ByteBuffer; @@ -170,7 +172,7 @@ private static Sequence getFilteredSequence( ); } - public static Sequence getRowsFromGrouper(GroupByQuery query, List subtotalSpec, Supplier grouper) + public static Sequence getRowsFromGrouper(GroupByQuery query, @Nullable List subtotalSpec, Supplier grouper) { return new BaseSequence<>( new BaseSequence.IteratorMaker>() diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java index 4444b9eb9ff5..af8a06958772 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java @@ -47,6 +47,8 @@ import org.apache.druid.segment.ObjectColumnSelector; import org.apache.druid.segment.column.ColumnCapabilities; +import javax.annotation.Nullable; + import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -435,6 +437,7 @@ private static class SettableColumnSelectorFactory implements ColumnSelectorFact private static final int UNKNOWN_COLUMN_INDEX = -1; private final Object2IntMap columnIndexMap; + @Nullable private Object[] values; SettableColumnSelectorFactory(AggregatorFactory[] aggregatorFactories) @@ -446,7 +449,7 @@ private static class SettableColumnSelectorFactory implements ColumnSelectorFact } } - public void set(Object[] values) + public void set(@Nullable Object[] values) { this.values = values; } diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java index 2c75c354e315..0932808a5da5 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java @@ -137,7 +137,7 @@ public static Pair, Accumulator> crea public static Pair, Accumulator> createGrouperAccumulatorPair( final GroupByQuery query, final boolean isInputRaw, - final Map rawInputRowSignature, + @Nullable final Map rawInputRowSignature, final GroupByQueryConfig config, final Supplier bufferSupplier, @Nullable final ReferenceCountingResourceHolder combineBufferHolder, @@ -380,7 +380,7 @@ public static CloseableGrouperIterator makeGrouperIterator( public static CloseableGrouperIterator makeGrouperIterator( final Grouper grouper, final GroupByQuery query, - final List dimsToInclude, + @Nullable final List dimsToInclude, final Closeable closeable ) { diff --git a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java index 72801a07c281..f0ae4fa80841 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV2.java @@ -425,7 +425,7 @@ public Sequence processSubtotalsSpec( ); List> subtotalsResults = new ArrayList<>(subtotals.size()); - Map queryDimensionSpecs = new HashMap(queryWithoutSubtotalsSpec.getDimensions().size()); + Map queryDimensionSpecs = new HashMap<>(queryWithoutSubtotalsSpec.getDimensions().size()); for (DimensionSpec dimSpec : queryWithoutSubtotalsSpec.getDimensions()) { queryDimensionSpecs.put(dimSpec.getOutputName(), dimSpec); } diff --git a/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java b/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java index da4232dfe6b9..e9396c504372 100644 --- a/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java +++ b/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java @@ -67,7 +67,7 @@ private DimensionHandlerUtils() public static DimensionHandler getHandlerFromCapabilities( String dimensionName, ColumnCapabilities capabilities, - MultiValueHandling multiValueHandling + @Nullable MultiValueHandling multiValueHandling ) { if (capabilities == null) { diff --git a/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java index 0ddbba0856d6..06c27f7d7193 100644 --- a/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java +++ b/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java @@ -125,7 +125,7 @@ public interface DimensionIndexer * @param reportParseExceptions * @return An array containing an encoded representation of the input row value. */ - EncodedKeyComponentType processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions); + EncodedKeyComponentType processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions); /** * Gives the estimated size in bytes for the given key diff --git a/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java index 55c0a2c2d110..3fc93d7dcac6 100644 --- a/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java +++ b/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java @@ -39,7 +39,7 @@ public class DoubleDimensionIndexer implements DimensionIndexer DOUBLE_COMPARATOR = Comparators.naturalNullsFirst(); @Override - public Double processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions) + public Double processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions) { if (dimValues instanceof List) { throw new UnsupportedOperationException("Numeric columns do not support multivalue rows."); diff --git a/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java index d68856317345..bd7384c574c8 100644 --- a/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java +++ b/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java @@ -39,7 +39,7 @@ public class FloatDimensionIndexer implements DimensionIndexer FLOAT_COMPARATOR = Comparators.naturalNullsFirst(); @Override - public Float processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions) + public Float processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions) { if (dimValues instanceof List) { throw new UnsupportedOperationException("Numeric columns do not support multivalue rows."); diff --git a/processing/src/main/java/org/apache/druid/segment/IndexSpec.java b/processing/src/main/java/org/apache/druid/segment/IndexSpec.java index 4de55b6609c6..5aa4aed5a385 100644 --- a/processing/src/main/java/org/apache/druid/segment/IndexSpec.java +++ b/processing/src/main/java/org/apache/druid/segment/IndexSpec.java @@ -29,6 +29,8 @@ import org.apache.druid.segment.data.CompressionStrategy; import org.apache.druid.segment.data.ConciseBitmapSerdeFactory; +import javax.annotation.Nullable; + import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -90,10 +92,10 @@ public IndexSpec() */ @JsonCreator public IndexSpec( - @JsonProperty("bitmap") BitmapSerdeFactory bitmapSerdeFactory, - @JsonProperty("dimensionCompression") CompressionStrategy dimensionCompression, - @JsonProperty("metricCompression") CompressionStrategy metricCompression, - @JsonProperty("longEncoding") CompressionFactory.LongEncodingStrategy longEncoding + @JsonProperty("bitmap") @Nullable BitmapSerdeFactory bitmapSerdeFactory, + @JsonProperty("dimensionCompression") @Nullable CompressionStrategy dimensionCompression, + @JsonProperty("metricCompression") @Nullable CompressionStrategy metricCompression, + @JsonProperty("longEncoding") @Nullable CompressionFactory.LongEncodingStrategy longEncoding ) { Preconditions.checkArgument(dimensionCompression == null || DIMENSION_COMPRESSION.contains(dimensionCompression), diff --git a/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java index c43945a9b772..bf01e4eddbf0 100644 --- a/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java +++ b/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java @@ -39,7 +39,7 @@ public class LongDimensionIndexer implements DimensionIndexer public static final Comparator LONG_COMPARATOR = Comparators.naturalNullsFirst(); @Override - public Long processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions) + public Long processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions) { if (dimValues instanceof List) { throw new UnsupportedOperationException("Numeric columns do not support multivalue rows."); diff --git a/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java index 332da92ad528..c4c01861948b 100644 --- a/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java +++ b/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java @@ -87,7 +87,7 @@ public DimensionDictionary() valueToId.defaultReturnValue(-1); } - public int getId(String value) + public int getId(@Nullable String value) { lock.readLock().lock(); try { @@ -245,7 +245,7 @@ public StringDimensionIndexer(MultiValueHandling multiValueHandling, boolean has } @Override - public int[] processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions) + public int[] processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions) { final int[] encodedDimensionValues; final int oldDictSize = dimLookup.size(); diff --git a/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java b/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java index 120b36bd903a..3974915b043d 100644 --- a/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java +++ b/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java @@ -284,7 +284,7 @@ public long getSerializedSize() throws IOException } @Override - public void writeTo(WritableByteChannel channel, FileSmoosher smoosher) throws IOException + public void writeTo(WritableByteChannel channel, @Nullable FileSmoosher smoosher) throws IOException { if (requireMultipleFiles) { writeToMultiFiles(channel, smoosher); diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java index 8e21296b90df..1e846addb233 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java @@ -996,7 +996,7 @@ public Iterator iterator() return iterableWithPostAggregations(null, false).iterator(); } - public Iterable iterableWithPostAggregations(final List postAggs, final boolean descending) + public Iterable iterableWithPostAggregations(@Nullable final List postAggs, final boolean descending) { return () -> { final List dimensions = getDimensions(); diff --git a/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java b/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java index bacd53a8c143..14113bed6b2f 100644 --- a/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java +++ b/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java @@ -23,6 +23,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; +import javax.annotation.Nullable; + import java.util.List; /** @@ -45,18 +47,21 @@ public static ChangeRequestsSnapshot fail(String resetCause) private final boolean resetCounter; /** cause for reset if {@link #resetCounter} is true */ + @Nullable private final String resetCause; /** segments requests delta since counter, if {@link #resetCounter} if false */ + @Nullable private final ChangeRequestHistory.Counter counter; + @Nullable private final List requests; @JsonCreator public ChangeRequestsSnapshot( @JsonProperty("resetCounter") boolean resetCounter, - @JsonProperty("resetCause") String resetCause, - @JsonProperty("counter") ChangeRequestHistory.Counter counter, - @JsonProperty("requests") List requests + @JsonProperty("resetCause") @Nullable String resetCause, + @JsonProperty("counter") @Nullable ChangeRequestHistory.Counter counter, + @JsonProperty("requests") @Nullable List requests ) { this.resetCounter = resetCounter; @@ -76,18 +81,21 @@ public boolean isResetCounter() return resetCounter; } + @Nullable @JsonProperty public String getResetCause() { return resetCause; } + @Nullable @JsonProperty public ChangeRequestHistory.Counter getCounter() { return counter; } + @Nullable @JsonProperty public List getRequests() { diff --git a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java index f502545ef85e..cd2a8c3740f2 100644 --- a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java +++ b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java @@ -21,10 +21,12 @@ import org.apache.druid.timeline.DataSegment; +import javax.annotation.Nullable; + /** */ public interface DataSegmentChangeHandler { - void addSegment(DataSegment segment, DataSegmentChangeCallback callback); - void removeSegment(DataSegment segment, DataSegmentChangeCallback callback); + void addSegment(DataSegment segment, @Nullable DataSegmentChangeCallback callback); + void removeSegment(DataSegment segment, @Nullable DataSegmentChangeCallback callback); } diff --git a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java index d7962ce161ed..6a044aaf6bba 100644 --- a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java +++ b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java @@ -22,6 +22,8 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; +import javax.annotation.Nullable; + /** */ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "action") @@ -32,7 +34,7 @@ }) public interface DataSegmentChangeRequest { - void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback); + void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback); String asString(); } diff --git a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java index 85c168346242..c4229a028806 100644 --- a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java +++ b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java @@ -25,6 +25,8 @@ import org.apache.druid.java.util.common.StringUtils; import org.apache.druid.timeline.DataSegment; +import javax.annotation.Nullable; + import java.util.Objects; /** @@ -49,7 +51,7 @@ public DataSegment getSegment() } @Override - public void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback) + public void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback) { handler.removeSegment(segment, callback); } diff --git a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java index 002b968256aa..097e02523032 100644 --- a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java +++ b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java @@ -25,6 +25,8 @@ import org.apache.druid.java.util.common.StringUtils; import org.apache.druid.timeline.DataSegment; +import javax.annotation.Nullable; + import java.util.Objects; /** @@ -42,7 +44,7 @@ public SegmentChangeRequestLoad( } @Override - public void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback) + public void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback) { handler.addSegment(segment, callback); } diff --git a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java index 4f902496bb41..3978bcf693c4 100644 --- a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java +++ b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java @@ -19,15 +19,19 @@ package org.apache.druid.server.coordination; +import javax.annotation.Nullable; + /** */ public class SegmentChangeRequestNoop implements DataSegmentChangeRequest { @Override - public void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback) + public void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback) { // just execute the callback and do nothing else - callback.execute(); + if (callback != null) { + callback.execute(); + } } @Override