Skip to content

Commit fb842ab

Browse files
committed
nullaway
Signed-off-by: Gregor Zeitlinger <[email protected]>
1 parent 1c0e85a commit fb842ab

File tree

4 files changed

+30
-21
lines changed

4 files changed

+30
-21
lines changed

prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ public Builder histogramClassicOnly(@Nullable Boolean histogramClassicOnly) {
414414
}
415415

416416
/** See {@link MetricsProperties#getHistogramClassicUpperBounds()} */
417-
public Builder histogramClassicUpperBounds(@Nullable double... histogramClassicUpperBounds) {
417+
public Builder histogramClassicUpperBounds(double... histogramClassicUpperBounds) {
418418
this.histogramClassicUpperBounds = Util.toList(histogramClassicUpperBounds);
419419
return this;
420420
}

prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -690,11 +690,14 @@ public Histogram build() {
690690

691691
@Override
692692
protected MetricsProperties toProperties() {
693-
return MetricsProperties.builder()
693+
MetricsProperties.Builder builder = MetricsProperties.builder();
694+
if (classicUpperBounds != null) {
695+
builder.histogramClassicUpperBounds(classicUpperBounds);
696+
}
697+
return builder
694698
.exemplarsEnabled(exemplarsEnabled)
695699
.histogramNativeOnly(nativeOnly)
696700
.histogramClassicOnly(classicOnly)
697-
.histogramClassicUpperBounds(classicUpperBounds)
698701
.histogramNativeInitialSchema(nativeInitialSchema)
699702
.histogramNativeMinZeroThreshold(nativeMinZeroThreshold)
700703
.histogramNativeMaxZeroThreshold(nativeMaxZeroThreshold)

prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static io.prometheus.metrics.model.snapshots.PrometheusNaming.prometheusName;
44

5-
import io.prometheus.metrics.config.MetricsProperties;
65
import io.prometheus.metrics.config.PrometheusProperties;
76
import io.prometheus.metrics.core.datapoints.StateSetDataPoint;
87
import io.prometheus.metrics.model.snapshots.Labels;
@@ -11,6 +10,7 @@
1110
import java.util.Collections;
1211
import java.util.List;
1312
import java.util.stream.Stream;
13+
import javax.annotation.Nullable;
1414

1515
/**
1616
* StateSet metric. Example:
@@ -53,14 +53,11 @@
5353
public class StateSet extends StatefulMetric<StateSetDataPoint, StateSet.DataPoint>
5454
implements StateSetDataPoint {
5555

56-
private final boolean exemplarsEnabled;
5756
private final String[] names;
5857

59-
private StateSet(Builder builder, PrometheusProperties prometheusProperties) {
58+
private StateSet(Builder builder, String[] names) {
6059
super(builder);
61-
MetricsProperties[] properties = getMetricProperties(builder, prometheusProperties);
62-
exemplarsEnabled = getConfigProperty(properties, MetricsProperties::getExemplarsEnabled);
63-
this.names = builder.names; // builder.names is already a validated copy
60+
this.names = names;
6461
for (String name : names) {
6562
if (this.getMetadata().getPrometheusName().equals(prometheusName(name))) {
6663
throw new IllegalArgumentException(
@@ -139,7 +136,7 @@ public static Builder builder(PrometheusProperties config) {
139136

140137
public static class Builder extends StatefulMetric.Builder<Builder, StateSet> {
141138

142-
private String[] names;
139+
@Nullable private String[] names;
143140

144141
private Builder(PrometheusProperties config) {
145142
super(Collections.emptyList(), config);
@@ -165,7 +162,7 @@ public StateSet build() {
165162
if (names == null) {
166163
throw new IllegalStateException("State names are required when building a StateSet.");
167164
}
168-
return new StateSet(this, properties);
165+
return new StateSet(this, names);
169166
}
170167

171168
@Override

prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.prometheus.metrics.core.metrics;
22

3+
import static java.util.Objects.requireNonNull;
4+
35
import io.prometheus.metrics.config.MetricsProperties;
46
import io.prometheus.metrics.config.PrometheusProperties;
57
import io.prometheus.metrics.core.datapoints.DistributionDataPoint;
@@ -43,6 +45,7 @@ public class Summary extends StatefulMetric<DistributionDataPoint, Summary.DataP
4345
implements DistributionDataPoint {
4446

4547
private final List<CKMSQuantiles.Quantile> quantiles; // May be empty, but cannot be null.
48+
4649
private final long maxAgeSeconds;
4750
private final int ageBuckets;
4851
@Nullable private final ExemplarSamplerConfig exemplarSamplerConfig;
@@ -114,14 +117,16 @@ public class DataPoint implements DistributionDataPoint {
114117

115118
private final LongAdder count = new LongAdder();
116119
private final DoubleAdder sum = new DoubleAdder();
117-
private final SlidingWindow<CKMSQuantiles> quantileValues;
120+
@Nullable private final SlidingWindow<CKMSQuantiles> quantileValues;
118121
private final Buffer buffer = new Buffer();
119122
@Nullable private final ExemplarSampler exemplarSampler;
120123

121124
private final long createdTimeMillis = System.currentTimeMillis();
122125

123126
private DataPoint() {
124-
if (quantiles.size() > 0) {
127+
if (quantiles.isEmpty()) {
128+
quantileValues = null;
129+
} else {
125130
CKMSQuantiles.Quantile[] quantilesArray = quantiles.toArray(new CKMSQuantiles.Quantile[0]);
126131
quantileValues =
127132
new SlidingWindow<>(
@@ -130,8 +135,6 @@ private DataPoint() {
130135
CKMSQuantiles::insert,
131136
maxAgeSeconds,
132137
ageBuckets);
133-
} else {
134-
quantileValues = null;
135138
}
136139
if (exemplarSamplerConfig != null) {
137140
exemplarSampler = new ExemplarSampler(exemplarSamplerConfig);
@@ -200,7 +203,8 @@ private Quantiles makeQuantiles() {
200203
for (int i = 0; i < getQuantiles().size(); i++) {
201204
CKMSQuantiles.Quantile quantile = getQuantiles().get(i);
202205
quantiles[i] =
203-
new Quantile(quantile.quantile, quantileValues.current().get(quantile.quantile));
206+
new Quantile(
207+
quantile.quantile, requireNonNull(quantileValues).current().get(quantile.quantile));
204208
}
205209
return Quantiles.of(quantiles);
206210
}
@@ -223,8 +227,8 @@ public static class Builder extends StatefulMetric.Builder<Summary.Builder, Summ
223227
public static final int DEFAULT_NUMBER_OF_AGE_BUCKETS = 5;
224228

225229
private final List<CKMSQuantiles.Quantile> quantiles = new ArrayList<>();
226-
private Long maxAgeSeconds;
227-
private Integer ageBuckets;
230+
@Nullable private Long maxAgeSeconds;
231+
@Nullable private Integer ageBuckets;
228232

229233
private Builder(PrometheusProperties properties) {
230234
super(Collections.singletonList("quantile"), properties);
@@ -325,10 +329,15 @@ protected MetricsProperties toProperties() {
325329
quantileErrors[i] = this.quantiles.get(i).epsilon;
326330
}
327331
}
328-
return MetricsProperties.builder()
332+
MetricsProperties.Builder builder = MetricsProperties.builder();
333+
if (quantiles != null) {
334+
builder.summaryQuantiles(quantiles);
335+
}
336+
if (quantileErrors != null) {
337+
builder.summaryQuantileErrors(quantileErrors);
338+
}
339+
return builder
329340
.exemplarsEnabled(exemplarsEnabled)
330-
.summaryQuantiles(quantiles)
331-
.summaryQuantileErrors(quantileErrors)
332341
.summaryNumberOfAgeBuckets(ageBuckets)
333342
.summaryMaxAgeSeconds(maxAgeSeconds)
334343
.build();

0 commit comments

Comments
 (0)