You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by le...@apache.org on 2019/08/02 16:20:31 UTC

[incubator-druid] branch master updated: Spotbugs: NP_NONNULL_PARAM_VIOLATION (#8129)

This is an automated email from the ASF dual-hosted git repository.

leventov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 91743ee  Spotbugs: NP_NONNULL_PARAM_VIOLATION (#8129)
91743ee is described below

commit 91743eeebe56cdb93e4b38abb71c4be43566ad8e
Author: Fokko Driesprong <fo...@apache.org>
AuthorDate: Fri Aug 2 18:20:22 2019 +0200

    Spotbugs: NP_NONNULL_PARAM_VIOLATION (#8129)
---
 codestyle/spotbugs-exclude.xml                         |  2 --
 .../org/apache/druid/collections/SerializablePair.java |  5 ++++-
 .../theta/SketchEstimatePostAggregator.java            | 10 ++++++----
 .../aggregation/histogram/ApproximateHistogram.java    | 15 ++++++---------
 .../histogram/ApproximateHistogramErrorBenchmark.java  |  2 +-
 .../histogram/ApproximateHistogramTest.java            | 18 +++++++++---------
 .../variance/VarianceAggregatorCollector.java          |  2 +-
 .../variance/VarianceAggregatorFactory.java            |  6 ++++--
 .../variance/VarianceFoldingAggregatorFactory.java     |  4 +++-
 .../query/aggregation/DoubleMaxAggregatorFactory.java  |  2 +-
 .../query/aggregation/DoubleMinAggregatorFactory.java  |  2 +-
 .../query/aggregation/DoubleSumAggregatorFactory.java  |  2 +-
 .../query/aggregation/FloatMaxAggregatorFactory.java   |  2 +-
 .../query/aggregation/FloatMinAggregatorFactory.java   |  2 +-
 .../query/aggregation/FloatSumAggregatorFactory.java   |  2 +-
 .../query/aggregation/LongMaxAggregatorFactory.java    |  2 +-
 .../query/aggregation/LongMinAggregatorFactory.java    |  2 +-
 .../query/aggregation/LongSumAggregatorFactory.java    |  2 +-
 .../apache/druid/query/aggregation/PostAggregator.java |  1 +
 .../query/aggregation/SerializablePairLongString.java  |  4 +++-
 .../aggregation/last/StringLastBufferAggregator.java   |  2 +-
 .../aggregation/post/ArithmeticPostAggregator.java     |  4 +++-
 .../aggregation/post/ExpressionPostAggregator.java     |  2 +-
 .../aggregation/post/FieldAccessPostAggregator.java    |  6 +++++-
 .../org/apache/druid/query/groupby/GroupByQuery.java   | 10 +++++-----
 .../groupby/epinephelinae/ByteBufferHashTable.java     |  6 ++++--
 .../groupby/epinephelinae/GroupByRowProcessor.java     |  1 +
 .../query/groupby/epinephelinae/ParallelCombiner.java  |  5 ++++-
 .../apache/druid/segment/DimensionHandlerUtils.java    |  2 +-
 .../org/apache/druid/segment/DimensionIndexer.java     |  2 +-
 .../apache/druid/segment/DoubleDimensionIndexer.java   |  2 +-
 .../apache/druid/segment/FloatDimensionIndexer.java    |  2 +-
 .../main/java/org/apache/druid/segment/IndexSpec.java  | 10 ++++++----
 .../org/apache/druid/segment/LongDimensionIndexer.java |  2 +-
 .../apache/druid/segment/StringDimensionIndexer.java   |  4 ++--
 .../druid/segment/data/GenericIndexedWriter.java       |  2 +-
 .../druid/segment/incremental/IncrementalIndex.java    |  2 +-
 .../server/coordination/ChangeRequestsSnapshot.java    | 14 +++++++++++---
 .../server/coordination/DataSegmentChangeHandler.java  |  6 ++++--
 .../server/coordination/DataSegmentChangeRequest.java  |  4 +++-
 .../server/coordination/SegmentChangeRequestDrop.java  |  4 +++-
 .../server/coordination/SegmentChangeRequestLoad.java  |  4 +++-
 .../server/coordination/SegmentChangeRequestNoop.java  |  8 ++++++--
 43 files changed, 116 insertions(+), 75 deletions(-)

diff --git a/codestyle/spotbugs-exclude.xml b/codestyle/spotbugs-exclude.xml
index 3ee2330..effec8d 100644
--- a/codestyle/spotbugs-exclude.xml
+++ b/codestyle/spotbugs-exclude.xml
@@ -60,8 +60,6 @@
     <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE"/>
     <Bug pattern="NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION"/>
     <Bug pattern="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR"/>
-    <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
-    <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
     <Bug pattern="NP_NONNULL_RETURN_VIOLATION"/>
     <Bug pattern="NP_NULL_ON_SOME_PATH"/>
     <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
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 ce98933..46b3995 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.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.druid.java.util.common.Pair;
 
+import javax.annotation.Nullable;
+
 public class SerializablePair<T1, T2> extends Pair<T1, T2>
 {
   @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 class SerializablePair<T1, T2> extends Pair<T1, T2>
   }
 
   @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 b52c74d..a725c64 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.PostAggregator;
 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 class SketchEstimatePostAggregator implements PostAggregator
   @Override
   public Set<String> getDependentFields()
   {
-    Set<String> dependentFields = new HashSet<>();
-    dependentFields.addAll(field.getDependentFields());
-    return dependentFields;
+    return new HashSet<>(field.getDependentFields());
   }
 
   @Override
@@ -111,6 +112,7 @@ public class SketchEstimatePostAggregator implements PostAggregator
     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 eeac3a5..35ac0b4 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.fasterxml.jackson.annotation.JsonValue;
 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 @@ public class ApproximateHistogram
     }
   }
 
-  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 class ApproximateHistogram
    *
    * @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 @@ public class ApproximateHistogram
     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 @@ public class ApproximateHistogram
       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 5f12e60..ce0b70e 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 @@ public class ApproximateHistogramErrorBenchmark
     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 c63ead3..64e3a15 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 class ApproximateHistogramTest
       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 class ApproximateHistogramTest
     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 class ApproximateHistogramTest
     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 class ApproximateHistogramTest
     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 class ApproximateHistogramTest
       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 class ApproximateHistogramTest
     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 class ApproximateHistogramTest
     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 6077057..860d985 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 @@ import java.util.Comparator;
  */
 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 fdc9cb2..79bbe96 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 class VarianceAggregatorFactory extends AggregatorFactory
     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 a61921c..c9e1526 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 @@ package org.apache.druid.query.aggregation.variance;
 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 75ef2f6..21562af 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 e1ddb7f..f308db4 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 0292823..1a019d7 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 a0b2f24..b17b8c3 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 bf5cc24..81b9387 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 debe44d..a921656 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 78f398b..182cba9 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 bb0f199..1c436bf 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 accfc78..5577b8e 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 5df02d0..aecc952 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<String, Object> 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 69261aa..edecfc6 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.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.druid.collections.SerializablePair;
 
+import javax.annotation.Nullable;
+
 public class SerializablePairLongString extends SerializablePair<Long, String>
 {
   @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 168694e..9271e5a 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 class StringLastBufferAggregator implements BufferAggregator
     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 556d39f..ea678dc 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.AggregatorFactory;
 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 class ArithmeticPostAggregator implements PostAggregator
       @JsonProperty("name") String name,
       @JsonProperty("fn") String fnName,
       @JsonProperty("fields") List<PostAggregator> 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 cfd6578..e978f18 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 d816bc6..17506d3 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.AggregatorFactory;
 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 @@ import java.util.Set;
  */
 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 class FieldAccessPostAggregator implements PostAggregator
     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 0ba0f8d..10f043c 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
@@ -802,7 +802,7 @@ public class GroupByQuery extends BaseQuery<ResultRow>
     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();
   }
@@ -828,7 +828,7 @@ public class GroupByQuery extends BaseQuery<ResultRow>
     return new Builder(this).setAggregatorSpecs(aggregatorSpecs).build();
   }
 
