fix NPE in MetricsUtil#configureHistogramFilters

This commit is contained in:
Jonathan Klabunde Tomer
2025-08-11 14:11:17 -07:00
committed by GitHub
parent 9d4d36939c
commit 8ca7f85bf0
2 changed files with 19 additions and 5 deletions

View File

@@ -26,6 +26,8 @@ import java.time.Duration;
import java.util.Optional;
import java.util.stream.IntStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.whispersystems.textsecuregcm.WhisperServerConfiguration;
import org.whispersystems.textsecuregcm.WhisperServerVersion;
import org.whispersystems.textsecuregcm.configuration.OpenTelemetryConfiguration;
@@ -35,6 +37,8 @@ import org.whispersystems.textsecuregcm.util.Constants;
public class MetricsUtil {
private static final Logger log = LoggerFactory.getLogger(MetricsUtil.class);
public static final String PREFIX = "chat";
private static volatile boolean registeredMetrics = false;
@@ -155,6 +159,14 @@ public class MetricsUtil {
return config;
}
if (config.getMinimumExpectedValueAsDouble() == null || config.getMaximumExpectedValueAsDouble() == null) {
log.error("Distribution {} does not specify lower or upper bounds, not exporting histograms", id.getName());
return DistributionStatisticConfig.builder()
.percentilesHistogram(false)
.build()
.merge(config);
}
final double lowerBound = config.getMinimumExpectedValueAsDouble();
final double upperBound = config.getMaximumExpectedValueAsDouble();

View File

@@ -22,6 +22,7 @@ import java.util.Locale;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.IntStream;
import org.apache.commons.lang3.tuple.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,16 +59,17 @@ public class MessagePersister implements Managed {
private static final Counter TRIMMED_MESSAGE_COUNTER = Metrics.counter(name(MessagePersister.class, "trimmedMessage"));
private static final Counter TRIMMED_MESSAGE_BYTES_COUNTER = Metrics.counter(name(MessagePersister.class, "trimmedMessageBytes"));
private static final DistributionSummary QUEUE_COUNT_DISTRIBUTION_SUMMARY = DistributionSummary.builder(
name(MessagePersister.class, "queueCount"))
.publishPercentileHistogram(true)
.register(Metrics.globalRegistry);
private static final String QUEUE_SIZE_DISTRIBUTION_SUMMARY_NAME = name(MessagePersister.class, "queueSize");
static final int QUEUE_BATCH_LIMIT = 100;
static final int MESSAGE_BATCH_LIMIT = 100;
private static final DistributionSummary QUEUE_COUNT_DISTRIBUTION_SUMMARY = DistributionSummary.builder(
name(MessagePersister.class, "queueCount"))
.publishPercentiles(new double[0])
.serviceLevelObjectives(IntStream.range(1, QUEUE_BATCH_LIMIT + 1).mapToDouble(i -> i).toArray())
.register(Metrics.globalRegistry);
private static final long EXCEPTION_PAUSE_MILLIS = Duration.ofSeconds(3).toMillis();
private static final int CONSECUTIVE_EMPTY_CACHE_REMOVAL_LIMIT = 3;