From ebecb1caec82d9256d2c3ef26a3647f4709184b4 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Fri, 28 Jun 2024 17:14:42 -0400 Subject: [PATCH] Throw an exception if metric registries are configured more than once --- .../textsecuregcm/metrics/MetricsUtil.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java index 00f38f2e9..4509f40ef 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsUtil.java @@ -19,6 +19,8 @@ import io.micrometer.core.instrument.binder.system.ProcessorMetrics; import io.micrometer.core.instrument.config.MeterFilter; import io.micrometer.core.instrument.distribution.DistributionStatisticConfig; import io.micrometer.statsd.StatsdMeterRegistry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.whispersystems.textsecuregcm.WhisperServerConfiguration; import org.whispersystems.textsecuregcm.WhisperServerVersion; import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration; @@ -30,6 +32,10 @@ public class MetricsUtil { public static final String PREFIX = "chat"; + private static volatile boolean registeredMetrics = false; + + private static final Logger log = LoggerFactory.getLogger(MetricsUtil.class); + /** * Returns a dot-separated ('.') name for the given class and name parts */ @@ -48,6 +54,13 @@ public class MetricsUtil { public static void configureRegistries(final WhisperServerConfiguration config, final Environment environment, DynamicConfigurationManager dynamicConfigurationManager) { + + if (registeredMetrics) { + throw new IllegalStateException("Metric registries configured more than once"); + } + + registeredMetrics = true; + SharedMetricRegistries.add(Constants.METRICS_NAME, environment.metrics()); {