-  public GroupByQuery withSubtotalsSpec(final List<List<String>> subtotalsSpec)
+  public GroupByQuery withSubtotalsSpec(@Nullable final List<List<String>> subtotalsSpec)
   {
     return new Builder(this).setSubtotalsSpec(subtotalsSpec).build();
   }
@@ -1006,7 +1006,7 @@ public class GroupByQuery extends BaseQuery<ResultRow>
       return this;
     }
 
-    public Builder setSubtotalsSpec(List<List<String>> subtotalsSpec)
+    public Builder setSubtotalsSpec(@Nullable List<List<String>> subtotalsSpec)
     {
       this.subtotalsSpec = subtotalsSpec;
       return this;
@@ -1017,7 +1017,7 @@ public class GroupByQuery extends BaseQuery<ResultRow>
       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));
     }
@@ -1059,7 +1059,7 @@ public class GroupByQuery extends BaseQuery<ResultRow>
       return this;
     }
 
-    public Builder setDimFilter(DimFilter dimFilter)
+    public Builder setDimFilter(@Nullable DimFilter dimFilter)
     {
       this.dimFilter = dimFilter;
       return this;
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 6ba201e..b9d0c7c 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 @@ package org.apache.druid.query.groupby.epinephelinae;
 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 class ByteBufferHashTable
   // 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 class 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 c1ac966..b33064a 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
@@ -37,6 +37,7 @@ import org.apache.druid.query.groupby.epinephelinae.RowBasedGrouperHelper.RowBas
 import org.apache.druid.query.groupby.resource.GroupByQueryResource;
 
 import javax.annotation.Nullable;
+
 import java.io.Closeable;
 import java.io.File;
 import java.nio.ByteBuffer;
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 4444b9e..af8a069 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.DimensionSelector;
 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 @@ public class ParallelCombiner<KeyType>
     private static final int UNKNOWN_COLUMN_INDEX = -1;
     private final Object2IntMap<String> columnIndexMap;
 
+    @Nullable
     private Object[] values;
 
     SettableColumnSelectorFactory(AggregatorFactory[] aggregatorFactories)
@@ -446,7 +449,7 @@ public class ParallelCombiner<KeyType>
       }
     }
 
-    public void set(Object[] values)
+    public void set(@Nullable Object[] values)
     {
       this.values = values;
     }
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 da4232d..e9396c5 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 @@ public final class 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 0ddbba0..06c27f7 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 55c0a2c..3fc93d7 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, Double,
   public static final Comparator<Double> 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 d688563..bd7384c 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, Float, Flo
   public static final Comparator<Float> 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 4de55b6..5aa4aed 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.CompressionFactory;
 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 class 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 c43945a..bf01e4e 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<Long, Long, Long>
   public static final Comparator LONG_COMPARATOR = Comparators.<Long>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 332da92..c4c0186 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 class StringDimensionIndexer implements DimensionIndexer<Integer, int[],
       valueToId.defaultReturnValue(-1);
     }
 
-    public int getId(String value)
+    public int getId(@Nullable String value)
     {
       lock.readLock().lock();
       try {
@@ -245,7 +245,7 @@ public class StringDimensionIndexer implements DimensionIndexer<Integer, int[],
   }
 
   @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 120b36b..3974915 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 class GenericIndexedWriter<T> implements Serializer
   }
 
   @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 dc09a56..dbb6a6e 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 abstract class IncrementalIndex<AggregatorType> extends AbstractIndex imp
     return iterableWithPostAggregations(null, false).iterator();
   }
 
-  public Iterable<Row> iterableWithPostAggregations(final List<PostAggregator> postAggs, final boolean descending)
+  public Iterable<Row> iterableWithPostAggregations(@Nullable final List<PostAggregator> postAggs, final boolean descending)
   {
     return () -> {
       final List<DimensionDesc> 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 bacd53a..14113be 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.JsonCreator;
 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 final class ChangeRequestsSnapshot<T>
   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<T> requests;
 
   @JsonCreator
   public ChangeRequestsSnapshot(
       @JsonProperty("resetCounter") boolean resetCounter,
-      @JsonProperty("resetCause") String resetCause,
-      @JsonProperty("counter") ChangeRequestHistory.Counter counter,
-      @JsonProperty("requests") List<T> requests
+      @JsonProperty("resetCause") @Nullable String resetCause,
+      @JsonProperty("counter") @Nullable ChangeRequestHistory.Counter counter,
+      @JsonProperty("requests") @Nullable List<T> requests
   )
   {
     this.resetCounter = resetCounter;
@@ -76,18 +81,21 @@ public final class ChangeRequestsSnapshot<T>
     return resetCounter;
   }
 
+  @Nullable
   @JsonProperty
   public String getResetCause()
   {
     return resetCause;
   }
 
+  @Nullable
   @JsonProperty
   public ChangeRequestHistory.Counter getCounter()
   {
     return counter;
   }
 
+  @Nullable
   @JsonProperty
   public List<T> 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 f502545..cd2a8c3 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 @@ package org.apache.druid.server.coordination;
 
 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 d7962ce..6a044aa 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 @@ package org.apache.druid.server.coordination;
 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 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo;
 })
 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 85c1683..c4229a0 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 com.fasterxml.jackson.annotation.JsonUnwrapped;
 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 class SegmentChangeRequestDrop implements DataSegmentChangeRequest
   }
 
   @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 002b968..097e025 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 com.fasterxml.jackson.annotation.JsonUnwrapped;
 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 class SegmentChangeRequestLoad implements DataSegmentChangeRequest
   }
 
   @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 4f90249..3978bcf 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


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org