From 932b50fe5af365eb53dbf7c065039618bce623b2 Mon Sep 17 00:00:00 2001 From: Sibasis Padhi Date: Thu, 8 Jan 2026 07:18:16 -0600 Subject: [PATCH 001/110] Add custom tags to JVM metrics (#1769) Fixes https://github.com/prometheus/client_java/issues/1694 --------- Signed-off-by: Sibasis Padhi --- .../jvm/JvmBufferPoolMetrics.java | 16 ++++++++-- .../jvm/JvmClassLoadingMetrics.java | 17 +++++++++-- .../jvm/JvmCompilationMetrics.java | 15 ++++++++-- .../jvm/JvmGarbageCollectorMetrics.java | 16 ++++++++-- .../instrumentation/jvm/JvmMemoryMetrics.java | 29 +++++++++++++++++-- .../jvm/JvmMemoryPoolAllocationMetrics.java | 15 ++++++++-- .../instrumentation/jvm/JvmMetrics.java | 28 +++++++++++------- .../jvm/JvmNativeMemoryMetrics.java | 16 ++++++++-- .../jvm/JvmRuntimeInfoMetric.java | 18 ++++++++++-- .../jvm/JvmThreadsMetrics.java | 23 +++++++++++++-- .../instrumentation/jvm/ProcessMetrics.java | 20 +++++++++++-- .../instrumentation/jvm/JvmMetricsTest.java | 23 +++++++++++++++ 12 files changed, 206 insertions(+), 30 deletions(-) diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java index 7f45c8303..8fc4b87e9 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java @@ -3,6 +3,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Unit; import java.lang.management.BufferPoolMXBean; import java.lang.management.ManagementFactory; @@ -48,11 +49,13 @@ public class JvmBufferPoolMetrics { private final PrometheusProperties config; private final List bufferPoolBeans; + private final Labels constLabels; private JvmBufferPoolMetrics( - List bufferPoolBeans, PrometheusProperties config) { + List bufferPoolBeans, PrometheusProperties config, Labels constLabels) { this.config = config; this.bufferPoolBeans = bufferPoolBeans; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -68,6 +71,7 @@ private void register(PrometheusRegistry registry) { callback.call(pool.getMemoryUsed(), pool.getName()); } }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -81,6 +85,7 @@ private void register(PrometheusRegistry registry) { callback.call(pool.getTotalCapacity(), pool.getName()); } }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -93,6 +98,7 @@ private void register(PrometheusRegistry registry) { callback.call(pool.getCount(), pool.getName()); } }) + .constLabels(constLabels) .register(registry); } @@ -108,11 +114,17 @@ public static class Builder { private final PrometheusProperties config; @Nullable private List bufferPoolBeans; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder bufferPoolBeans(List bufferPoolBeans) { this.bufferPoolBeans = bufferPoolBeans; @@ -128,7 +140,7 @@ public void register(PrometheusRegistry registry) { if (bufferPoolBeans == null) { bufferPoolBeans = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class); } - new JvmBufferPoolMetrics(bufferPoolBeans, config).register(registry); + new JvmBufferPoolMetrics(bufferPoolBeans, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java index bc0465a87..34e9dcb8a 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java @@ -4,6 +4,7 @@ import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import java.lang.management.ClassLoadingMXBean; import java.lang.management.ManagementFactory; import javax.annotation.Nullable; @@ -44,10 +45,13 @@ public class JvmClassLoadingMetrics { private final PrometheusProperties config; private final ClassLoadingMXBean classLoadingBean; + private final Labels constLabels; - private JvmClassLoadingMetrics(ClassLoadingMXBean classLoadingBean, PrometheusProperties config) { + private JvmClassLoadingMetrics( + ClassLoadingMXBean classLoadingBean, PrometheusProperties config, Labels constLabels) { this.classLoadingBean = classLoadingBean; this.config = config; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -56,6 +60,7 @@ private void register(PrometheusRegistry registry) { .name(JVM_CLASSES_CURRENTLY_LOADED) .help("The number of classes that are currently loaded in the JVM") .callback(callback -> callback.call(classLoadingBean.getLoadedClassCount())) + .constLabels(constLabels) .register(registry); CounterWithCallback.builder(config) @@ -63,6 +68,7 @@ private void register(PrometheusRegistry registry) { .help( "The total number of classes that have been loaded since the JVM has started execution") .callback(callback -> callback.call(classLoadingBean.getTotalLoadedClassCount())) + .constLabels(constLabels) .register(registry); CounterWithCallback.builder(config) @@ -71,6 +77,7 @@ private void register(PrometheusRegistry registry) { "The total number of classes that have been unloaded since the JVM has " + "started execution") .callback(callback -> callback.call(classLoadingBean.getUnloadedClassCount())) + .constLabels(constLabels) .register(registry); } @@ -86,11 +93,17 @@ public static class Builder { private final PrometheusProperties config; @Nullable private ClassLoadingMXBean classLoadingBean; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder classLoadingBean(ClassLoadingMXBean classLoadingBean) { this.classLoadingBean = classLoadingBean; @@ -106,7 +119,7 @@ public void register(PrometheusRegistry registry) { this.classLoadingBean != null ? this.classLoadingBean : ManagementFactory.getClassLoadingMXBean(); - new JvmClassLoadingMetrics(classLoadingBean, config).register(registry); + new JvmClassLoadingMetrics(classLoadingBean, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java index dfde6c539..975b6c6a3 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java @@ -5,6 +5,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Unit; import java.lang.management.CompilationMXBean; import java.lang.management.ManagementFactory; @@ -39,10 +40,13 @@ public class JvmCompilationMetrics { private final PrometheusProperties config; private final CompilationMXBean compilationBean; + private final Labels constLabels; - private JvmCompilationMetrics(CompilationMXBean compilationBean, PrometheusProperties config) { + private JvmCompilationMetrics( + CompilationMXBean compilationBean, PrometheusProperties config, Labels constLabels) { this.compilationBean = compilationBean; this.config = config; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -57,6 +61,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.SECONDS) .callback( callback -> callback.call(millisToSeconds(compilationBean.getTotalCompilationTime()))) + .constLabels(constLabels) .register(registry); } @@ -72,11 +77,17 @@ public static class Builder { private final PrometheusProperties config; @Nullable private CompilationMXBean compilationBean; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder compilationBean(CompilationMXBean compilationBean) { this.compilationBean = compilationBean; @@ -92,7 +103,7 @@ public void register(PrometheusRegistry registry) { this.compilationBean != null ? this.compilationBean : ManagementFactory.getCompilationMXBean(); - new JvmCompilationMetrics(compilationBean, config).register(registry); + new JvmCompilationMetrics(compilationBean, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java index 262e2df5f..a87b52a4f 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java @@ -3,6 +3,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.SummaryWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Quantiles; import io.prometheus.metrics.model.snapshots.Unit; import java.lang.management.GarbageCollectorMXBean; @@ -42,11 +43,15 @@ public class JvmGarbageCollectorMetrics { private final PrometheusProperties config; private final List garbageCollectorBeans; + private final Labels constLabels; private JvmGarbageCollectorMetrics( - List garbageCollectorBeans, PrometheusProperties config) { + List garbageCollectorBeans, + PrometheusProperties config, + Labels constLabels) { this.config = config; this.garbageCollectorBeans = garbageCollectorBeans; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -66,6 +71,7 @@ private void register(PrometheusRegistry registry) { gc.getName()); } }) + .constLabels(constLabels) .register(registry); } @@ -81,11 +87,17 @@ public static class Builder { private final PrometheusProperties config; @Nullable private List garbageCollectorBeans; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder garbageCollectorBeans(List garbageCollectorBeans) { this.garbageCollectorBeans = garbageCollectorBeans; @@ -101,7 +113,7 @@ public void register(PrometheusRegistry registry) { if (garbageCollectorBeans == null) { garbageCollectorBeans = ManagementFactory.getGarbageCollectorMXBeans(); } - new JvmGarbageCollectorMetrics(garbageCollectorBeans, config).register(registry); + new JvmGarbageCollectorMetrics(garbageCollectorBeans, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java index cecfe3c8a..1b34dba6c 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java @@ -3,6 +3,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Unit; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; @@ -127,12 +128,17 @@ public class JvmMemoryMetrics { private final PrometheusProperties config; private final MemoryMXBean memoryBean; private final List poolBeans; + private final Labels constLabels; private JvmMemoryMetrics( - List poolBeans, MemoryMXBean memoryBean, PrometheusProperties config) { + List poolBeans, + MemoryMXBean memoryBean, + PrometheusProperties config, + Labels constLabels) { this.config = config; this.poolBeans = poolBeans; this.memoryBean = memoryBean; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -141,6 +147,7 @@ private void register(PrometheusRegistry registry) { .name(JVM_MEMORY_OBJECTS_PENDING_FINALIZATION) .help("The number of objects waiting in the finalizer queue.") .callback(callback -> callback.call(memoryBean.getObjectPendingFinalizationCount())) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -153,6 +160,7 @@ private void register(PrometheusRegistry registry) { callback.call(memoryBean.getHeapMemoryUsage().getUsed(), "heap"); callback.call(memoryBean.getNonHeapMemoryUsage().getUsed(), "nonheap"); }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -165,6 +173,7 @@ private void register(PrometheusRegistry registry) { callback.call(memoryBean.getHeapMemoryUsage().getCommitted(), "heap"); callback.call(memoryBean.getNonHeapMemoryUsage().getCommitted(), "nonheap"); }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -177,6 +186,7 @@ private void register(PrometheusRegistry registry) { callback.call(memoryBean.getHeapMemoryUsage().getMax(), "heap"); callback.call(memoryBean.getNonHeapMemoryUsage().getMax(), "nonheap"); }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -189,6 +199,7 @@ private void register(PrometheusRegistry registry) { callback.call(memoryBean.getHeapMemoryUsage().getInit(), "heap"); callback.call(memoryBean.getNonHeapMemoryUsage().getInit(), "nonheap"); }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -197,6 +208,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.BYTES) .labelNames("pool") .callback(makeCallback(poolBeans, MemoryPoolMXBean::getUsage, MemoryUsage::getUsed)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -205,6 +217,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.BYTES) .labelNames("pool") .callback(makeCallback(poolBeans, MemoryPoolMXBean::getUsage, MemoryUsage::getCommitted)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -213,6 +226,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.BYTES) .labelNames("pool") .callback(makeCallback(poolBeans, MemoryPoolMXBean::getUsage, MemoryUsage::getMax)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -221,6 +235,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.BYTES) .labelNames("pool") .callback(makeCallback(poolBeans, MemoryPoolMXBean::getUsage, MemoryUsage::getInit)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -230,6 +245,7 @@ private void register(PrometheusRegistry registry) { .labelNames("pool") .callback( makeCallback(poolBeans, MemoryPoolMXBean::getCollectionUsage, MemoryUsage::getUsed)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -240,6 +256,7 @@ private void register(PrometheusRegistry registry) { .callback( makeCallback( poolBeans, MemoryPoolMXBean::getCollectionUsage, MemoryUsage::getCommitted)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -249,6 +266,7 @@ private void register(PrometheusRegistry registry) { .labelNames("pool") .callback( makeCallback(poolBeans, MemoryPoolMXBean::getCollectionUsage, MemoryUsage::getMax)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -258,6 +276,7 @@ private void register(PrometheusRegistry registry) { .labelNames("pool") .callback( makeCallback(poolBeans, MemoryPoolMXBean::getCollectionUsage, MemoryUsage::getInit)) + .constLabels(constLabels) .register(registry); } @@ -288,11 +307,17 @@ public static class Builder { private final PrometheusProperties config; @Nullable private MemoryMXBean memoryBean; @Nullable private List poolBeans; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder withMemoryBean(MemoryMXBean memoryBean) { this.memoryBean = memoryBean; @@ -314,7 +339,7 @@ public void register(PrometheusRegistry registry) { this.memoryBean != null ? this.memoryBean : ManagementFactory.getMemoryMXBean(); List poolBeans = this.poolBeans != null ? this.poolBeans : ManagementFactory.getMemoryPoolMXBeans(); - new JvmMemoryMetrics(poolBeans, bean, config).register(registry); + new JvmMemoryMetrics(poolBeans, bean, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java index 160469b8b..5dfb4199b 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java @@ -5,6 +5,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.Counter; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.lang.management.MemoryUsage; @@ -52,9 +53,12 @@ public class JvmMemoryPoolAllocationMetrics { "jvm_memory_pool_allocated_bytes_total"; private final List garbageCollectorBeans; + private final Labels constLabels; - private JvmMemoryPoolAllocationMetrics(List garbageCollectorBeans) { + private JvmMemoryPoolAllocationMetrics( + List garbageCollectorBeans, Labels constLabels) { this.garbageCollectorBeans = garbageCollectorBeans; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -65,6 +69,7 @@ private void register(PrometheusRegistry registry) { "Total bytes allocated in a given JVM memory pool. Only updated after GC, " + "not continuously.") .labelNames("pool") + .constLabels(constLabels) .register(registry); AllocationCountingNotificationListener listener = @@ -152,9 +157,15 @@ public static Builder builder(PrometheusProperties config) { public static class Builder { @Nullable private List garbageCollectorBeans; + private Labels constLabels = Labels.EMPTY; private Builder() {} + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder withGarbageCollectorBeans(List garbageCollectorBeans) { this.garbageCollectorBeans = garbageCollectorBeans; @@ -170,7 +181,7 @@ public void register(PrometheusRegistry registry) { if (garbageCollectorBeans == null) { garbageCollectorBeans = ManagementFactory.getGarbageCollectorMXBeans(); } - new JvmMemoryPoolAllocationMetrics(garbageCollectorBeans).register(registry); + new JvmMemoryPoolAllocationMetrics(garbageCollectorBeans, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java index 0f5a56eee..b0abd86b1 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java @@ -2,6 +2,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -32,11 +33,18 @@ public static Builder builder(PrometheusProperties config) { public static class Builder { private final PrometheusProperties config; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + /** Set constant labels that will be applied to all JVM metrics registered by this builder. */ + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** * Register all JVM metrics with the default registry. * @@ -55,16 +63,16 @@ public void register() { */ public void register(PrometheusRegistry registry) { if (REGISTERED.add(registry)) { - JvmThreadsMetrics.builder(config).register(registry); - JvmBufferPoolMetrics.builder(config).register(registry); - JvmClassLoadingMetrics.builder(config).register(registry); - JvmCompilationMetrics.builder(config).register(registry); - JvmGarbageCollectorMetrics.builder(config).register(registry); - JvmMemoryPoolAllocationMetrics.builder(config).register(registry); - JvmMemoryMetrics.builder(config).register(registry); - JvmNativeMemoryMetrics.builder(config).register(registry); - JvmRuntimeInfoMetric.builder(config).register(registry); - ProcessMetrics.builder(config).register(registry); + JvmThreadsMetrics.builder(config).constLabels(constLabels).register(registry); + JvmBufferPoolMetrics.builder(config).constLabels(constLabels).register(registry); + JvmClassLoadingMetrics.builder(config).constLabels(constLabels).register(registry); + JvmCompilationMetrics.builder(config).constLabels(constLabels).register(registry); + JvmGarbageCollectorMetrics.builder(config).constLabels(constLabels).register(registry); + JvmMemoryPoolAllocationMetrics.builder(config).constLabels(constLabels).register(registry); + JvmMemoryMetrics.builder(config).constLabels(constLabels).register(registry); + JvmNativeMemoryMetrics.builder(config).constLabels(constLabels).register(registry); + JvmRuntimeInfoMetric.builder(config).constLabels(constLabels).register(registry); + ProcessMetrics.builder(config).constLabels(constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java index 53225edca..f2ae98abf 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java @@ -3,6 +3,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Unit; import java.lang.management.ManagementFactory; import java.util.concurrent.atomic.AtomicBoolean; @@ -97,10 +98,13 @@ public class JvmNativeMemoryMetrics { private final PrometheusProperties config; private final PlatformMBeanServerAdapter adapter; + private final Labels constLabels; - private JvmNativeMemoryMetrics(PrometheusProperties config, PlatformMBeanServerAdapter adapter) { + private JvmNativeMemoryMetrics( + PrometheusProperties config, PlatformMBeanServerAdapter adapter, Labels constLabels) { this.config = config; this.adapter = adapter; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -115,6 +119,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.BYTES) .labelNames("pool") .callback(makeCallback(true)) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -125,6 +130,7 @@ private void register(PrometheusRegistry registry) { .unit(Unit.BYTES) .labelNames("pool") .callback(makeCallback(false)) + .constLabels(constLabels) .register(registry); } } @@ -200,6 +206,7 @@ public static class Builder { private final PrometheusProperties config; private final PlatformMBeanServerAdapter adapter; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this(config, new DefaultPlatformMBeanServerAdapter()); @@ -211,12 +218,17 @@ private Builder(PrometheusProperties config) { this.adapter = adapter; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + public void register() { register(PrometheusRegistry.defaultRegistry); } public void register(PrometheusRegistry registry) { - new JvmNativeMemoryMetrics(config, adapter).register(registry); + new JvmNativeMemoryMetrics(config, adapter, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java index 5ebd61c21..58363780f 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java @@ -3,6 +3,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.Info; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import javax.annotation.Nullable; /** @@ -33,13 +34,19 @@ public class JvmRuntimeInfoMetric { private final String version; private final String vendor; private final String runtime; + private final Labels constLabels; private JvmRuntimeInfoMetric( - String version, String vendor, String runtime, PrometheusProperties config) { + String version, + String vendor, + String runtime, + PrometheusProperties config, + Labels constLabels) { this.config = config; this.version = version; this.vendor = vendor; this.runtime = runtime; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -49,6 +56,7 @@ private void register(PrometheusRegistry registry) { .name(JVM_RUNTIME_INFO) .help("JVM runtime info") .labelNames("version", "vendor", "runtime") + .constLabels(constLabels) .register(registry); jvmInfo.setLabelValues(version, vendor, runtime); @@ -68,11 +76,17 @@ public static class Builder { @Nullable private String version; @Nullable private String vendor; @Nullable private String runtime; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder version(String version) { this.version = version; @@ -104,7 +118,7 @@ public void register(PrometheusRegistry registry) { this.vendor != null ? this.vendor : System.getProperty("java.vm.vendor", "unknown"); String runtime = this.runtime != null ? this.runtime : System.getProperty("java.runtime.name", "unknown"); - new JvmRuntimeInfoMetric(version, vendor, runtime, config).register(registry); + new JvmRuntimeInfoMetric(version, vendor, runtime, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java index d3c69795e..0e98e29d3 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java @@ -6,6 +6,7 @@ import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; @@ -74,12 +75,17 @@ public class JvmThreadsMetrics { private final PrometheusProperties config; private final ThreadMXBean threadBean; private final boolean isNativeImage; + private final Labels constLabels; private JvmThreadsMetrics( - boolean isNativeImage, ThreadMXBean threadBean, PrometheusProperties config) { + boolean isNativeImage, + ThreadMXBean threadBean, + PrometheusProperties config, + Labels constLabels) { this.config = config; this.threadBean = threadBean; this.isNativeImage = isNativeImage; + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -88,24 +94,28 @@ private void register(PrometheusRegistry registry) { .name(JVM_THREADS_CURRENT) .help("Current thread count of a JVM") .callback(callback -> callback.call(threadBean.getThreadCount())) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) .name(JVM_THREADS_DAEMON) .help("Daemon thread count of a JVM") .callback(callback -> callback.call(threadBean.getDaemonThreadCount())) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) .name(JVM_THREADS_PEAK) .help("Peak thread count of a JVM") .callback(callback -> callback.call(threadBean.getPeakThreadCount())) + .constLabels(constLabels) .register(registry); CounterWithCallback.builder(config) .name(JVM_THREADS_STARTED_TOTAL) .help("Started thread count of a JVM") .callback(callback -> callback.call(threadBean.getTotalStartedThreadCount())) + .constLabels(constLabels) .register(registry); if (!isNativeImage) { @@ -116,6 +126,7 @@ private void register(PrometheusRegistry registry) { + "ownable synchronizers") .callback( callback -> callback.call(nullSafeArrayLength(threadBean.findDeadlockedThreads()))) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -124,6 +135,7 @@ private void register(PrometheusRegistry registry) { .callback( callback -> callback.call(nullSafeArrayLength(threadBean.findMonitorDeadlockedThreads()))) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -137,6 +149,7 @@ private void register(PrometheusRegistry registry) { callback.call(entry.getValue(), entry.getKey()); } }) + .constLabels(constLabels) .register(registry); } } @@ -196,11 +209,17 @@ public static class Builder { private final PrometheusProperties config; @Nullable private Boolean isNativeImage; @Nullable private ThreadMXBean threadBean; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + /** Package private. For testing only. */ Builder threadBean(ThreadMXBean threadBean) { this.threadBean = threadBean; @@ -222,7 +241,7 @@ public void register(PrometheusRegistry registry) { this.threadBean != null ? this.threadBean : ManagementFactory.getThreadMXBean(); boolean isNativeImage = this.isNativeImage != null ? this.isNativeImage : NativeImageChecker.isGraalVmNativeImage; - new JvmThreadsMetrics(isNativeImage, threadBean, config).register(registry); + new JvmThreadsMetrics(isNativeImage, threadBean, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java index e3363c868..b341f848a 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java @@ -4,6 +4,7 @@ import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Unit; import java.io.BufferedReader; import java.io.File; @@ -82,17 +83,20 @@ public class ProcessMetrics { private final RuntimeMXBean runtimeBean; private final Grepper grepper; private final boolean linux; + private final Labels constLabels; private ProcessMetrics( OperatingSystemMXBean osBean, RuntimeMXBean runtimeBean, Grepper grepper, - PrometheusProperties config) { + PrometheusProperties config, + Labels constLabels) { this.osBean = osBean; this.runtimeBean = runtimeBean; this.grepper = grepper; this.config = config; this.linux = PROC_SELF_STATUS.canRead(); + this.constLabels = constLabels; } private void register(PrometheusRegistry registry) { @@ -118,6 +122,7 @@ private void register(PrometheusRegistry registry) { // Ignored } }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -125,6 +130,7 @@ private void register(PrometheusRegistry registry) { .help("Start time of the process since unix epoch in seconds.") .unit(Unit.SECONDS) .callback(callback -> callback.call(Unit.millisToSeconds(runtimeBean.getStartTime()))) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -141,6 +147,7 @@ private void register(PrometheusRegistry registry) { // Ignored } }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -157,6 +164,7 @@ private void register(PrometheusRegistry registry) { // Ignored } }) + .constLabels(constLabels) .register(registry); if (linux) { @@ -174,6 +182,7 @@ private void register(PrometheusRegistry registry) { // Ignored } }) + .constLabels(constLabels) .register(registry); GaugeWithCallback.builder(config) @@ -189,6 +198,7 @@ private void register(PrometheusRegistry registry) { // Ignored } }) + .constLabels(constLabels) .register(registry); } } @@ -275,6 +285,7 @@ public static class Builder { @Nullable private OperatingSystemMXBean osBean; @Nullable private RuntimeMXBean runtimeBean; @Nullable private Grepper grepper; + private Labels constLabels = Labels.EMPTY; private Builder(PrometheusProperties config) { this.config = config; @@ -298,6 +309,11 @@ Builder grepper(Grepper grepper) { return this; } + public Builder constLabels(Labels constLabels) { + this.constLabels = constLabels; + return this; + } + public void register() { register(PrometheusRegistry.defaultRegistry); } @@ -308,7 +324,7 @@ public void register(PrometheusRegistry registry) { RuntimeMXBean bean = this.runtimeBean != null ? this.runtimeBean : ManagementFactory.getRuntimeMXBean(); Grepper grepper = this.grepper != null ? this.grepper : new FileGrepper(); - new ProcessMetrics(osBean, bean, grepper, config).register(registry); + new ProcessMetrics(osBean, bean, grepper, config, constLabels).register(registry); } } } diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java index 2bb908a37..551ed35c7 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java @@ -4,6 +4,10 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.DataPointSnapshot; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; import java.lang.management.ManagementFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -32,6 +36,25 @@ void pool() { .register(); } + @Test + void testConstLabelsApplied() { + PrometheusRegistry registry = new PrometheusRegistry(); + Labels labels = Labels.of("env", "dev"); + JvmMetrics.builder().constLabels(labels).register(registry); + MetricSnapshots snapshots = registry.scrape(); + boolean found = false; + for (MetricSnapshot snapshot : snapshots) { + for (DataPointSnapshot dp : snapshot.getDataPoints()) { + if ("dev".equals(dp.getLabels().get("env"))) { + found = true; + break; + } + } + if (found) break; + } + assertThat(found).isTrue(); + } + @Test void testJvmMetrics() { JvmMetrics.builder(PrometheusProperties.get()).register(); From d4fc0739689bb90cc182a1d7b43e6cebadf9b38d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 Jan 2026 19:15:08 +0000 Subject: [PATCH 002/110] chore(deps): update dependency com.google.errorprone:error_prone_core to v2.46.0 (#1773) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.google.errorprone:error_prone_core](https://errorprone.info) ([source](https://redirect.github.com/google/error-prone)) | `2.45.0` โ†’ `2.46.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.errorprone:error_prone_core/2.46.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.errorprone:error_prone_core/2.45.0/2.46.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
google/error-prone (com.google.errorprone:error_prone_core) ### [`v2.46.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.46.0): Error Prone 2.46.0 [Compare Source](https://redirect.github.com/google/error-prone/compare/v2.45.0...v2.46.0) Changes: - The javac flag `-XDaddTypeAnnotationsToSymbol=true` is now required for Error Prone invocations on JDK 21, to enable the javac fix for [JDK-8225377: type annotations are not visible to javac plugins across compilation boundaries](https://bugs.openjdk.org/browse/JDK-8225377). See [#​5426](https://redirect.github.com/google/error-prone/issues/5426) for details. - Remove deprecated `value` attribute from `@IncompatibleModifiers` and `@RequiredModifiers` ([#​2122](https://redirect.github.com/google/error-prone/issues/2122)) - Error Prone API changes to encapsulate references to internal javac APIs for end position handling (`EndPosTable`, `DiagnosticPosition`) ([`5440bb4`](https://redirect.github.com/google/error-prone/commit/5440bb4bcd9d3455a131d863b09f71cfea8a346b), [`06c2905`](https://redirect.github.com/google/error-prone/commit/06c2905e03ade5e1564b5c67d44e2e34bfe5b8e4), [`f3915ec`](https://redirect.github.com/google/error-prone/commit/f3915ec322fa7f190c670f6a30bd476f463d8967)) New checks: - [`DuplicateAssertion`](https://errorprone.info/bugpattern/DuplicateAssertion): detect duplicated assertion lines where the argument to `assertThat` is pure - [`IfChainToSwitch`](https://errorprone.info/bugpattern/IfChainToSwitch): suggest converting chains of if-statements into arrow switches - [`ScannerUseDelimiter`](https://errorprone.info/bugpattern/ScannerUseDelimiter): discourage `Scanner.useDelimiter("\\A")` - [`AddNullMarkedToClass`](https://errorprone.info/bugpattern/AddNullMarkedToClass): refactoring to add `@NullMarked` annotation to top level classes
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e9a06374a..61b72db5b 100644 --- a/pom.xml +++ b/pom.xml @@ -275,7 +275,7 @@ com.google.errorprone error_prone_core - 2.45.0 + 2.46.0 com.uber.nullaway From 5af7881b19db6f0f6a250e9a39a5da9f00a61d64 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jan 2026 22:05:10 +0000 Subject: [PATCH 003/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.154.4 (#1775) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.154.3` โ†’ `v0.154.4` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.154.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.154.3/v0.154.4?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.154.4`](https://redirect.github.com/gohugoio/hugo/releases/tag/v0.154.4) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.154.3...v0.154.4) #### What's Changed - tpl: Fix language resolution for markdown shortcodes [`ec178ea`](https://redirect.github.com/gohugoio/hugo/commit/ec178ea4) [@​BarkinBalci](https://redirect.github.com/BarkinBalci) [#​14098](https://redirect.github.com/gohugoio/hugo/issues/14098) - For multiple dimensions setups, fix alias handling and multihost publish path [`2d80b8a`](https://redirect.github.com/gohugoio/hugo/commit/2d80b8a7) [@​bep](https://redirect.github.com/bep) [#​14354](https://redirect.github.com/gohugoio/hugo/issues/14354) [#​14356](https://redirect.github.com/gohugoio/hugo/issues/14356) - build(deps): bump github.com/goccy/go-yaml from 1.19.1 to 1.19.2 [`a2b2a5a`](https://redirect.github.com/gohugoio/hugo/commit/a2b2a5a9) [@​dependabot](https://redirect.github.com/dependabot)\[bot] Also see the new [Page.OutputFormats.Canonical](https://gohugo.io/methods/page/outputformats/#canonical) method.
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index f9819b481..e26318a80 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.154.3" +"go:github.com/gohugoio/hugo" = "v0.154.4" "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.1+8.0.LTS" lychee = "0.22.0" From dee261a2bd9ef0a47c48e2b6564f73f13eb15af6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 00:57:03 +0000 Subject: [PATCH 004/110] chore(deps): update dependency mise to v2026 (#1777) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [mise](https://redirect.github.com/jdx/mise) | major | `v2025.12.13` โ†’ `v2026.1.1` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
jdx/mise (mise) ### [`v2026.1.1`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.1) [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.0...v2026.1.1) ##### ๐Ÿš€ Features - **(config)** add .miserc.toml for early initialization settings by [@​jdx](https://redirect.github.com/jdx) in [#​7596](https://redirect.github.com/jdx/mise/pull/7596) - allow to include tasks from git repositories by [@​vmaleze](https://redirect.github.com/vmaleze) in [#​7582](https://redirect.github.com/jdx/mise/pull/7582) ##### ๐Ÿ› Bug Fixes - **(config)** mise use writes to lowest precedence config file by [@​jdx](https://redirect.github.com/jdx) in [#​7598](https://redirect.github.com/jdx/mise/pull/7598) - **(python)** sort miniconda versions by conda version instead of version string by [@​jdx](https://redirect.github.com/jdx) in [#​7595](https://redirect.github.com/jdx/mise/pull/7595) - Rust channel updates installing twice by [@​x9xhack](https://redirect.github.com/x9xhack) in [#​7565](https://redirect.github.com/jdx/mise/pull/7565) - use Bearer instead of token in authorization headers by [@​risu729](https://redirect.github.com/risu729) in [#​7593](https://redirect.github.com/jdx/mise/pull/7593) ##### ๐Ÿ“š Documentation - **(url-replacements)** document auth behaviour with url replacements by [@​risu729](https://redirect.github.com/risu729) in [#​7592](https://redirect.github.com/jdx/mise/pull/7592) - correct spelling in walkthrough.md by [@​tomhoover](https://redirect.github.com/tomhoover) in [#​7581](https://redirect.github.com/jdx/mise/pull/7581) ##### ๐Ÿ“ฆ Registry - Revert "fix(registry): fix biome test to handle version prefix" by [@​risu729](https://redirect.github.com/risu729) in [#​7586](https://redirect.github.com/jdx/mise/pull/7586) - use aqua backend for ty by [@​risu729](https://redirect.github.com/risu729) in [#​7539](https://redirect.github.com/jdx/mise/pull/7539) - update opencode's org from sst to anomalyco by [@​graelo](https://redirect.github.com/graelo) in [#​7594](https://redirect.github.com/jdx/mise/pull/7594) ##### New Contributors - [@​graelo](https://redirect.github.com/graelo) made their first contribution in [#​7594](https://redirect.github.com/jdx/mise/pull/7594) - [@​tomhoover](https://redirect.github.com/tomhoover) made their first contribution in [#​7581](https://redirect.github.com/jdx/mise/pull/7581) - [@​vmaleze](https://redirect.github.com/vmaleze) made their first contribution in [#​7582](https://redirect.github.com/jdx/mise/pull/7582) ### [`v2026.1.0`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.0) [Compare Source](https://redirect.github.com/jdx/mise/compare/v2025.12.13...v2026.1.0) ##### ๐Ÿš€ Features - **(hooks)** add tool context env vars to postinstall hooks by [@​jdx](https://redirect.github.com/jdx) in [#​7521](https://redirect.github.com/jdx/mise/pull/7521) - **(sops)** support standard SOPS environment variables by [@​yordis](https://redirect.github.com/yordis) in [#​7461](https://redirect.github.com/jdx/mise/pull/7461) - **(tasks)** Add disable\_spec\_from\_run\_scripts setting by [@​iamkroot](https://redirect.github.com/iamkroot) in [#​7471](https://redirect.github.com/jdx/mise/pull/7471) - **(tasks)** Add task\_show\_full\_cmd setting by [@​iamkroot](https://redirect.github.com/iamkroot) in [#​7344](https://redirect.github.com/jdx/mise/pull/7344) - **(tasks)** enable naked task completions and ::: separator by [@​jdx](https://redirect.github.com/jdx) in [#​7524](https://redirect.github.com/jdx/mise/pull/7524) - add Forgejo backend by [@​roele](https://redirect.github.com/roele) in [#​7469](https://redirect.github.com/jdx/mise/pull/7469) - override node bundled npm by specified version of npm by [@​risu729](https://redirect.github.com/risu729) in [#​7559](https://redirect.github.com/jdx/mise/pull/7559) ##### ๐Ÿ› Bug Fixes - **(aqua)** fix tree-sitter bin path regression by [@​risu729](https://redirect.github.com/risu729) in [#​7535](https://redirect.github.com/jdx/mise/pull/7535) - **(ci)** exclude subcrate tags from release workflow by [@​jdx](https://redirect.github.com/jdx) in [#​7517](https://redirect.github.com/jdx/mise/pull/7517) - **(e2e)** remove hardcoded year from version check by [@​jdx](https://redirect.github.com/jdx) in [#​7584](https://redirect.github.com/jdx/mise/pull/7584) - **(github)** asset matcher does not handle mixed archive/binary assets properly by [@​roele](https://redirect.github.com/roele) in [#​7566](https://redirect.github.com/jdx/mise/pull/7566) - **(github)** prioritize .zip on windows by [@​risu729](https://redirect.github.com/risu729) in [#​7568](https://redirect.github.com/jdx/mise/pull/7568) - **(github)** prefer .zip over non-archive extensions on linux by [@​risu729](https://redirect.github.com/risu729) in [#​7587](https://redirect.github.com/jdx/mise/pull/7587) - **(npm)** always use hoisted installs of bun by [@​sushichan044](https://redirect.github.com/sushichan044) in [#​7542](https://redirect.github.com/jdx/mise/pull/7542) - **(npm)** suppress NPM\_CONFIG\_UPDATE\_NOTIFIER by [@​risu729](https://redirect.github.com/risu729) in [#​7556](https://redirect.github.com/jdx/mise/pull/7556) - **(registry)** fix biome test to handle version prefix by [@​jdx](https://redirect.github.com/jdx) in [#​7585](https://redirect.github.com/jdx/mise/pull/7585) - **(tasks)** load monorepo task dirs without config by [@​matixlol](https://redirect.github.com/matixlol) in [#​7478](https://redirect.github.com/jdx/mise/pull/7478) - force reshim when windows\_shim\_mode is hardlink by [@​roele](https://redirect.github.com/roele) in [#​7537](https://redirect.github.com/jdx/mise/pull/7537) - simple .tar files are not extracted properly by [@​roele](https://redirect.github.com/roele) in [#​7567](https://redirect.github.com/jdx/mise/pull/7567) - quiet kerl update output by [@​iloveitaly](https://redirect.github.com/iloveitaly) in [#​7467](https://redirect.github.com/jdx/mise/pull/7467) ##### ๐Ÿ“š Documentation - **(registry)** remove ubi backend from preferred backends list by [@​risu729](https://redirect.github.com/risu729) in [#​7555](https://redirect.github.com/jdx/mise/pull/7555) - **(tasks)** remove advanced usage specs sections from toml-tasks.md by [@​risu729](https://redirect.github.com/risu729) in [#​7538](https://redirect.github.com/jdx/mise/pull/7538) - fix invalid config section `[aliases]` by [@​muzimuzhi](https://redirect.github.com/muzimuzhi) in [#​7518](https://redirect.github.com/jdx/mise/pull/7518) - Fix path to GitLab backend source by [@​henrebotha](https://redirect.github.com/henrebotha) in [#​7529](https://redirect.github.com/jdx/mise/pull/7529) - Fix path to GitLab backend source by [@​henrebotha](https://redirect.github.com/henrebotha) in [#​7531](https://redirect.github.com/jdx/mise/pull/7531) - update `mise --version` output by [@​muzimuzhi](https://redirect.github.com/muzimuzhi) in [#​7530](https://redirect.github.com/jdx/mise/pull/7530) ##### ๐Ÿงช Testing - **(win)** use pester in backend tests by [@​risu729](https://redirect.github.com/risu729) in [#​7536](https://redirect.github.com/jdx/mise/pull/7536) - update e2e tests to use `[tool_alias]` instead of `[alias]` by [@​muzimuzhi](https://redirect.github.com/muzimuzhi) in [#​7520](https://redirect.github.com/jdx/mise/pull/7520) ##### ๐Ÿ“ฆ๏ธ Dependency Updates - update alpine:edge docker digest to [`ea71a03`](https://redirect.github.com/jdx/mise/commit/ea71a03) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7545](https://redirect.github.com/jdx/mise/pull/7545) - update docker/setup-buildx-action digest to [`8d2750c`](https://redirect.github.com/jdx/mise/commit/8d2750c) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7546](https://redirect.github.com/jdx/mise/pull/7546) - update ghcr.io/jdx/mise:copr docker digest to [`23f4277`](https://redirect.github.com/jdx/mise/commit/23f4277) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7548](https://redirect.github.com/jdx/mise/pull/7548) - update ghcr.io/jdx/mise:alpine docker digest to [`0adc211`](https://redirect.github.com/jdx/mise/commit/0adc211) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7547](https://redirect.github.com/jdx/mise/pull/7547) - lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7211](https://redirect.github.com/jdx/mise/pull/7211) - lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7572](https://redirect.github.com/jdx/mise/pull/7572) - replace dependency [@​tsconfig/node18](https://redirect.github.com/tsconfig/node18) with [@​tsconfig/node20](https://redirect.github.com/tsconfig/node20) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7543](https://redirect.github.com/jdx/mise/pull/7543) - replace dependency [@​tsconfig/node20](https://redirect.github.com/tsconfig/node20) with [@​tsconfig/node22](https://redirect.github.com/tsconfig/node22) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​7544](https://redirect.github.com/jdx/mise/pull/7544) ##### ๐Ÿ“ฆ Registry - add zarf by [@​joonas](https://redirect.github.com/joonas) in [#​7525](https://redirect.github.com/jdx/mise/pull/7525) - update aws-vault to maintained fork by [@​h3y6e](https://redirect.github.com/h3y6e) in [#​7527](https://redirect.github.com/jdx/mise/pull/7527) - fix claude backend http for windows-x64 by [@​granstrand](https://redirect.github.com/granstrand) in [#​7540](https://redirect.github.com/jdx/mise/pull/7540) - add sqlc by [@​phm07](https://redirect.github.com/phm07) in [#​7570](https://redirect.github.com/jdx/mise/pull/7570) - use spm backend for swift-package-list by [@​risu729](https://redirect.github.com/risu729) in [#​7569](https://redirect.github.com/jdx/mise/pull/7569) - add npm (npm:npm) by [@​risu729](https://redirect.github.com/risu729) in [#​7557](https://redirect.github.com/jdx/mise/pull/7557) - add github backend for tmux by [@​ll-nick](https://redirect.github.com/ll-nick) in [#​7472](https://redirect.github.com/jdx/mise/pull/7472) ##### Chore - **(release)** update Changelog for v2025.12.13 by [@​muzimuzhi](https://redirect.github.com/muzimuzhi) in [#​7522](https://redirect.github.com/jdx/mise/pull/7522) ##### New Contributors - [@​ll-nick](https://redirect.github.com/ll-nick) made their first contribution in [#​7472](https://redirect.github.com/jdx/mise/pull/7472) - [@​sushichan044](https://redirect.github.com/sushichan044) made their first contribution in [#​7542](https://redirect.github.com/jdx/mise/pull/7542) - [@​phm07](https://redirect.github.com/phm07) made their first contribution in [#​7570](https://redirect.github.com/jdx/mise/pull/7570) - [@​granstrand](https://redirect.github.com/granstrand) made their first contribution in [#​7540](https://redirect.github.com/jdx/mise/pull/7540) - [@​h3y6e](https://redirect.github.com/h3y6e) made their first contribution in [#​7527](https://redirect.github.com/jdx/mise/pull/7527) - [@​matixlol](https://redirect.github.com/matixlol) made their first contribution in [#​7478](https://redirect.github.com/jdx/mise/pull/7478)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - "before 4am on monday" (UTC), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/acceptance-tests.yml | 4 ++-- .github/workflows/build.yml | 4 ++-- .github/workflows/github-pages.yaml | 4 ++-- .github/workflows/lint-rest.yml | 4 ++-- .github/workflows/native-tests.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- .github/workflows/test-release-build.yml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index c810d0667..8f22554bd 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 - name: Run acceptance tests run: mise run acceptance-test diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bda2f62af..012e79248 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,8 +14,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 - name: Cache local Maven repository uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index d10ccf942..814cfef61 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -39,8 +39,8 @@ jobs: fetch-depth: 0 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 cache: "false" - name: Setup Pages id: pages diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 80afb4d1e..7180d9999 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 - name: Lint run: mise run lint:rest diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index 4c41dba19..bad40289e 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -15,8 +15,8 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 working_directory: .mise/envs/native - name: Run native tests working-directory: .mise/envs/native diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6aaf1c05b..a8d3d90c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,8 +26,8 @@ jobs: - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 cache: false - name: Build release version diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 17e27f116..468a39f22 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -18,8 +18,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2025.12.13 - sha256: 2134c55725d08547cddc921f84ddac05c9de1700115c32817563435072cae5ed + version: v2026.1.1 + sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 - name: Cache local Maven repository uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5 with: From b73e9e2c728d3c9e60e3b2c2705ec62a764e7e2b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 00:57:24 +0000 Subject: [PATCH 005/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.154.5 (#1776) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.154.4` โ†’ `v0.154.5` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.154.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.154.4/v0.154.5?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.154.5`](https://redirect.github.com/gohugoio/hugo/releases/tag/v0.154.5) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.154.4...v0.154.5) #### What's Changed - Fix some default site redirect woes [`a775488`](https://redirect.github.com/gohugoio/hugo/commit/a7754883) [@​bep](https://redirect.github.com/bep) [#​14357](https://redirect.github.com/gohugoio/hugo/issues/14357) [#​14361](https://redirect.github.com/gohugoio/hugo/issues/14361) - hugolib: Fix newly created shortcodes not found during server rebuild [`66ba63c`](https://redirect.github.com/gohugoio/hugo/commit/66ba63cd) [@​Hasaber8](https://redirect.github.com/Hasaber8) [#​14207](https://redirect.github.com/gohugoio/hugo/issues/14207) - tpl/tplimpl: Remove trailing slash from void elements [`eb06a3c`](https://redirect.github.com/gohugoio/hugo/commit/eb06a3cd) [@​jmooring](https://redirect.github.com/jmooring)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index e26318a80..096db652c 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.154.4" +"go:github.com/gohugoio/hugo" = "v0.154.5" "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.1+8.0.LTS" lychee = "0.22.0" From 1effe1f434c123140c3ddecfe40ed919106faa1b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 11:46:36 +0000 Subject: [PATCH 006/110] fix(deps): update protobuf monorepo (#1774) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > **Note:** This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [protoc](https://redirect.github.com/protocolbuffers/protobuf) | | minor | `33.2` โ†’ `33.3` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/protocolbuffers%2fprotobuf/33.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/protocolbuffers%2fprotobuf/33.2/33.3?slim=true) | | [com.google.protobuf:protobuf-java](https://developers.google.com/protocol-buffers/) ([source](https://redirect.github.com/protocolbuffers/protobuf)) | compile | patch | `4.33.2` โ†’ `4.33.3` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.protobuf:protobuf-java/4.33.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.protobuf:protobuf-java/4.33.2/4.33.3?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
protocolbuffers/protobuf (protoc) ### [`v33.3`](https://redirect.github.com/protocolbuffers/protobuf/releases/tag/v33.3): Protocol Buffers v33.3 [Compare Source](https://redirect.github.com/protocolbuffers/protobuf/compare/v33.2...v33.3) ### Announcements - [Protobuf News](https://protobuf.dev/news/) may include additional announcements or pre-announcements for upcoming changes. ### Bazel - Fix: cc\_toolchain should prefer protoc when prebuilt flag is flipped. ([#​25168](https://redirect.github.com/protocolbuffers/protobuf/issues/25168)) ([`7b30360`](https://redirect.github.com/protocolbuffers/protobuf/commit/7b303609abd715df575c5a58543d21b98d687d0b)) - Locked down visibility of the new flags and config settings. ([`04ca1b7`](https://redirect.github.com/protocolbuffers/protobuf/commit/04ca1b7b472113471ae2ba7d9473904ae56bfc9b)) - Feat(bazel): wire up prebuilt protoc toolchain ([#​24115](https://redirect.github.com/protocolbuffers/protobuf/issues/24115)) ([`aeaede0`](https://redirect.github.com/protocolbuffers/protobuf/commit/aeaede0d08b40f707dec9fa48af84d5fe899e892)) ### Compiler - Create editions test\_utils to fix existing brittle tests in `command_line_interface_unittest` and `code_generator_unittest`. ([`cb0a8c5`](https://redirect.github.com/protocolbuffers/protobuf/commit/cb0a8c53e7821a8afd16211e329e5afe2bf391b2)) - Add edition unstable for development work. ([`44e090c`](https://redirect.github.com/protocolbuffers/protobuf/commit/44e090ccc539f522e4772707447b99d3193f8c4a)) - Add conformance test for edition unstable ([`d167dd0`](https://redirect.github.com/protocolbuffers/protobuf/commit/d167dd0229d60818c82878880d1a7e410d4294ce)) ### C++ - Add edition unstable for development work. ([`44e090c`](https://redirect.github.com/protocolbuffers/protobuf/commit/44e090ccc539f522e4772707447b99d3193f8c4a)) - Add conformance test for edition unstable ([`d167dd0`](https://redirect.github.com/protocolbuffers/protobuf/commit/d167dd0229d60818c82878880d1a7e410d4294ce)) ### Java - Add conformance test for edition unstable ([`d167dd0`](https://redirect.github.com/protocolbuffers/protobuf/commit/d167dd0229d60818c82878880d1a7e410d4294ce)) - Correctly apply JSON recursion limit when parsing an Any-of-Any. ([`94c7f73`](https://redirect.github.com/protocolbuffers/protobuf/commit/94c7f73824f603e0c0efe0e2968e610d8d5f161e)) ### Csharp - Add conformance test for edition unstable ([`d167dd0`](https://redirect.github.com/protocolbuffers/protobuf/commit/d167dd0229d60818c82878880d1a7e410d4294ce)) ### Python - Add conformance test for edition unstable ([`d167dd0`](https://redirect.github.com/protocolbuffers/protobuf/commit/d167dd0229d60818c82878880d1a7e410d4294ce)) - Automated rollback of commit [`38ca2d3`](https://redirect.github.com/protocolbuffers/protobuf/commit/38ca2d35d30df8ad3be22179a5cfe29223945d8a). ([`184b5e8`](https://redirect.github.com/protocolbuffers/protobuf/commit/184b5e8511b21dc50ec1b9b813b735efe03edecf)) ### UPB (Python/PHP/Ruby C-Extension) - Add conformance test for edition unstable ([`d167dd0`](https://redirect.github.com/protocolbuffers/protobuf/commit/d167dd0229d60818c82878880d1a7e410d4294ce)) - Fix unused parameter warnings. ([`cd0cb21`](https://redirect.github.com/protocolbuffers/protobuf/commit/cd0cb21a6239bedbf2adaecec9e309a5509bb580)) ### Other - Don't ignore platform requirements ([`aeedbc6`](https://redirect.github.com/protocolbuffers/protobuf/commit/aeedbc6070a1d1336b9cad8c5ea14bf9885db0c9)) - Update GitHub Actions to use macOS-14 (again). ([`f7b18f8`](https://redirect.github.com/protocolbuffers/protobuf/commit/f7b18f862565a35e7e68f8f309a4c84fd73d2e29)) - Delete redundant ARM tests ([`d4e7a81`](https://redirect.github.com/protocolbuffers/protobuf/commit/d4e7a818adc225b919bf69e42528b2b3aaf383df)) - Protobuf: update php from macos-13 to macos-15-intel ([`9027d6b`](https://redirect.github.com/protocolbuffers/protobuf/commit/9027d6b908528808925e0aa3ef8db39450b37fe3)) - Update GitHub Actions to use macOS-14. ([`f0907f3`](https://redirect.github.com/protocolbuffers/protobuf/commit/f0907f3c1e7a47de3295be778385ee2b24ae0cce)) #### What's Changed - 25.x [`2023110`](https://redirect.github.com/protocolbuffers/protobuf/commit/202311012212) by [@​haberman](https://redirect.github.com/haberman) in [#​14596](https://redirect.github.com/protocolbuffers/protobuf/pull/14596) - merge 25.x to main by [@​anandolee](https://redirect.github.com/anandolee) in [#​14617](https://redirect.github.com/protocolbuffers/protobuf/pull/14617) - Update utf8\_range subtree by [@​acozzette](https://redirect.github.com/acozzette) in [#​14679](https://redirect.github.com/protocolbuffers/protobuf/pull/14679) - Adds "Prototiller Requirements for Editions" to the GitHub code repository. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14857](https://redirect.github.com/protocolbuffers/protobuf/pull/14857) - Support the profile proto analyzer to analyze some statistics of a profile. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14858](https://redirect.github.com/protocolbuffers/protobuf/pull/14858) - upb: lock down upb\_MiniTableExtension by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14836](https://redirect.github.com/protocolbuffers/protobuf/pull/14836) - Cleanup "mergeable" types. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14868](https://redirect.github.com/protocolbuffers/protobuf/pull/14868) - Fix typo in comment. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14962](https://redirect.github.com/protocolbuffers/protobuf/pull/14962) - upb: clean up and lock down the internal oneof accessors by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14940](https://redirect.github.com/protocolbuffers/protobuf/pull/14940) - upb: inline upb\_Message\_New() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14943](https://redirect.github.com/protocolbuffers/protobuf/pull/14943) - Automated rollback of commit [`3c75c33`](https://redirect.github.com/protocolbuffers/protobuf/commit/3c75c331d392f9699959bcd57875d79ecaca4785). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14976](https://redirect.github.com/protocolbuffers/protobuf/pull/14976) - Internal change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14973](https://redirect.github.com/protocolbuffers/protobuf/pull/14973) - upb: implement upb\_MiniTable\_MapKey() and upb\_MiniTable\_MapValue() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14942](https://redirect.github.com/protocolbuffers/protobuf/pull/14942) - Remove unused headers. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14966](https://redirect.github.com/protocolbuffers/protobuf/pull/14966) - Fix DurationToMilliseconds mult overflow by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14954](https://redirect.github.com/protocolbuffers/protobuf/pull/14954) - Cleanup mutable thunk usage in singular\_message by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14922](https://redirect.github.com/protocolbuffers/protobuf/pull/14922) - Add benchmark for 32 bit repeated fields. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14991](https://redirect.github.com/protocolbuffers/protobuf/pull/14991) - Move repeated tests into their own file by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14974](https://redirect.github.com/protocolbuffers/protobuf/pull/14974) - Internal changes by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14955](https://redirect.github.com/protocolbuffers/protobuf/pull/14955) - Implement Maps for strings by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14869](https://redirect.github.com/protocolbuffers/protobuf/pull/14869) - Extend the weak descriptor message feature to include extensions. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14999](https://redirect.github.com/protocolbuffers/protobuf/pull/14999) - Add coverage for default\_string and default\_bytes in test\_default\_accessors by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14975](https://redirect.github.com/protocolbuffers/protobuf/pull/14975) - Fix some of the reflection based algorithms to handle Map entries properly. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14934](https://redirect.github.com/protocolbuffers/protobuf/pull/14934) - Remove dead code. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14998](https://redirect.github.com/protocolbuffers/protobuf/pull/14998) - Breaking change: Remove deprecated syntax APIs by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14993](https://redirect.github.com/protocolbuffers/protobuf/pull/14993) - Add a trivial 2023 edition test case for Rust. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15003](https://redirect.github.com/protocolbuffers/protobuf/pull/15003) - Remove descriptor\_legacy usage from C++ runtime by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14969](https://redirect.github.com/protocolbuffers/protobuf/pull/14969) - Remove descriptor\_legacy usage from compiler code by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14970](https://redirect.github.com/protocolbuffers/protobuf/pull/14970) - Improve codegen for address pinning. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14986](https://redirect.github.com/protocolbuffers/protobuf/pull/14986) - upb: delete upb::SymbolTable typedef by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14984](https://redirect.github.com/protocolbuffers/protobuf/pull/14984) - \[ObjC] Improve handing of the WKT ObjC Category additions. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14987](https://redirect.github.com/protocolbuffers/protobuf/pull/14987) - Add some missing includes by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15018](https://redirect.github.com/protocolbuffers/protobuf/pull/15018) - Make LazyField::ByteSizeLong consistent with eager message. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15019](https://redirect.github.com/protocolbuffers/protobuf/pull/15019) - Internal change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15012](https://redirect.github.com/protocolbuffers/protobuf/pull/15012) - Remove iteration and item mutators from Repeated by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15007](https://redirect.github.com/protocolbuffers/protobuf/pull/15007) - Remove PrimitiveMut::clear by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15008](https://redirect.github.com/protocolbuffers/protobuf/pull/15008) - Fixed UTF-8 TextFormat output to protect against invalid UTF-8 in string fields. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14990](https://redirect.github.com/protocolbuffers/protobuf/pull/14990) - Breaking change: Remove C++ legacy syntax descriptor APIs by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15020](https://redirect.github.com/protocolbuffers/protobuf/pull/15020) - Breaking change: Promote ExtensionRange to a proper class by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14996](https://redirect.github.com/protocolbuffers/protobuf/pull/14996) - Add submessage support for string\_mut by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15009](https://redirect.github.com/protocolbuffers/protobuf/pull/15009) - Breaking change in 26 release: Remove msg.UnknownFields() support in pure python and cpp extension. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15024](https://redirect.github.com/protocolbuffers/protobuf/pull/15024) - \[Python/upb] Fixed SEGV when attempting to delete a message attribute by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15037](https://redirect.github.com/protocolbuffers/protobuf/pull/15037) - upb: reverse the polarity of the MiniTableField untyped data accessors by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15045](https://redirect.github.com/protocolbuffers/protobuf/pull/15045) - upb: tag \_upb\_Message\_AddUnknown() as UPB\_PRIVATE() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​14989](https://redirect.github.com/protocolbuffers/protobuf/pull/14989) - Internal Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15049](https://redirect.github.com/protocolbuffers/protobuf/pull/15049) - Bump rules\_cc to 0.0.9 for Bazel 7 support by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15052](https://redirect.github.com/protocolbuffers/protobuf/pull/15052) - upb: tighten up the upb\_Arena code by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15011](https://redirect.github.com/protocolbuffers/protobuf/pull/15011) - upb: implement upb\_Message\_FindExtensionByNumber() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15047](https://redirect.github.com/protocolbuffers/protobuf/pull/15047) - Minor cleanups to conform to clang-tidy, etc. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15064](https://redirect.github.com/protocolbuffers/protobuf/pull/15064) - Avoid copies in proto map reflection. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15051](https://redirect.github.com/protocolbuffers/protobuf/pull/15051) - Remove separate setters for singular scalars by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15070](https://redirect.github.com/protocolbuffers/protobuf/pull/15070) - Add submsg support for bytes\_mut by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15063](https://redirect.github.com/protocolbuffers/protobuf/pull/15063) - Move the descriptor message part of ClassData into a subclass and keep a bool by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15061](https://redirect.github.com/protocolbuffers/protobuf/pull/15061) - Add minimization for enum\_type. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15074](https://redirect.github.com/protocolbuffers/protobuf/pull/15074) - Move the info about perfect derive to shared.rs by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15079](https://redirect.github.com/protocolbuffers/protobuf/pull/15079) - Use short name for view primitive in the oneof enums (i32 instead of View<'msg, i32>) by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15075](https://redirect.github.com/protocolbuffers/protobuf/pull/15075) - Slightly relax JSON integer parsing tests to handle a wider range of runtime behaviors around by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15081](https://redirect.github.com/protocolbuffers/protobuf/pull/15081) - Breaking change: Remove deprecated std::string error collector overrides by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15060](https://redirect.github.com/protocolbuffers/protobuf/pull/15060) - Internal change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15068](https://redirect.github.com/protocolbuffers/protobuf/pull/15068) - Replace the fake ParseMessage/ParseGroup function calls in with ones that accept a lambda. It allows the callers to drop the mock "message" types that only exist to have an \_InternalParse function in them. It also gives more freedom to the caller to do things like force inlining when it matters. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15056](https://redirect.github.com/protocolbuffers/protobuf/pull/15056) - RepeatedPtrField clears elements lazily. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15091](https://redirect.github.com/protocolbuffers/protobuf/pull/15091) - Make the utf8\_range implementation just in C by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15090](https://redirect.github.com/protocolbuffers/protobuf/pull/15090) - Internal change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15065](https://redirect.github.com/protocolbuffers/protobuf/pull/15065) - Allow legacy\_closed\_enum feature on enum map fields. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15086](https://redirect.github.com/protocolbuffers/protobuf/pull/15086) - refactor: collapse submsg accessors for bytes and strings by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15082](https://redirect.github.com/protocolbuffers/protobuf/pull/15082) - Automated rollback of commit [`1db8ed4`](https://redirect.github.com/protocolbuffers/protobuf/commit/1db8ed47c29fa04b51df373ce5bbb7e7f95cbd56). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15094](https://redirect.github.com/protocolbuffers/protobuf/pull/15094) - Simplify the type bounds on PrimitiveMut via type erasure by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15095](https://redirect.github.com/protocolbuffers/protobuf/pull/15095) - Add RepeatedMut::clear, free for owned Repeated by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15080](https://redirect.github.com/protocolbuffers/protobuf/pull/15080) - Improve thread safety docs/bounds for PrimitiveMut by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15096](https://redirect.github.com/protocolbuffers/protobuf/pull/15096) - Add Bazel 7 test points. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15078](https://redirect.github.com/protocolbuffers/protobuf/pull/15078) - Swap order of masks when assigning bytes to byte\[] elements. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15088](https://redirect.github.com/protocolbuffers/protobuf/pull/15088) - Pin bundler version to 2.4.22 for Ruby 2.7 support. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15109](https://redirect.github.com/protocolbuffers/protobuf/pull/15109) - upb: stop generating hazzers for repeated fields by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15035](https://redirect.github.com/protocolbuffers/protobuf/pull/15035) - Implement ExactSizeIterator and FusedIterator for repeated fields. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15071](https://redirect.github.com/protocolbuffers/protobuf/pull/15071) - Allow friendly use of Reflection::MutableRaw(), Reflection::MutableRawNonOneof(). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15101](https://redirect.github.com/protocolbuffers/protobuf/pull/15101) - Automated rollback of commit [`481c4fe`](https://redirect.github.com/protocolbuffers/protobuf/commit/481c4fede513a606f3cb061cc0ad0a839f21f781). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15120](https://redirect.github.com/protocolbuffers/protobuf/pull/15120) - Remove unnecessary duplicative +Sized by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15129](https://redirect.github.com/protocolbuffers/protobuf/pull/15129) - Expose primitive internals just enough for enums by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15118](https://redirect.github.com/protocolbuffers/protobuf/pull/15118) - Expose repeated \_unchecked accessors, interior accessor by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15119](https://redirect.github.com/protocolbuffers/protobuf/pull/15119) - Remove uses of `incompatible_use_toolchain_transition`. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15131](https://redirect.github.com/protocolbuffers/protobuf/pull/15131) - Migrate all remaining instances of assert\_eq! to googletest-rust sans strings by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15097](https://redirect.github.com/protocolbuffers/protobuf/pull/15097) - Decouple Context from the Descriptor by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15107](https://redirect.github.com/protocolbuffers/protobuf/pull/15107) - upb: tag upb\_Array.size as UPB\_ONLYBITS() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15108](https://redirect.github.com/protocolbuffers/protobuf/pull/15108) - lzcnt enabled varint size calculation for proto by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15139](https://redirect.github.com/protocolbuffers/protobuf/pull/15139) - upb: upb\_Message\_Extension -> upb\_Extension by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15104](https://redirect.github.com/protocolbuffers/protobuf/pull/15104) - upb: tag upb\_MiniTableField:offset as UPB\_ONLYBITS() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15121](https://redirect.github.com/protocolbuffers/protobuf/pull/15121) - upb: simplify upb\_Map\_Insert() down to upb\_Map\_Set() where possible by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15124](https://redirect.github.com/protocolbuffers/protobuf/pull/15124) - Add allow dead\_code to the oneof case enum. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15141](https://redirect.github.com/protocolbuffers/protobuf/pull/15141) - Remove uses of `incompatible_use_toolchain_transition`. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15145](https://redirect.github.com/protocolbuffers/protobuf/pull/15145) - Allow NewStringElement inlining. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15130](https://redirect.github.com/protocolbuffers/protobuf/pull/15130) - \[C#] Fix trimming warning in JSON formatter enum handling ([#​14789](https://redirect.github.com/protocolbuffers/protobuf/issues/14789)) by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15106](https://redirect.github.com/protocolbuffers/protobuf/pull/15106) - BREAKING CHANGE in v26: check if Timestamp is valid. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15154](https://redirect.github.com/protocolbuffers/protobuf/pull/15154) - Update lite\_unittest to pad varints before calling `internal::VarintParse()` by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15151](https://redirect.github.com/protocolbuffers/protobuf/pull/15151) - upb: add 'static' to several Python map functions by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15125](https://redirect.github.com/protocolbuffers/protobuf/pull/15125) - upb: eliminate :mini\_table\_internal by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15155](https://redirect.github.com/protocolbuffers/protobuf/pull/15155) - \#cleanup Drop MapWithKeyOps::Value type in favor of Proxied::View. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15158](https://redirect.github.com/protocolbuffers/protobuf/pull/15158) - Change Thunks that take by ref to take by pointer. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15136](https://redirect.github.com/protocolbuffers/protobuf/pull/15136) - Remove dead code. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15143](https://redirect.github.com/protocolbuffers/protobuf/pull/15143) - Implement SettableValue\[u8] for SerializedData by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15148](https://redirect.github.com/protocolbuffers/protobuf/pull/15148) - Do not define a `const` static variable as `constexpr`. While this is legal it by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15144](https://redirect.github.com/protocolbuffers/protobuf/pull/15144) - Implement v0.6 enum definitions by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15117](https://redirect.github.com/protocolbuffers/protobuf/pull/15117) - Breaking change: remove support for PHP generic services by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15164](https://redirect.github.com/protocolbuffers/protobuf/pull/15164) - Clarify error language for prefix-conflicting enum values by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15166](https://redirect.github.com/protocolbuffers/protobuf/pull/15166) - Automated rollback of commit [`1250d5f`](https://redirect.github.com/protocolbuffers/protobuf/commit/1250d5f6cccb0a45f959c7219980a0aad5060ee5). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15169](https://redirect.github.com/protocolbuffers/protobuf/pull/15169) - Small improvements: by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15162](https://redirect.github.com/protocolbuffers/protobuf/pull/15162) - upb: stop returning void from void functions by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15168](https://redirect.github.com/protocolbuffers/protobuf/pull/15168) - upb: add more functions to bits/mini\_table\_field.h by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15142](https://redirect.github.com/protocolbuffers/protobuf/pull/15142) - Optimized binary/JSON parsing to no longer copy input data into a temp buffer. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15165](https://redirect.github.com/protocolbuffers/protobuf/pull/15165) - upb: add a non-void typedef for upb\_Message by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15134](https://redirect.github.com/protocolbuffers/protobuf/pull/15134) - Fixed breaking ARM tests by properly aligning default options. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15176](https://redirect.github.com/protocolbuffers/protobuf/pull/15176) - TextFormat should always escape ASCII 127 (DEL). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15173](https://redirect.github.com/protocolbuffers/protobuf/pull/15173) - Bump major versions in version.json for C++, Java, Python, PHP, and Ruby in preparation for v26.x release in January. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15189](https://redirect.github.com/protocolbuffers/protobuf/pull/15189) - upb: tighten up and lock down upb/wire/ by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15179](https://redirect.github.com/protocolbuffers/protobuf/pull/15179) - In Ruby repeated fields, each\_index actually iterates over the index ([#​11767](https://redirect.github.com/protocolbuffers/protobuf/issues/11767)) by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15190](https://redirect.github.com/protocolbuffers/protobuf/pull/15190) - upb: the triumphant return of upb/mem:internal by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15191](https://redirect.github.com/protocolbuffers/protobuf/pull/15191) - upb: add :test\_srcs targets for cmake on GH by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15186](https://redirect.github.com/protocolbuffers/protobuf/pull/15186) - upb: make all mini\_table/ includes unidirectional by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15192](https://redirect.github.com/protocolbuffers/protobuf/pull/15192) - Added `explicit` to a single-arg constructor to fix a ClangTidy warning. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15196](https://redirect.github.com/protocolbuffers/protobuf/pull/15196) - upb: restore the mini\_table:internal target by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15195](https://redirect.github.com/protocolbuffers/protobuf/pull/15195) - Update Ruby GHA to test against Ruby 3.3. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15198](https://redirect.github.com/protocolbuffers/protobuf/pull/15198) - upb: start consolidating the upb/message/ build targets by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15185](https://redirect.github.com/protocolbuffers/protobuf/pull/15185) - Enable Rust conformance test on proto3 message. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15211](https://redirect.github.com/protocolbuffers/protobuf/pull/15211) - Fix warning from missing (void) on a 0-arg function. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15209](https://redirect.github.com/protocolbuffers/protobuf/pull/15209) - Disable MacOS C++ Cmake test for now. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15217](https://redirect.github.com/protocolbuffers/protobuf/pull/15217) - Fixed compiler warnings in the Ruby C extension. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15216](https://redirect.github.com/protocolbuffers/protobuf/pull/15216) - BREAKING CHANGE in v26: check if Timestamp is valid. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15220](https://redirect.github.com/protocolbuffers/protobuf/pull/15220) - Update Ruby GHA to test against Ruby 3.3 in Linux / MacOS / Install and FFI combinations. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15218](https://redirect.github.com/protocolbuffers/protobuf/pull/15218) - upb: clean up some of the includes in upb/message/ by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15219](https://redirect.github.com/protocolbuffers/protobuf/pull/15219) - Hook up the edition2023 cases to Rust conformance test. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15215](https://redirect.github.com/protocolbuffers/protobuf/pull/15215) - Removed the unused "JSPB (internal)" from conformance the conformance test suite. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15208](https://redirect.github.com/protocolbuffers/protobuf/pull/15208) - Internal Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15224](https://redirect.github.com/protocolbuffers/protobuf/pull/15224) - upb: delete the aliases for base:internal and mini\_descriptor:internal by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15226](https://redirect.github.com/protocolbuffers/protobuf/pull/15226) - Fix textfmt typo: vaid -> valid by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15214](https://redirect.github.com/protocolbuffers/protobuf/pull/15214) - Fix some non-breaking issues with rust gencode. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15225](https://redirect.github.com/protocolbuffers/protobuf/pull/15225) - Added JSON parsing/serialization to benchmark by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15228](https://redirect.github.com/protocolbuffers/protobuf/pull/15228) - Rename Thunk to ThunkName by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15213](https://redirect.github.com/protocolbuffers/protobuf/pull/15213) - Automated rollback of commit [`0bcc8ef`](https://redirect.github.com/protocolbuffers/protobuf/commit/0bcc8ef9f25273f94a7ce2284b0050dbb4674eda). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15231](https://redirect.github.com/protocolbuffers/protobuf/pull/15231) - Fix layering check for usage of gtest by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15229](https://redirect.github.com/protocolbuffers/protobuf/pull/15229) - Fixed non-conformance in upb JSON enum decoding when ignoring unknown enum values. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15230](https://redirect.github.com/protocolbuffers/protobuf/pull/15230) - upb: make :wire internal headers private by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15233](https://redirect.github.com/protocolbuffers/protobuf/pull/15233) - Optimize AddAllocatedForParse function. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15223](https://redirect.github.com/protocolbuffers/protobuf/pull/15223) - upb: clean up and consolidate the upb/message/ build targets by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15222](https://redirect.github.com/protocolbuffers/protobuf/pull/15222) - upb: factor out message internal data pointers by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15240](https://redirect.github.com/protocolbuffers/protobuf/pull/15240) - upb: delete the aliases for upb:hash and upb:lex and upb:reflection\_internal by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15244](https://redirect.github.com/protocolbuffers/protobuf/pull/15244) - upb: lock down the internal headers for upb:wire\_reader by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15239](https://redirect.github.com/protocolbuffers/protobuf/pull/15239) - upb: implement \_upb\_Message\_ClearOneofCase() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15181](https://redirect.github.com/protocolbuffers/protobuf/pull/15181) - Make Rust Conformance skip non-wire output test cases by using an overlay proto. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15246](https://redirect.github.com/protocolbuffers/protobuf/pull/15246) - impl SettableValue for MsgView by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15204](https://redirect.github.com/protocolbuffers/protobuf/pull/15204) - Include JSON output tests with Proto2 messages in the conformance test suite. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15248](https://redirect.github.com/protocolbuffers/protobuf/pull/15248) - upb: fix Ruby bug which allowed map.delete(key) on a frozen map by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15250](https://redirect.github.com/protocolbuffers/protobuf/pull/15250) - Fix begin iterator for empty arrays. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15252](https://redirect.github.com/protocolbuffers/protobuf/pull/15252) - Internal Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15258](https://redirect.github.com/protocolbuffers/protobuf/pull/15258) - Fix typo in cache-clearing workflow by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15257](https://redirect.github.com/protocolbuffers/protobuf/pull/15257) - Add inner verification code to detect accessors missing required annotations. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15247](https://redirect.github.com/protocolbuffers/protobuf/pull/15247) - Breaking Change: Dropped support for Ruby DSL, [as previously announced](https://engdoc.corp.google.com/eng/doc/devguide/proto/news/2023-12-27.md#ruby-breaking-changes). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15147](https://redirect.github.com/protocolbuffers/protobuf/pull/15147) - Add manual epilogue for vectorized loop, and use the SIMD loop for 64 bit ints when AVX2 is available. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15263](https://redirect.github.com/protocolbuffers/protobuf/pull/15263) - internal change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15266](https://redirect.github.com/protocolbuffers/protobuf/pull/15266) - Breaking change: make protobuf comply with the C++ layering check by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15212](https://redirect.github.com/protocolbuffers/protobuf/pull/15212) - upb: move libupb.so from third\_party/upb/ to third\_party/dart/pb\_runtime/ by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15237](https://redirect.github.com/protocolbuffers/protobuf/pull/15237) - Avoid dereferencing in `operator->`. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15268](https://redirect.github.com/protocolbuffers/protobuf/pull/15268) - IWYU and format fix. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15267](https://redirect.github.com/protocolbuffers/protobuf/pull/15267) - \[Ruby] Fixed various weirdness with Message#to\_h by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15234](https://redirect.github.com/protocolbuffers/protobuf/pull/15234) - Fix lowerCamelCase to UpperCamelCase (per Cpp style guide) by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15273](https://redirect.github.com/protocolbuffers/protobuf/pull/15273) - Breaking Change: freeze is now recursive, affecting all sub-messages, maps, and repeated fields. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15278](https://redirect.github.com/protocolbuffers/protobuf/pull/15278) - Skip or adjust tests to work with PROTOBUF\_FORCE\_SPLIT. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15276](https://redirect.github.com/protocolbuffers/protobuf/pull/15276) - BREAKING CHANGE in v26: Remove Deprecated APIs that add non top descriptor. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15271](https://redirect.github.com/protocolbuffers/protobuf/pull/15271) - BREAKING CHANGE in v26: Reject extend repeated field with none iterable (Raise TypeError) by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15269](https://redirect.github.com/protocolbuffers/protobuf/pull/15269) - Automated Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15284](https://redirect.github.com/protocolbuffers/protobuf/pull/15284) - Automated Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15285](https://redirect.github.com/protocolbuffers/protobuf/pull/15285) - Automated Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15283](https://redirect.github.com/protocolbuffers/protobuf/pull/15283) - BREAKING CHANGE in v26: Remove RegisterExtension in message class by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15270](https://redirect.github.com/protocolbuffers/protobuf/pull/15270) - Extend Proto2 JSON test cases to cover more of the preexisting Proto3 JSON cases. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15274](https://redirect.github.com/protocolbuffers/protobuf/pull/15274) - Internal change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15303](https://redirect.github.com/protocolbuffers/protobuf/pull/15303) - Remove edition getter from python descriptor APIs by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15301](https://redirect.github.com/protocolbuffers/protobuf/pull/15301) - Add "extend repeated with nothing" tests back for upb python by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15304](https://redirect.github.com/protocolbuffers/protobuf/pull/15304) - Update comment of "lazy" field option to reflect eager verification. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15292](https://redirect.github.com/protocolbuffers/protobuf/pull/15292) - Breaking Change: fixed json\_encode/json\_decode to use the message's pool. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15291](https://redirect.github.com/protocolbuffers/protobuf/pull/15291) - Add to Proto2 JSON conformance test failure lists for C#, JRuby and PHP C by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15306](https://redirect.github.com/protocolbuffers/protobuf/pull/15306) - Add self pinning on all message accessors for weak descriptor messages. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15272](https://redirect.github.com/protocolbuffers/protobuf/pull/15272) - Fix nested enum generation when enums are the sole nested types by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15308](https://redirect.github.com/protocolbuffers/protobuf/pull/15308) - Change the ids used the unset field tracking to be Message+FieldDescriptor. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15264](https://redirect.github.com/protocolbuffers/protobuf/pull/15264) - IWYU cleanup. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15311](https://redirect.github.com/protocolbuffers/protobuf/pull/15311) - Automated Code Change by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15275](https://redirect.github.com/protocolbuffers/protobuf/pull/15275) - Use raw string for Emit by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15312](https://redirect.github.com/protocolbuffers/protobuf/pull/15312) - Remove unused PROTOBUF\_FORCE\_RESET\_IN\_CLEAR by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15317](https://redirect.github.com/protocolbuffers/protobuf/pull/15317) - Annotate some Kotlin generated protobuf code. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15261](https://redirect.github.com/protocolbuffers/protobuf/pull/15261) - upb: fix some more compiler warnings in Ruby about missing return values by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15262](https://redirect.github.com/protocolbuffers/protobuf/pull/15262) - upb: add 'static' to some mini\_descriptor decoder functions by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15255](https://redirect.github.com/protocolbuffers/protobuf/pull/15255) - \#refactor Simplify maps through the new ProxiedInMapValue trait by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15333](https://redirect.github.com/protocolbuffers/protobuf/pull/15333) - upb: distinguish between fields and extensions in the public clear() accessors by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15305](https://redirect.github.com/protocolbuffers/protobuf/pull/15305) - upb: remove duplicate typedef for upb\_TaggedMessagePtr by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15316](https://redirect.github.com/protocolbuffers/protobuf/pull/15316) - Add SPLIT test coverage to :analyze\_profile\_proto\_test and disable force\_split. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15339](https://redirect.github.com/protocolbuffers/protobuf/pull/15339) - Add enum qualified path naming fns by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15322](https://redirect.github.com/protocolbuffers/protobuf/pull/15322) - Expand PrimitiveRsTypeName to work with non-primitives, rename, refactor by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15323](https://redirect.github.com/protocolbuffers/protobuf/pull/15323) - Move enum value name calculation by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15325](https://redirect.github.com/protocolbuffers/protobuf/pull/15325) - Support enums in DefaultValue by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15326](https://redirect.github.com/protocolbuffers/protobuf/pull/15326) - Breaking Change: Removed `syntax` and added `has_presence`/`is_packed`. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15314](https://redirect.github.com/protocolbuffers/protobuf/pull/15314) - Implement singular enum accessors by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15320](https://redirect.github.com/protocolbuffers/protobuf/pull/15320) - Implement repeated enum accessors by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15342](https://redirect.github.com/protocolbuffers/protobuf/pull/15342) - Change MsgMut's \_mut() accessors to use (\&mut self) instead of (\&self) by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15355](https://redirect.github.com/protocolbuffers/protobuf/pull/15355) - upb: tag upb\_Array.data as UPB\_ONLYBITS() by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15351](https://redirect.github.com/protocolbuffers/protobuf/pull/15351) - Allow friendly use of Reflection::MutableRaw(), Reflection::MutableRawNonOneof(). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15345](https://redirect.github.com/protocolbuffers/protobuf/pull/15345) - Print usage count if it's rarely used. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15361](https://redirect.github.com/protocolbuffers/protobuf/pull/15361) - Adds mutable extension accessors to the codegen for upb C and adds a `::protos::MutableExtension` method to upb C++ for getting a mutable extension. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15338](https://redirect.github.com/protocolbuffers/protobuf/pull/15338) - Breaking change: disallow incorrect ctype usage by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15365](https://redirect.github.com/protocolbuffers/protobuf/pull/15365) - Make upb::Status final by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15366](https://redirect.github.com/protocolbuffers/protobuf/pull/15366) - upb: normalize some more function names by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15376](https://redirect.github.com/protocolbuffers/protobuf/pull/15376) - upb: disable the Fast Table CI tests on GH by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15372](https://redirect.github.com/protocolbuffers/protobuf/pull/15372) - Automated rollback of commit [`0ce457f`](https://redirect.github.com/protocolbuffers/protobuf/commit/0ce457f6e7c15e2574d69ba445ea6cae7e6e44e8). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15371](https://redirect.github.com/protocolbuffers/protobuf/pull/15371) - Protobuf Java cross-domain Poison Pills. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15259](https://redirect.github.com/protocolbuffers/protobuf/pull/15259) - Add kUpb\_DecodeOption\_AlwaysValidateUtf8 decode option, to force UTF-8 validation of proto2 strings. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15378](https://redirect.github.com/protocolbuffers/protobuf/pull/15378) - Breaking change: remove const GetArena method on RepeatedPtrField by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15364](https://redirect.github.com/protocolbuffers/protobuf/pull/15364) - Update to call descriptor outer class's getDescriptor() method instead of accessing internal descriptor variable directly. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15373](https://redirect.github.com/protocolbuffers/protobuf/pull/15373) - Remove public access to Java Edition APIs e.g. getEdition(), getEditionName(). by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15380](https://redirect.github.com/protocolbuffers/protobuf/pull/15380) - Remove deadcode GenerateDescriptorInitializationCodeForMutable from Java code generator. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15374](https://redirect.github.com/protocolbuffers/protobuf/pull/15374) - Mint Edition 2024. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15383](https://redirect.github.com/protocolbuffers/protobuf/pull/15383) - Add proto2::VisitFields() API. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15381](https://redirect.github.com/protocolbuffers/protobuf/pull/15381) - Fix typos in printer.h by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15382](https://redirect.github.com/protocolbuffers/protobuf/pull/15382) - \#rust #unsafe Fix unsound cast of RepeatedMut to RepeatedView by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15349](https://redirect.github.com/protocolbuffers/protobuf/pull/15349) - Improve user friendliness of oneof mutator types by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15388](https://redirect.github.com/protocolbuffers/protobuf/pull/15388) - Pass crate mapping from Bazel to protoc by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15347](https://redirect.github.com/protocolbuffers/protobuf/pull/15347) - cleanup: reduce warnings on MSVC builds by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15397](https://redirect.github.com/protocolbuffers/protobuf/pull/15397) - Fix missing ! making it so untyped\_message would trigger a invalid Utf8 error IFF the string was *valid* UTF8. by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15399](https://redirect.github.com/protocolbuffers/protobuf/pull/15399) - Add `upb_Array_GetMutable` accessor by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15386](https://redirect.github.com/protocolbuffers/protobuf/pull/15386) - singular\_message: rename prefix to msg\_type for clarity by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15401](https://redirect.github.com/protocolbuffers/protobuf/pull/15401) - Edit comment in empty\_repeated suggesting it's a thread-local value by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15390](https://redirect.github.com/protocolbuffers/protobuf/pull/15390) - Skip generating oneof message fields referencing other crates by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15389](https://redirect.github.com/protocolbuffers/protobuf/pull/15389) - Disable linkage-monitor test in anticipation of a breaking (major version) java release: 4.26 by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15408](https://redirect.github.com/protocolbuffers/protobuf/pull/15408) - upb: finish locking down the upb\_Array internals by [@​copybara-service](https://redirect.github.com/copybara-service)\[bot] in [#​15379](https://redirect.github.com/protocolbuffers/protobuf/pull/15379) - Temporarily turn off extension support for weak descriptor messages. by [@​copybara-service](https://r
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .../client/it/common/ExporterTest.java | 2 +- .../metrics/it/exporter/test/ExporterIT.java | 2 +- .../it/springboot/ApplicationTest.java | 2 +- mise.toml | 2 +- pom.xml | 2 +- .../metrics/core/metrics/CounterTest.java | 2 +- .../metrics/core/metrics/HistogramTest.java | 2 +- .../metrics/core/metrics/InfoTest.java | 2 +- .../Metrics.java | 1810 ++++++++--------- .../PrometheusProtobufWriterImpl.java | 2 +- .../ProtobufExpositionFormatsTest.java | 2 +- 11 files changed, 915 insertions(+), 915 deletions(-) rename prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/{com_google_protobuf_4_33_2 => com_google_protobuf_4_33_3}/Metrics.java (89%) diff --git a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java index 9de8b8be8..302682cc6 100644 --- a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java +++ b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index e7b4550ed..6c807fb2e 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -5,7 +5,7 @@ import com.google.common.io.Resources; import io.prometheus.client.it.common.ExporterTest; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; import java.io.IOException; import java.net.URISyntaxException; import java.net.URLEncoder; diff --git a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java index 864cd68dc..4f2843692 100644 --- a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java +++ b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.prometheus.client.it.common.ExporterTest; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; import java.io.IOException; import java.net.URI; import java.util.List; diff --git a/mise.toml b/mise.toml index 096db652c..b23b1e945 100644 --- a/mise.toml +++ b/mise.toml @@ -3,7 +3,7 @@ "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.1+8.0.LTS" lychee = "0.22.0" -protoc = "33.2" +protoc = "33.3" [tasks.ci] description = "CI Build" diff --git a/pom.xml b/pom.xml index 61b72db5b..41771d481 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ UTF-8 --module-name-need-to-be-overridden-- - 4.33.2 + 4.33.3 33.5.0-jre 6.0.2 2.16.0-alpha diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java index 8532ebcb8..c0816f76d 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java @@ -9,7 +9,7 @@ import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.CounterSnapshot; diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java index 62fe246e9..0e7229a4c 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java @@ -11,7 +11,7 @@ import io.prometheus.metrics.core.datapoints.DistributionDataPoint; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.*; diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java index 138fa6ff0..33683a26d 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java @@ -5,7 +5,7 @@ import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.Labels; diff --git a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_2/Metrics.java b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_3/Metrics.java similarity index 89% rename from prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_2/Metrics.java rename to prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_3/Metrics.java index 2adba900d..1b9bc2635 100644 --- a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_2/Metrics.java +++ b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_3/Metrics.java @@ -2,9 +2,9 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: src/main/protobuf/metrics.proto -// Protobuf Java Version: 4.33.2 +// Protobuf Java Version: 4.33.3 -package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2; +package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3; @com.google.protobuf.Generated public final class Metrics extends com.google.protobuf.GeneratedFile { @@ -14,7 +14,7 @@ private Metrics() {} com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "Metrics"); } @@ -87,7 +87,7 @@ public enum MetricType com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "MetricType"); } @@ -193,7 +193,7 @@ public MetricType findValueByNumber(int number) { } public static com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.getDescriptor().getEnumTypes().get(0); + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.getDescriptor().getEnumTypes().get(0); } private static final MetricType[] VALUES = values(); @@ -267,7 +267,7 @@ public static final class LabelPair extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "LabelPair"); } @@ -282,15 +282,15 @@ private LabelPair() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder.class); } private int bitField0_; @@ -437,10 +437,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair) obj; if (hasName() != other.hasName()) return false; if (hasName()) { @@ -476,44 +476,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -521,26 +521,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -553,7 +553,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -574,21 +574,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.LabelPair) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.newBuilder() private Builder() { } @@ -610,17 +610,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -628,14 +628,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -651,16 +651,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance()) return this; if (other.hasName()) { name_ = other.name_; bitField0_ |= 0x00000001; @@ -888,12 +888,12 @@ public Builder setValueBytes( } // @@protoc_insertion_point(class_scope:io.prometheus.client.LabelPair) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -929,7 +929,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -963,7 +963,7 @@ public static final class Gauge extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "Gauge"); } @@ -976,15 +976,15 @@ private Gauge() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder.class); } private int bitField0_; @@ -1047,10 +1047,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1079,44 +1079,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1124,26 +1124,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1156,7 +1156,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1177,21 +1177,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Gauge) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.newBuilder() private Builder() { } @@ -1212,17 +1212,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1230,14 +1230,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1249,16 +1249,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1354,12 +1354,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Gauge) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -1395,7 +1395,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -1425,11 +1425,11 @@ public interface CounterOrBuilder extends * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplar(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar(); /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); /** * optional .google.protobuf.Timestamp created_timestamp = 3; @@ -1459,7 +1459,7 @@ public static final class Counter extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "Counter"); } @@ -1472,15 +1472,15 @@ private Counter() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder.class); } private int bitField0_; @@ -1504,7 +1504,7 @@ public double getValue() { } public static final int EXEMPLAR_FIELD_NUMBER = 2; - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1518,15 +1518,15 @@ public boolean hasExemplar() { * @return The exemplar. */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplar() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; } public static final int CREATED_TIMESTAMP_FIELD_NUMBER = 3; @@ -1609,10 +1609,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1659,44 +1659,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1704,26 +1704,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1736,7 +1736,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1757,21 +1757,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Counter) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -1809,17 +1809,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1827,14 +1827,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1858,16 +1858,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1979,9 +1979,9 @@ public Builder clearValue() { return this; } - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_; private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder> exemplarBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> exemplarBuilder_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1993,9 +1993,9 @@ public boolean hasExemplar() { * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplar() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() { if (exemplarBuilder_ == null) { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_; + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; } else { return exemplarBuilder_.getMessage(); } @@ -2003,7 +2003,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) { + public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2020,7 +2020,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com * optional .io.prometheus.client.Exemplar exemplar = 2; */ public Builder setExemplar( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) { if (exemplarBuilder_ == null) { exemplar_ = builderForValue.build(); } else { @@ -2033,11 +2033,11 @@ public Builder setExemplar( /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) { + public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (((bitField0_ & 0x00000002) != 0) && exemplar_ != null && - exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance()) { + exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance()) { getExemplarBuilder().mergeFrom(value); } else { exemplar_ = value; @@ -2067,7 +2067,7 @@ public Builder clearExemplar() { /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder getExemplarBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder getExemplarBuilder() { bitField0_ |= 0x00000002; onChanged(); return internalGetExemplarFieldBuilder().getBuilder(); @@ -2075,23 +2075,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { if (exemplarBuilder_ != null) { return exemplarBuilder_.getMessageOrBuilder(); } else { return exemplar_ == null ? - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; } } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> internalGetExemplarFieldBuilder() { if (exemplarBuilder_ == null) { exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder>( getExemplar(), getParentForChildren(), isClean()); @@ -2225,12 +2225,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Counter) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2266,7 +2266,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2311,7 +2311,7 @@ public static final class Quantile extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "Quantile"); } @@ -2324,15 +2324,15 @@ private Quantile() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder.class); } private int bitField0_; @@ -2421,10 +2421,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile) obj; if (hasQuantile() != other.hasQuantile()) return false; if (hasQuantile()) { @@ -2464,44 +2464,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2509,26 +2509,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2541,7 +2541,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -2562,21 +2562,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Quantile) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.newBuilder() private Builder() { } @@ -2598,17 +2598,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -2616,14 +2616,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -2639,16 +2639,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance()) return this; if (other.hasQuantile()) { setQuantile(other.getQuantile()); } @@ -2792,12 +2792,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Quantile) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2833,7 +2833,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2868,12 +2868,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile getQuantile(int index); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getQuantile(int index); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @@ -2881,12 +2881,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileOrBuilderList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder getQuantileOrBuilder( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index); /** @@ -2917,7 +2917,7 @@ public static final class Summary extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "Summary"); } @@ -2931,15 +2931,15 @@ private Summary() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder.class); } private int bitField0_; @@ -2983,19 +2983,19 @@ public double getSampleSum() { public static final int QUANTILE_FIELD_NUMBER = 3; @SuppressWarnings("serial") - private java.util.List quantile_; + private java.util.List quantile_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { return quantile_; } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List + public java.util.List getQuantileOrBuilderList() { return quantile_; } @@ -3010,14 +3010,14 @@ public int getQuantileCount() { * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getQuantile(int index) { return quantile_.get(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { return quantile_.get(index); } @@ -3109,10 +3109,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary) obj; if (hasSampleCount() != other.hasSampleCount()) return false; if (hasSampleCount()) { @@ -3166,44 +3166,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3211,26 +3211,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3243,7 +3243,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -3264,21 +3264,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Summary) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -3319,17 +3319,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -3337,15 +3337,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary(this); buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary result) { + private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result) { if (quantileBuilder_ == null) { if (((bitField0_ & 0x00000004) != 0)) { quantile_ = java.util.Collections.unmodifiableList(quantile_); @@ -3357,7 +3357,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats. } } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -3379,16 +3379,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance()) return this; if (other.hasSampleCount()) { setSampleCount(other.getSampleCount()); } @@ -3461,9 +3461,9 @@ public Builder mergeFrom( break; } // case 17 case 26: { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile m = + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile m = input.readMessage( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.parser(), + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.parser(), extensionRegistry); if (quantileBuilder_ == null) { ensureQuantileIsMutable(); @@ -3577,22 +3577,22 @@ public Builder clearSampleSum() { return this; } - private java.util.List quantile_ = + private java.util.List quantile_ = java.util.Collections.emptyList(); private void ensureQuantileIsMutable() { if (!((bitField0_ & 0x00000004) != 0)) { - quantile_ = new java.util.ArrayList(quantile_); + quantile_ = new java.util.ArrayList(quantile_); bitField0_ |= 0x00000004; } } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder> quantileBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder> quantileBuilder_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { if (quantileBuilder_ == null) { return java.util.Collections.unmodifiableList(quantile_); } else { @@ -3612,7 +3612,7 @@ public int getQuantileCount() { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getQuantile(int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3623,7 +3623,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3640,7 +3640,7 @@ public Builder setQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.set(index, builderForValue.build()); @@ -3653,7 +3653,7 @@ public Builder setQuantile( /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile value) { + public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3670,7 +3670,7 @@ public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3687,7 +3687,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(builderForValue.build()); @@ -3701,7 +3701,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(index, builderForValue.build()); @@ -3715,7 +3715,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addAllQuantile( - java.lang.Iterable values) { + java.lang.Iterable values) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -3755,14 +3755,14 @@ public Builder removeQuantile(int index) { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder getQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder getQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().getBuilder(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3772,7 +3772,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileOrBuilderList() { if (quantileBuilder_ != null) { return quantileBuilder_.getMessageOrBuilderList(); @@ -3783,31 +3783,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder addQuantileBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder addQuantileBuilder() { return internalGetQuantileFieldBuilder().addBuilder( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.getDefaultInstance()); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder addQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder addQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().addBuilder( - index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.getDefaultInstance()); + index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileBuilderList() { return internalGetQuantileFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder> internalGetQuantileFieldBuilder() { if (quantileBuilder_ == null) { quantileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.QuantileOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder>( quantile_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), @@ -3942,12 +3942,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Summary) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -3983,7 +3983,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4017,7 +4017,7 @@ public static final class Untyped extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 2, + /* patch= */ 3, /* suffix= */ "", "Untyped"); } @@ -4030,15 +4030,15 @@ private Untyped() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder.class); } private int bitField0_; @@ -4101,10 +4101,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -4133,44 +4133,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4178,26 +4178,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4210,7 +4210,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -4231,21 +4231,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Untyped) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.newBuilder() private Builder() { } @@ -4266,17 +4266,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -4284,14 +4284,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -4303,16 +4303,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -4408,12 +4408,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Untyped) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -4449,7 +4449,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4507,7 +4507,7 @@ public interface HistogramOrBuilder extends * * repeated .io.prometheus.client.Bucket bucket = 3; */ - java.util.List + java.util.List getBucketList(); /** *
@@ -4516,7 +4516,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket getBucket(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getBucket(int index);
     /**
      * 
      * Buckets for the conventional histogram.
@@ -4532,7 +4532,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    java.util.List 
+    java.util.List 
         getBucketOrBuilderList();
     /**
      * 
@@ -4541,7 +4541,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder getBucketOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index);
 
     /**
@@ -4650,7 +4650,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanList();
     /**
      * 
@@ -4659,7 +4659,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getNegativeSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getNegativeSpan(int index);
     /**
      * 
      * Negative buckets for the native histogram.
@@ -4675,7 +4675,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanOrBuilderList();
     /**
      * 
@@ -4684,7 +4684,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index);
 
     /**
@@ -4761,7 +4761,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanList();
     /**
      * 
@@ -4773,7 +4773,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getPositiveSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getPositiveSpan(int index);
     /**
      * 
      * Positive buckets for the native histogram.
@@ -4795,7 +4795,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanOrBuilderList();
     /**
      * 
@@ -4807,7 +4807,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index);
 
     /**
@@ -4881,7 +4881,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsList();
     /**
      * 
@@ -4890,7 +4890,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplars(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplars(int index);
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -4906,7 +4906,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsOrBuilderList();
     /**
      * 
@@ -4915,7 +4915,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index);
   }
   /**
@@ -4931,7 +4931,7 @@ public static final class Histogram extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 2,
+        /* patch= */ 3,
         /* suffix= */ "",
         "Histogram");
     }
@@ -4952,15 +4952,15 @@ private Histogram() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder.class);
     }
 
     private int bitField0_;
@@ -5031,7 +5031,7 @@ public double getSampleSum() {
 
     public static final int BUCKET_FIELD_NUMBER = 3;
     @SuppressWarnings("serial")
-    private java.util.List bucket_;
+    private java.util.List bucket_;
     /**
      * 
      * Buckets for the conventional histogram.
@@ -5040,7 +5040,7 @@ public double getSampleSum() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List getBucketList() {
+    public java.util.List getBucketList() {
       return bucket_;
     }
     /**
@@ -5051,7 +5051,7 @@ public java.util.Listrepeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getBucketOrBuilderList() {
       return bucket_;
     }
@@ -5074,7 +5074,7 @@ public int getBucketCount() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket getBucket(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getBucket(int index) {
       return bucket_.get(index);
     }
     /**
@@ -5085,7 +5085,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder getBucketOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index) {
       return bucket_.get(index);
     }
@@ -5234,7 +5234,7 @@ public double getZeroCountFloat() {
 
     public static final int NEGATIVE_SPAN_FIELD_NUMBER = 9;
     @SuppressWarnings("serial")
-    private java.util.List negativeSpan_;
+    private java.util.List negativeSpan_;
     /**
      * 
      * Negative buckets for the native histogram.
@@ -5243,7 +5243,7 @@ public double getZeroCountFloat() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List getNegativeSpanList() {
+    public java.util.List getNegativeSpanList() {
       return negativeSpan_;
     }
     /**
@@ -5254,7 +5254,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getNegativeSpanOrBuilderList() {
       return negativeSpan_;
     }
@@ -5277,7 +5277,7 @@ public int getNegativeSpanCount() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getNegativeSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getNegativeSpan(int index) {
       return negativeSpan_.get(index);
     }
     /**
@@ -5288,7 +5288,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index) {
       return negativeSpan_.get(index);
     }
@@ -5383,7 +5383,7 @@ public double getNegativeCount(int index) {
 
     public static final int POSITIVE_SPAN_FIELD_NUMBER = 12;
     @SuppressWarnings("serial")
-    private java.util.List positiveSpan_;
+    private java.util.List positiveSpan_;
     /**
      * 
      * Positive buckets for the native histogram.
@@ -5395,7 +5395,7 @@ public double getNegativeCount(int index) {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List getPositiveSpanList() {
+    public java.util.List getPositiveSpanList() {
       return positiveSpan_;
     }
     /**
@@ -5409,7 +5409,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getPositiveSpanOrBuilderList() {
       return positiveSpan_;
     }
@@ -5438,7 +5438,7 @@ public int getPositiveSpanCount() {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getPositiveSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getPositiveSpan(int index) {
       return positiveSpan_.get(index);
     }
     /**
@@ -5452,7 +5452,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index) {
       return positiveSpan_.get(index);
     }
@@ -5547,7 +5547,7 @@ public double getPositiveCount(int index) {
 
     public static final int EXEMPLARS_FIELD_NUMBER = 16;
     @SuppressWarnings("serial")
-    private java.util.List exemplars_;
+    private java.util.List exemplars_;
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -5556,7 +5556,7 @@ public double getPositiveCount(int index) {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List getExemplarsList() {
+    public java.util.List getExemplarsList() {
       return exemplars_;
     }
     /**
@@ -5567,7 +5567,7 @@ public java.util.Listrepeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getExemplarsOrBuilderList() {
       return exemplars_;
     }
@@ -5590,7 +5590,7 @@ public int getExemplarsCount() {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplars(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplars(int index) {
       return exemplars_.get(index);
     }
     /**
@@ -5601,7 +5601,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index) {
       return exemplars_.get(index);
     }
@@ -5765,10 +5765,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram) obj;
 
       if (hasSampleCount() != other.hasSampleCount()) return false;
       if (hasSampleCount()) {
@@ -5916,44 +5916,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5961,26 +5961,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5993,7 +5993,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -6014,21 +6014,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Histogram)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -6102,17 +6102,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -6120,15 +6120,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result) {
         if (bucketBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             bucket_ = java.util.Collections.unmodifiableList(bucket_);
@@ -6167,7 +6167,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -6225,16 +6225,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance()) return this;
         if (other.hasSampleCount()) {
           setSampleCount(other.getSampleCount());
         }
@@ -6444,9 +6444,9 @@ public Builder mergeFrom(
                 break;
               } // case 17
               case 26: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.parser(),
                         extensionRegistry);
                 if (bucketBuilder_ == null) {
                   ensureBucketIsMutable();
@@ -6482,9 +6482,9 @@ public Builder mergeFrom(
                 break;
               } // case 65
               case 74: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (negativeSpanBuilder_ == null) {
                   ensureNegativeSpanIsMutable();
@@ -6528,9 +6528,9 @@ public Builder mergeFrom(
                 break;
               } // case 90
               case 98: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (positiveSpanBuilder_ == null) {
                   ensurePositiveSpanIsMutable();
@@ -6581,9 +6581,9 @@ public Builder mergeFrom(
                 break;
               } // case 122
               case 130: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.parser(),
                         extensionRegistry);
                 if (exemplarsBuilder_ == null) {
                   ensureExemplarsIsMutable();
@@ -6746,17 +6746,17 @@ public Builder clearSampleSum() {
         return this;
       }
 
-      private java.util.List bucket_ =
+      private java.util.List bucket_ =
         java.util.Collections.emptyList();
       private void ensureBucketIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          bucket_ = new java.util.ArrayList(bucket_);
+          bucket_ = new java.util.ArrayList(bucket_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder> bucketBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder> bucketBuilder_;
 
       /**
        * 
@@ -6765,7 +6765,7 @@ private void ensureBucketIsMutable() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List getBucketList() {
+      public java.util.List getBucketList() {
         if (bucketBuilder_ == null) {
           return java.util.Collections.unmodifiableList(bucket_);
         } else {
@@ -6793,7 +6793,7 @@ public int getBucketCount() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket getBucket(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getBucket(int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);
         } else {
@@ -6808,7 +6808,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6829,7 +6829,7 @@ public Builder setBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.set(index, builderForValue.build());
@@ -6846,7 +6846,7 @@ public Builder setBucket(
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket value) {
+      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6867,7 +6867,7 @@ public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6888,7 +6888,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(builderForValue.build());
@@ -6906,7 +6906,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(index, builderForValue.build());
@@ -6924,7 +6924,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addAllBucket(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -6976,7 +6976,7 @@ public Builder removeBucket(int index) {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder getBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder getBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().getBuilder(index);
       }
@@ -6987,7 +6987,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder getBucketOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder getBucketOrBuilder(
           int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);  } else {
@@ -7001,7 +7001,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketOrBuilderList() {
         if (bucketBuilder_ != null) {
           return bucketBuilder_.getMessageOrBuilderList();
@@ -7016,9 +7016,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder addBucketBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder addBucketBuilder() {
         return internalGetBucketFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7027,10 +7027,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder addBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder addBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7039,16 +7039,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketBuilderList() {
         return internalGetBucketFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder> 
           internalGetBucketFieldBuilder() {
         if (bucketBuilder_ == null) {
           bucketBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder>(
                   bucket_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -7419,17 +7419,17 @@ public Builder clearZeroCountFloat() {
         return this;
       }
 
-      private java.util.List negativeSpan_ =
+      private java.util.List negativeSpan_ =
         java.util.Collections.emptyList();
       private void ensureNegativeSpanIsMutable() {
         if (!((bitField0_ & 0x00000200) != 0)) {
-          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
+          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
           bitField0_ |= 0x00000200;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
 
       /**
        * 
@@ -7438,7 +7438,7 @@ private void ensureNegativeSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List getNegativeSpanList() {
+      public java.util.List getNegativeSpanList() {
         if (negativeSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(negativeSpan_);
         } else {
@@ -7466,7 +7466,7 @@ public int getNegativeSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getNegativeSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getNegativeSpan(int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);
         } else {
@@ -7481,7 +7481,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7502,7 +7502,7 @@ public Builder setNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.set(index, builderForValue.build());
@@ -7519,7 +7519,7 @@ public Builder setNegativeSpan(
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan value) {
+      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7540,7 +7540,7 @@ public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7561,7 +7561,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(builderForValue.build());
@@ -7579,7 +7579,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(index, builderForValue.build());
@@ -7597,7 +7597,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addAllNegativeSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -7649,7 +7649,7 @@ public Builder removeNegativeSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().getBuilder(index);
       }
@@ -7660,7 +7660,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
           int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);  } else {
@@ -7674,7 +7674,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanOrBuilderList() {
         if (negativeSpanBuilder_ != null) {
           return negativeSpanBuilder_.getMessageOrBuilderList();
@@ -7689,9 +7689,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7700,10 +7700,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7712,16 +7712,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanBuilderList() {
         return internalGetNegativeSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> 
           internalGetNegativeSpanFieldBuilder() {
         if (negativeSpanBuilder_ == null) {
           negativeSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder>(
                   negativeSpan_,
                   ((bitField0_ & 0x00000200) != 0),
                   getParentForChildren(),
@@ -7975,17 +7975,17 @@ public Builder clearNegativeCount() {
         return this;
       }
 
-      private java.util.List positiveSpan_ =
+      private java.util.List positiveSpan_ =
         java.util.Collections.emptyList();
       private void ensurePositiveSpanIsMutable() {
         if (!((bitField0_ & 0x00001000) != 0)) {
-          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
+          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
           bitField0_ |= 0x00001000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
 
       /**
        * 
@@ -7997,7 +7997,7 @@ private void ensurePositiveSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List getPositiveSpanList() {
+      public java.util.List getPositiveSpanList() {
         if (positiveSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(positiveSpan_);
         } else {
@@ -8031,7 +8031,7 @@ public int getPositiveSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getPositiveSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getPositiveSpan(int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);
         } else {
@@ -8049,7 +8049,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8073,7 +8073,7 @@ public Builder setPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.set(index, builderForValue.build());
@@ -8093,7 +8093,7 @@ public Builder setPositiveSpan(
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan value) {
+      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8117,7 +8117,7 @@ public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8141,7 +8141,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(builderForValue.build());
@@ -8162,7 +8162,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(index, builderForValue.build());
@@ -8183,7 +8183,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addAllPositiveSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8244,7 +8244,7 @@ public Builder removePositiveSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().getBuilder(index);
       }
@@ -8258,7 +8258,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
           int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);  } else {
@@ -8275,7 +8275,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanOrBuilderList() {
         if (positiveSpanBuilder_ != null) {
           return positiveSpanBuilder_.getMessageOrBuilderList();
@@ -8293,9 +8293,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8307,10 +8307,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8322,16 +8322,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanBuilderList() {
         return internalGetPositiveSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> 
           internalGetPositiveSpanFieldBuilder() {
         if (positiveSpanBuilder_ == null) {
           positiveSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder>(
                   positiveSpan_,
                   ((bitField0_ & 0x00001000) != 0),
                   getParentForChildren(),
@@ -8585,17 +8585,17 @@ public Builder clearPositiveCount() {
         return this;
       }
 
-      private java.util.List exemplars_ =
+      private java.util.List exemplars_ =
         java.util.Collections.emptyList();
       private void ensureExemplarsIsMutable() {
         if (!((bitField0_ & 0x00008000) != 0)) {
-          exemplars_ = new java.util.ArrayList(exemplars_);
+          exemplars_ = new java.util.ArrayList(exemplars_);
           bitField0_ |= 0x00008000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
 
       /**
        * 
@@ -8604,7 +8604,7 @@ private void ensureExemplarsIsMutable() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List getExemplarsList() {
+      public java.util.List getExemplarsList() {
         if (exemplarsBuilder_ == null) {
           return java.util.Collections.unmodifiableList(exemplars_);
         } else {
@@ -8632,7 +8632,7 @@ public int getExemplarsCount() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplars(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplars(int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);
         } else {
@@ -8647,7 +8647,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8668,7 +8668,7 @@ public Builder setExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.set(index, builderForValue.build());
@@ -8685,7 +8685,7 @@ public Builder setExemplars(
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) {
+      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8706,7 +8706,7 @@ public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.co
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8727,7 +8727,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(builderForValue.build());
@@ -8745,7 +8745,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(index, builderForValue.build());
@@ -8763,7 +8763,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addAllExemplars(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8815,7 +8815,7 @@ public Builder removeExemplars(int index) {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder getExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder getExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().getBuilder(index);
       }
@@ -8826,7 +8826,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
           int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);  } else {
@@ -8840,7 +8840,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsOrBuilderList() {
         if (exemplarsBuilder_ != null) {
           return exemplarsBuilder_.getMessageOrBuilderList();
@@ -8855,9 +8855,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder addExemplarsBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder addExemplarsBuilder() {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8866,10 +8866,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder addExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder addExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8878,16 +8878,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsBuilderList() {
         return internalGetExemplarsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> 
           internalGetExemplarsFieldBuilder() {
         if (exemplarsBuilder_ == null) {
           exemplarsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder>(
                   exemplars_,
                   ((bitField0_ & 0x00008000) != 0),
                   getParentForChildren(),
@@ -8901,12 +8901,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Histogram)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -8942,7 +8942,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9018,11 +9018,11 @@ public interface BucketOrBuilder extends
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return The exemplar.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplar();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar();
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
   }
   /**
    * 
@@ -9042,7 +9042,7 @@ public static final class Bucket extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 2,
+        /* patch= */ 3,
         /* suffix= */ "",
         "Bucket");
     }
@@ -9055,15 +9055,15 @@ private Bucket() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder.class);
     }
 
     private int bitField0_;
@@ -9149,7 +9149,7 @@ public double getUpperBound() {
     }
 
     public static final int EXEMPLAR_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar exemplar_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_;
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return Whether the exemplar field is set.
@@ -9163,15 +9163,15 @@ public boolean hasExemplar() {
      * @return The exemplar.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplar() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -9235,10 +9235,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket) obj;
 
       if (hasCumulativeCount() != other.hasCumulativeCount()) return false;
       if (hasCumulativeCount()) {
@@ -9297,44 +9297,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9342,26 +9342,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9374,7 +9374,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -9400,21 +9400,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Bucket)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -9448,17 +9448,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -9466,14 +9466,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -9499,16 +9499,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance()) return this;
         if (other.hasCumulativeCount()) {
           setCumulativeCount(other.getCumulativeCount());
         }
@@ -9754,9 +9754,9 @@ public Builder clearUpperBound() {
         return this;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar exemplar_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder> exemplarBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> exemplarBuilder_;
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return Whether the exemplar field is set.
@@ -9768,9 +9768,9 @@ public boolean hasExemplar() {
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return The exemplar.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getExemplar() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() {
         if (exemplarBuilder_ == null) {
-          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         } else {
           return exemplarBuilder_.getMessage();
         }
@@ -9778,7 +9778,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) {
+      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -9795,7 +9795,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       public Builder setExemplar(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarBuilder_ == null) {
           exemplar_ = builderForValue.build();
         } else {
@@ -9808,11 +9808,11 @@ public Builder setExemplar(
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar value) {
+      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             exemplar_ != null &&
-            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance()) {
+            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance()) {
             getExemplarBuilder().mergeFrom(value);
           } else {
             exemplar_ = value;
@@ -9842,7 +9842,7 @@ public Builder clearExemplar() {
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder getExemplarBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder getExemplarBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetExemplarFieldBuilder().getBuilder();
@@ -9850,23 +9850,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
         if (exemplarBuilder_ != null) {
           return exemplarBuilder_.getMessageOrBuilder();
         } else {
           return exemplar_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         }
       }
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> 
           internalGetExemplarFieldBuilder() {
         if (exemplarBuilder_ == null) {
           exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder>(
                   getExemplar(),
                   getParentForChildren(),
                   isClean());
@@ -9879,12 +9879,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Bucket)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9920,7 +9920,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Bucket getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9990,7 +9990,7 @@ public static final class BucketSpan extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 2,
+        /* patch= */ 3,
         /* suffix= */ "",
         "BucketSpan");
     }
@@ -10003,15 +10003,15 @@ private BucketSpan() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder.class);
     }
 
     private int bitField0_;
@@ -10116,10 +10116,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan) obj;
 
       if (hasOffset() != other.hasOffset()) return false;
       if (hasOffset()) {
@@ -10155,44 +10155,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10200,26 +10200,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10232,7 +10232,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10262,21 +10262,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.BucketSpan)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpanOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.newBuilder()
       private Builder() {
 
       }
@@ -10298,17 +10298,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -10316,14 +10316,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -10339,16 +10339,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance()) return this;
         if (other.hasOffset()) {
           setOffset(other.getOffset());
         }
@@ -10524,12 +10524,12 @@ public Builder clearLength() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.BucketSpan)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10565,7 +10565,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.BucketSpan getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10578,12 +10578,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -10591,12 +10591,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -10650,7 +10650,7 @@ public static final class Exemplar extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 2,
+        /* patch= */ 3,
         /* suffix= */ "",
         "Exemplar");
     }
@@ -10664,33 +10664,33 @@ private Exemplar() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -10705,14 +10705,14 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
@@ -10828,10 +10828,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -10875,44 +10875,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10920,26 +10920,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10952,7 +10952,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10973,21 +10973,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Exemplar)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.ExemplarOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -11027,17 +11027,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -11045,15 +11045,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -11065,7 +11065,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -11083,16 +11083,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -11152,9 +11152,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -11193,22 +11193,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -11228,7 +11228,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -11239,7 +11239,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11256,7 +11256,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -11269,7 +11269,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11286,7 +11286,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11303,7 +11303,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -11317,7 +11317,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -11331,7 +11331,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -11371,14 +11371,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -11388,7 +11388,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -11399,31 +11399,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -11634,12 +11634,12 @@ public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Exemplar)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11675,7 +11675,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Exemplar getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11688,12 +11688,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -11701,12 +11701,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -11718,11 +11718,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return The gauge.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge getGauge();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getGauge();
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder getGaugeOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder getGaugeOrBuilder();
 
     /**
      * optional .io.prometheus.client.Counter counter = 3;
@@ -11733,11 +11733,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      * optional .io.prometheus.client.Counter counter = 3;
      * @return The counter.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter getCounter();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getCounter();
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder getCounterOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder getCounterOrBuilder();
 
     /**
      * optional .io.prometheus.client.Summary summary = 4;
@@ -11748,11 +11748,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      * optional .io.prometheus.client.Summary summary = 4;
      * @return The summary.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary getSummary();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getSummary();
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder getSummaryOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder getSummaryOrBuilder();
 
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
@@ -11763,11 +11763,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return The untyped.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped getUntyped();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getUntyped();
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder getUntypedOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder getUntypedOrBuilder();
 
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
@@ -11778,11 +11778,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Met
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return The histogram.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram getHistogram();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getHistogram();
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder getHistogramOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder getHistogramOrBuilder();
 
     /**
      * optional int64 timestamp_ms = 6;
@@ -11808,7 +11808,7 @@ public static final class Metric extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 2,
+        /* patch= */ 3,
         /* suffix= */ "",
         "Metric");
     }
@@ -11822,33 +11822,33 @@ private Metric() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -11863,20 +11863,20 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
 
     public static final int GAUGE_FIELD_NUMBER = 2;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge gauge_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge gauge_;
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return Whether the gauge field is set.
@@ -11890,19 +11890,19 @@ public boolean hasGauge() {
      * @return The gauge.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge getGauge() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getGauge() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
 
     public static final int COUNTER_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter counter_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter counter_;
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      * @return Whether the counter field is set.
@@ -11916,19 +11916,19 @@ public boolean hasCounter() {
      * @return The counter.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter getCounter() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getCounter() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
     }
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder getCounterOrBuilder() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
     }
 
     public static final int SUMMARY_FIELD_NUMBER = 4;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary summary_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary summary_;
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      * @return Whether the summary field is set.
@@ -11942,19 +11942,19 @@ public boolean hasSummary() {
      * @return The summary.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary getSummary() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getSummary() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
     }
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
     }
 
     public static final int UNTYPED_FIELD_NUMBER = 5;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped untyped_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped untyped_;
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return Whether the untyped field is set.
@@ -11968,19 +11968,19 @@ public boolean hasUntyped() {
      * @return The untyped.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped getUntyped() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getUntyped() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
 
     public static final int HISTOGRAM_FIELD_NUMBER = 7;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram histogram_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram histogram_;
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return Whether the histogram field is set.
@@ -11994,15 +11994,15 @@ public boolean hasHistogram() {
      * @return The histogram.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram getHistogram() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getHistogram() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
 
     public static final int TIMESTAMP_MS_FIELD_NUMBER = 6;
@@ -12106,10 +12106,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -12188,44 +12188,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12233,26 +12233,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12265,7 +12265,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -12286,21 +12286,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Metric)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -12364,17 +12364,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -12382,15 +12382,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -12402,7 +12402,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -12444,16 +12444,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -12525,9 +12525,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -12594,22 +12594,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -12629,7 +12629,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -12640,7 +12640,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12657,7 +12657,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -12670,7 +12670,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12687,7 +12687,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12704,7 +12704,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -12718,7 +12718,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -12732,7 +12732,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -12772,14 +12772,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -12789,7 +12789,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -12800,31 +12800,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -12834,9 +12834,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return labelBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge gauge_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge gauge_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder> gaugeBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder> gaugeBuilder_;
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return Whether the gauge field is set.
@@ -12848,9 +12848,9 @@ public boolean hasGauge() {
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return The gauge.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge getGauge() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getGauge() {
         if (gaugeBuilder_ == null) {
-          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance() : gauge_;
+          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
         } else {
           return gaugeBuilder_.getMessage();
         }
@@ -12858,7 +12858,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge value) {
+      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12875,7 +12875,7 @@ public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_go
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       public Builder setGauge(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder builderForValue) {
         if (gaugeBuilder_ == null) {
           gauge_ = builderForValue.build();
         } else {
@@ -12888,11 +12888,11 @@ public Builder setGauge(
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge value) {
+      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (((bitField0_ & 0x00000002) != 0) &&
             gauge_ != null &&
-            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance()) {
+            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance()) {
             getGaugeBuilder().mergeFrom(value);
           } else {
             gauge_ = value;
@@ -12922,7 +12922,7 @@ public Builder clearGauge() {
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder getGaugeBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder getGaugeBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
         return internalGetGaugeFieldBuilder().getBuilder();
@@ -12930,23 +12930,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
         if (gaugeBuilder_ != null) {
           return gaugeBuilder_.getMessageOrBuilder();
         } else {
           return gauge_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.getDefaultInstance() : gauge_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
         }
       }
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder> 
           internalGetGaugeFieldBuilder() {
         if (gaugeBuilder_ == null) {
           gaugeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.GaugeOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder>(
                   getGauge(),
                   getParentForChildren(),
                   isClean());
@@ -12955,9 +12955,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return gaugeBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter counter_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter counter_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder> counterBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder> counterBuilder_;
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        * @return Whether the counter field is set.
@@ -12969,9 +12969,9 @@ public boolean hasCounter() {
        * optional .io.prometheus.client.Counter counter = 3;
        * @return The counter.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter getCounter() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getCounter() {
         if (counterBuilder_ == null) {
-          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance() : counter_;
+          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
         } else {
           return counterBuilder_.getMessage();
         }
@@ -12979,7 +12979,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter value) {
+      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12996,7 +12996,7 @@ public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Counter counter = 3;
        */
       public Builder setCounter(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder builderForValue) {
         if (counterBuilder_ == null) {
           counter_ = builderForValue.build();
         } else {
@@ -13009,11 +13009,11 @@ public Builder setCounter(
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter value) {
+      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (((bitField0_ & 0x00000004) != 0) &&
             counter_ != null &&
-            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance()) {
+            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance()) {
             getCounterBuilder().mergeFrom(value);
           } else {
             counter_ = value;
@@ -13043,7 +13043,7 @@ public Builder clearCounter() {
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder getCounterBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder getCounterBuilder() {
         bitField0_ |= 0x00000004;
         onChanged();
         return internalGetCounterFieldBuilder().getBuilder();
@@ -13051,23 +13051,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder getCounterOrBuilder() {
         if (counterBuilder_ != null) {
           return counterBuilder_.getMessageOrBuilder();
         } else {
           return counter_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.getDefaultInstance() : counter_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
         }
       }
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder> 
           internalGetCounterFieldBuilder() {
         if (counterBuilder_ == null) {
           counterBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.CounterOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder>(
                   getCounter(),
                   getParentForChildren(),
                   isClean());
@@ -13076,9 +13076,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return counterBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary summary_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary summary_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder> summaryBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder> summaryBuilder_;
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        * @return Whether the summary field is set.
@@ -13090,9 +13090,9 @@ public boolean hasSummary() {
        * optional .io.prometheus.client.Summary summary = 4;
        * @return The summary.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary getSummary() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getSummary() {
         if (summaryBuilder_ == null) {
-          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance() : summary_;
+          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
         } else {
           return summaryBuilder_.getMessage();
         }
@@ -13100,7 +13100,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary value) {
+      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13117,7 +13117,7 @@ public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Summary summary = 4;
        */
       public Builder setSummary(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder builderForValue) {
         if (summaryBuilder_ == null) {
           summary_ = builderForValue.build();
         } else {
@@ -13130,11 +13130,11 @@ public Builder setSummary(
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary value) {
+      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             summary_ != null &&
-            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance()) {
+            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance()) {
             getSummaryBuilder().mergeFrom(value);
           } else {
             summary_ = value;
@@ -13164,7 +13164,7 @@ public Builder clearSummary() {
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder getSummaryBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder getSummaryBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetSummaryFieldBuilder().getBuilder();
@@ -13172,23 +13172,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
         if (summaryBuilder_ != null) {
           return summaryBuilder_.getMessageOrBuilder();
         } else {
           return summary_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.getDefaultInstance() : summary_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
         }
       }
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder> 
           internalGetSummaryFieldBuilder() {
         if (summaryBuilder_ == null) {
           summaryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.SummaryOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder>(
                   getSummary(),
                   getParentForChildren(),
                   isClean());
@@ -13197,9 +13197,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return summaryBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped untyped_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped untyped_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder> untypedBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder> untypedBuilder_;
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return Whether the untyped field is set.
@@ -13211,9 +13211,9 @@ public boolean hasUntyped() {
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return The untyped.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped getUntyped() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getUntyped() {
         if (untypedBuilder_ == null) {
-          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance() : untyped_;
+          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
         } else {
           return untypedBuilder_.getMessage();
         }
@@ -13221,7 +13221,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped value) {
+      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13238,7 +13238,7 @@ public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       public Builder setUntyped(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder builderForValue) {
         if (untypedBuilder_ == null) {
           untyped_ = builderForValue.build();
         } else {
@@ -13251,11 +13251,11 @@ public Builder setUntyped(
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped value) {
+      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (((bitField0_ & 0x00000010) != 0) &&
             untyped_ != null &&
-            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance()) {
+            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance()) {
             getUntypedBuilder().mergeFrom(value);
           } else {
             untyped_ = value;
@@ -13285,7 +13285,7 @@ public Builder clearUntyped() {
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder getUntypedBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder getUntypedBuilder() {
         bitField0_ |= 0x00000010;
         onChanged();
         return internalGetUntypedFieldBuilder().getBuilder();
@@ -13293,23 +13293,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
         if (untypedBuilder_ != null) {
           return untypedBuilder_.getMessageOrBuilder();
         } else {
           return untyped_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.getDefaultInstance() : untyped_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
         }
       }
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder> 
           internalGetUntypedFieldBuilder() {
         if (untypedBuilder_ == null) {
           untypedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.UntypedOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder>(
                   getUntyped(),
                   getParentForChildren(),
                   isClean());
@@ -13318,9 +13318,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return untypedBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram histogram_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram histogram_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder> histogramBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder> histogramBuilder_;
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return Whether the histogram field is set.
@@ -13332,9 +13332,9 @@ public boolean hasHistogram() {
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return The histogram.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram getHistogram() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getHistogram() {
         if (histogramBuilder_ == null) {
-          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance() : histogram_;
+          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
         } else {
           return histogramBuilder_.getMessage();
         }
@@ -13342,7 +13342,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram value) {
+      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13359,7 +13359,7 @@ public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.co
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       public Builder setHistogram(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder builderForValue) {
         if (histogramBuilder_ == null) {
           histogram_ = builderForValue.build();
         } else {
@@ -13372,11 +13372,11 @@ public Builder setHistogram(
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram value) {
+      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (((bitField0_ & 0x00000020) != 0) &&
             histogram_ != null &&
-            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance()) {
+            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance()) {
             getHistogramBuilder().mergeFrom(value);
           } else {
             histogram_ = value;
@@ -13406,7 +13406,7 @@ public Builder clearHistogram() {
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder getHistogramBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder getHistogramBuilder() {
         bitField0_ |= 0x00000020;
         onChanged();
         return internalGetHistogramFieldBuilder().getBuilder();
@@ -13414,23 +13414,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
         if (histogramBuilder_ != null) {
           return histogramBuilder_.getMessageOrBuilder();
         } else {
           return histogram_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.getDefaultInstance() : histogram_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
         }
       }
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder> 
           internalGetHistogramFieldBuilder() {
         if (histogramBuilder_ == null) {
           histogramBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.HistogramOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder>(
                   getHistogram(),
                   getParentForChildren(),
                   isClean());
@@ -13483,12 +13483,12 @@ public Builder clearTimestampMs() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Metric)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13524,7 +13524,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13577,17 +13577,17 @@ public interface MetricFamilyOrBuilder extends
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType getType();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType getType();
 
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric getMetric(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getMetric(int index);
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
@@ -13595,12 +13595,12 @@ public interface MetricFamilyOrBuilder extends
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricOrBuilderList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder getMetricOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index);
 
     /**
@@ -13633,7 +13633,7 @@ public static final class MetricFamily extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 2,
+        /* patch= */ 3,
         /* suffix= */ "",
         "MetricFamily");
     }
@@ -13651,15 +13651,15 @@ private MetricFamily() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.Builder.class);
     }
 
     private int bitField0_;
@@ -13774,26 +13774,26 @@ public java.lang.String getHelp() {
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType getType() {
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType.forNumber(type_);
-      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType.COUNTER : result;
+    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType getType() {
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.forNumber(type_);
+      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.COUNTER : result;
     }
 
     public static final int METRIC_FIELD_NUMBER = 4;
     @SuppressWarnings("serial")
-    private java.util.List metric_;
+    private java.util.List metric_;
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List getMetricList() {
+    public java.util.List getMetricList() {
       return metric_;
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getMetricOrBuilderList() {
       return metric_;
     }
@@ -13808,14 +13808,14 @@ public int getMetricCount() {
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric getMetric(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getMetric(int index) {
       return metric_.get(index);
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder getMetricOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index) {
       return metric_.get(index);
     }
@@ -13934,10 +13934,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily) obj;
 
       if (hasName() != other.hasName()) return false;
       if (hasName()) {
@@ -13996,44 +13996,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14041,26 +14041,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14073,7 +14073,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14094,21 +14094,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.MetricFamily)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamilyOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamilyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.newBuilder()
       private Builder() {
 
       }
@@ -14139,17 +14139,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -14157,15 +14157,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result) {
         if (metricBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             metric_ = java.util.Collections.unmodifiableList(metric_);
@@ -14177,7 +14177,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -14201,16 +14201,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.getDefaultInstance()) return this;
         if (other.hasName()) {
           name_ = other.name_;
           bitField0_ |= 0x00000001;
@@ -14293,8 +14293,8 @@ public Builder mergeFrom(
               } // case 18
               case 24: {
                 int tmpRaw = input.readEnum();
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType tmpValue =
-                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType.forNumber(tmpRaw);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType tmpValue =
+                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.forNumber(tmpRaw);
                 if (tmpValue == null) {
                   mergeUnknownVarintField(3, tmpRaw);
                 } else {
@@ -14304,9 +14304,9 @@ public Builder mergeFrom(
                 break;
               } // case 24
               case 34: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.parser(),
                         extensionRegistry);
                 if (metricBuilder_ == null) {
                   ensureMetricIsMutable();
@@ -14511,16 +14511,16 @@ public Builder setHelpBytes(
        * @return The type.
        */
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType getType() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType.forNumber(type_);
-        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType.COUNTER : result;
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType getType() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.forNumber(type_);
+        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.COUNTER : result;
       }
       /**
        * optional .io.prometheus.client.MetricType type = 3;
        * @param value The type to set.
        * @return This builder for chaining.
        */
-      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricType value) {
+      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType value) {
         if (value == null) { throw new NullPointerException(); }
         bitField0_ |= 0x00000004;
         type_ = value.getNumber();
@@ -14538,22 +14538,22 @@ public Builder clearType() {
         return this;
       }
 
-      private java.util.List metric_ =
+      private java.util.List metric_ =
         java.util.Collections.emptyList();
       private void ensureMetricIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          metric_ = new java.util.ArrayList(metric_);
+          metric_ = new java.util.ArrayList(metric_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder> metricBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder> metricBuilder_;
 
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List getMetricList() {
+      public java.util.List getMetricList() {
         if (metricBuilder_ == null) {
           return java.util.Collections.unmodifiableList(metric_);
         } else {
@@ -14573,7 +14573,7 @@ public int getMetricCount() {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric getMetric(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getMetric(int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);
         } else {
@@ -14584,7 +14584,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14601,7 +14601,7 @@ public Builder setMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.set(index, builderForValue.build());
@@ -14614,7 +14614,7 @@ public Builder setMetric(
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric value) {
+      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14631,7 +14631,7 @@ public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14648,7 +14648,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(builderForValue.build());
@@ -14662,7 +14662,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(index, builderForValue.build());
@@ -14676,7 +14676,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addAllMetric(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -14716,14 +14716,14 @@ public Builder removeMetric(int index) {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder getMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder getMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder getMetricOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder getMetricOrBuilder(
           int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);  } else {
@@ -14733,7 +14733,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricOrBuilderList() {
         if (metricBuilder_ != null) {
           return metricBuilder_.getMessageOrBuilderList();
@@ -14744,31 +14744,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder addMetricBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder addMetricBuilder() {
         return internalGetMetricFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder addMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder addMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricBuilderList() {
         return internalGetMetricFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder> 
           internalGetMetricFieldBuilder() {
         if (metricBuilder_ == null) {
           metricBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder>(
                   metric_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -14862,12 +14862,12 @@ public Builder setUnitBytes(
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.MetricFamily)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -14903,7 +14903,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics.MetricFamily getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -15028,7 +15028,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       "\002\022\013\n\007UNTYPED\020\003\022\r\n\tHISTOGRAM\020\004\022\023\n\017GAUGE_H" +
       "ISTOGRAM\020\005B\212\001\nLio.prometheus.metrics.exp" +
       "ositionformats.generated.com_google_prot" +
-      "obuf_4_33_2Z:github.com/prometheus/clien" +
+      "obuf_4_33_3Z:github.com/prometheus/clien" +
       "t_model/go;io_prometheus_client"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
index 13f7f34b9..d05428b2a 100644
--- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
+++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
@@ -6,7 +6,7 @@
 import com.google.protobuf.TextFormat;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.expositionformats.ExpositionFormatWriter;
-import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics;
+import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics;
 import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot;
diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
index d4ccfcf35..2125bde8c 100644
--- a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
+++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
@@ -3,7 +3,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import io.prometheus.metrics.config.EscapingScheme;
-import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_2.Metrics;
+import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics;
 import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl;
 import io.prometheus.metrics.expositionformats.internal.ProtobufUtil;
 import io.prometheus.metrics.model.snapshots.MetricSnapshot;

From 0fb16bc715323aad6991ba4f15c3f8d0a7a87bd2 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 14 Jan 2026 06:00:34 +0000
Subject: [PATCH 007/110] chore(deps): update eclipse-temurin:25.0.1_8-jre
 docker digest to 968f191 (#1779)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| eclipse-temurin | final | digest | `f6b0925` โ†’ `968f191` |
| eclipse-temurin |  | digest | `f6b0925` โ†’ `968f191` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Configuration

๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

๐Ÿšฆ **Automerge**: Enabled.

โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/prometheus/client_java).



Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile  | 2 +-
 .../example-exporter-opentelemetry/oats-tests/http/Dockerfile   | 2 +-
 examples/example-native-histogram/docker-compose.yaml           | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile
index 861890709..7492b704d 100644
--- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile
+++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:25.0.1_8-jre@sha256:f6b092537e68d9836e86f676344e94102f2be325bbc652133cd9ef85b27d3ea9
+FROM eclipse-temurin:25.0.1_8-jre@sha256:968f1917fcfa8250e72c39c68118798a5c86923a709c174578179b318f9033e6
 
 COPY target/example-exporter-opentelemetry.jar ./app.jar
 # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same
diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile
index ea011f6c3..0362e733a 100644
--- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile
+++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:25.0.1_8-jre@sha256:f6b092537e68d9836e86f676344e94102f2be325bbc652133cd9ef85b27d3ea9
+FROM eclipse-temurin:25.0.1_8-jre@sha256:968f1917fcfa8250e72c39c68118798a5c86923a709c174578179b318f9033e6
 
 COPY target/example-exporter-opentelemetry.jar ./app.jar
 
diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml
index 30b33e2d1..c39738129 100644
--- a/examples/example-native-histogram/docker-compose.yaml
+++ b/examples/example-native-histogram/docker-compose.yaml
@@ -1,7 +1,7 @@
 version: "3"
 services:
   example-application:
-    image: eclipse-temurin:25.0.1_8-jre@sha256:f6b092537e68d9836e86f676344e94102f2be325bbc652133cd9ef85b27d3ea9
+    image: eclipse-temurin:25.0.1_8-jre@sha256:968f1917fcfa8250e72c39c68118798a5c86923a709c174578179b318f9033e6
     network_mode: host
     volumes:
       - ./target/example-native-histogram.jar:/example-native-histogram.jar

From ea0c71ebe85b27839fba8c1e2c78e91f5c0585e8 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 14 Jan 2026 09:50:27 +0000
Subject: [PATCH 008/110] fix(deps): update protobuf monorepo (#1778)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This PR contains the following updates:

| Package | Type | Update | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [protoc](https://redirect.github.com/protocolbuffers/protobuf) | |
minor | `33.3` โ†’ `33.4` |
![age](https://developer.mend.io/api/mc/badges/age/github-releases/protocolbuffers%2fprotobuf/33.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/protocolbuffers%2fprotobuf/33.3/33.4?slim=true)
|
|
[com.google.protobuf:protobuf-java](https://developers.google.com/protocol-buffers/)
([source](https://redirect.github.com/protocolbuffers/protobuf)) |
compile | patch | `4.33.3` โ†’ `4.33.4` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.protobuf:protobuf-java/4.33.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.protobuf:protobuf-java/4.33.3/4.33.4?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

protocolbuffers/protobuf (protoc) ### [`v33.4`](https://redirect.github.com/protocolbuffers/protobuf/releases/tag/v33.4): Protocol Buffers v33.4 [Compare Source](https://redirect.github.com/protocolbuffers/protobuf/compare/v33.3...v33.4) ##### Announcements - [Protobuf News](https://protobuf.dev/news/) may include additional announcements or pre-announcements for upcoming changes. ##### Other - Refactor(bazel): publish a separate .tar.gz ([#​24065](https://redirect.github.com/protocolbuffers/protobuf/issues/24065)) ([`47b3385`](https://redirect.github.com/protocolbuffers/protobuf/commit/47b33852a15f498c49a5cd20762f2300354545e7)) - Bazel: Remove hardcoded dependency on `//:protoc` from language runtimes ([#​19679](https://redirect.github.com/protocolbuffers/protobuf/issues/19679)) ([`453cfb2`](https://redirect.github.com/protocolbuffers/protobuf/commit/453cfb23ffc36fe4cb06c4507fc6dddd7c42bd7a))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .../client/it/common/ExporterTest.java | 2 +- .../metrics/it/exporter/test/ExporterIT.java | 2 +- .../it/springboot/ApplicationTest.java | 2 +- mise.toml | 2 +- pom.xml | 2 +- .../metrics/core/metrics/CounterTest.java | 2 +- .../metrics/core/metrics/HistogramTest.java | 2 +- .../metrics/core/metrics/InfoTest.java | 2 +- .../Metrics.java | 1810 ++++++++--------- .../PrometheusProtobufWriterImpl.java | 2 +- .../ProtobufExpositionFormatsTest.java | 2 +- 11 files changed, 915 insertions(+), 915 deletions(-) rename prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/{com_google_protobuf_4_33_3 => com_google_protobuf_4_33_4}/Metrics.java (89%) diff --git a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java index 302682cc6..605e760f4 100644 --- a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java +++ b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index 6c807fb2e..cf876b3fd 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -5,7 +5,7 @@ import com.google.common.io.Resources; import io.prometheus.client.it.common.ExporterTest; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; import java.io.IOException; import java.net.URISyntaxException; import java.net.URLEncoder; diff --git a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java index 4f2843692..94617dc25 100644 --- a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java +++ b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.prometheus.client.it.common.ExporterTest; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; import java.io.IOException; import java.net.URI; import java.util.List; diff --git a/mise.toml b/mise.toml index b23b1e945..56d2680f5 100644 --- a/mise.toml +++ b/mise.toml @@ -3,7 +3,7 @@ "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.1+8.0.LTS" lychee = "0.22.0" -protoc = "33.3" +protoc = "33.4" [tasks.ci] description = "CI Build" diff --git a/pom.xml b/pom.xml index 41771d481..5a64862cf 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ UTF-8 --module-name-need-to-be-overridden-- - 4.33.3 + 4.33.4 33.5.0-jre 6.0.2 2.16.0-alpha diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java index c0816f76d..c39bf1ad6 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java @@ -9,7 +9,7 @@ import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.CounterSnapshot; diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java index 0e7229a4c..0a17dccd3 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java @@ -11,7 +11,7 @@ import io.prometheus.metrics.core.datapoints.DistributionDataPoint; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.*; diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java index 33683a26d..e47bb7d6c 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java @@ -5,7 +5,7 @@ import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.Labels; diff --git a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_3/Metrics.java b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_4/Metrics.java similarity index 89% rename from prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_3/Metrics.java rename to prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_4/Metrics.java index 1b9bc2635..fcbc1b8db 100644 --- a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_3/Metrics.java +++ b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_4/Metrics.java @@ -2,9 +2,9 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: src/main/protobuf/metrics.proto -// Protobuf Java Version: 4.33.3 +// Protobuf Java Version: 4.33.4 -package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3; +package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4; @com.google.protobuf.Generated public final class Metrics extends com.google.protobuf.GeneratedFile { @@ -14,7 +14,7 @@ private Metrics() {} com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "Metrics"); } @@ -87,7 +87,7 @@ public enum MetricType com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "MetricType"); } @@ -193,7 +193,7 @@ public MetricType findValueByNumber(int number) { } public static com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.getDescriptor().getEnumTypes().get(0); + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.getDescriptor().getEnumTypes().get(0); } private static final MetricType[] VALUES = values(); @@ -267,7 +267,7 @@ public static final class LabelPair extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "LabelPair"); } @@ -282,15 +282,15 @@ private LabelPair() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder.class); } private int bitField0_; @@ -437,10 +437,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair) obj; if (hasName() != other.hasName()) return false; if (hasName()) { @@ -476,44 +476,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -521,26 +521,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -553,7 +553,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -574,21 +574,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.LabelPair) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.newBuilder() private Builder() { } @@ -610,17 +610,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -628,14 +628,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -651,16 +651,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance()) return this; if (other.hasName()) { name_ = other.name_; bitField0_ |= 0x00000001; @@ -888,12 +888,12 @@ public Builder setValueBytes( } // @@protoc_insertion_point(class_scope:io.prometheus.client.LabelPair) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -929,7 +929,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -963,7 +963,7 @@ public static final class Gauge extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "Gauge"); } @@ -976,15 +976,15 @@ private Gauge() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder.class); } private int bitField0_; @@ -1047,10 +1047,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1079,44 +1079,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1124,26 +1124,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1156,7 +1156,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1177,21 +1177,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Gauge) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.newBuilder() private Builder() { } @@ -1212,17 +1212,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1230,14 +1230,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1249,16 +1249,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1354,12 +1354,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Gauge) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -1395,7 +1395,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -1425,11 +1425,11 @@ public interface CounterOrBuilder extends * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar(); /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); /** * optional .google.protobuf.Timestamp created_timestamp = 3; @@ -1459,7 +1459,7 @@ public static final class Counter extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "Counter"); } @@ -1472,15 +1472,15 @@ private Counter() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder.class); } private int bitField0_; @@ -1504,7 +1504,7 @@ public double getValue() { } public static final int EXEMPLAR_FIELD_NUMBER = 2; - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1518,15 +1518,15 @@ public boolean hasExemplar() { * @return The exemplar. */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; } public static final int CREATED_TIMESTAMP_FIELD_NUMBER = 3; @@ -1609,10 +1609,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1659,44 +1659,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1704,26 +1704,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1736,7 +1736,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1757,21 +1757,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Counter) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -1809,17 +1809,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1827,14 +1827,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1858,16 +1858,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1979,9 +1979,9 @@ public Builder clearValue() { return this; } - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_; private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> exemplarBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> exemplarBuilder_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1993,9 +1993,9 @@ public boolean hasExemplar() { * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() { if (exemplarBuilder_ == null) { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; } else { return exemplarBuilder_.getMessage(); } @@ -2003,7 +2003,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) { + public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2020,7 +2020,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com * optional .io.prometheus.client.Exemplar exemplar = 2; */ public Builder setExemplar( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) { if (exemplarBuilder_ == null) { exemplar_ = builderForValue.build(); } else { @@ -2033,11 +2033,11 @@ public Builder setExemplar( /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) { + public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (((bitField0_ & 0x00000002) != 0) && exemplar_ != null && - exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance()) { + exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance()) { getExemplarBuilder().mergeFrom(value); } else { exemplar_ = value; @@ -2067,7 +2067,7 @@ public Builder clearExemplar() { /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder getExemplarBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder getExemplarBuilder() { bitField0_ |= 0x00000002; onChanged(); return internalGetExemplarFieldBuilder().getBuilder(); @@ -2075,23 +2075,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { if (exemplarBuilder_ != null) { return exemplarBuilder_.getMessageOrBuilder(); } else { return exemplar_ == null ? - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; } } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> internalGetExemplarFieldBuilder() { if (exemplarBuilder_ == null) { exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder>( getExemplar(), getParentForChildren(), isClean()); @@ -2225,12 +2225,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Counter) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2266,7 +2266,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2311,7 +2311,7 @@ public static final class Quantile extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "Quantile"); } @@ -2324,15 +2324,15 @@ private Quantile() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder.class); } private int bitField0_; @@ -2421,10 +2421,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile) obj; if (hasQuantile() != other.hasQuantile()) return false; if (hasQuantile()) { @@ -2464,44 +2464,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2509,26 +2509,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2541,7 +2541,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -2562,21 +2562,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Quantile) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.newBuilder() private Builder() { } @@ -2598,17 +2598,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -2616,14 +2616,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -2639,16 +2639,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance()) return this; if (other.hasQuantile()) { setQuantile(other.getQuantile()); } @@ -2792,12 +2792,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Quantile) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2833,7 +2833,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2868,12 +2868,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getQuantile(int index); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getQuantile(int index); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @@ -2881,12 +2881,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileOrBuilderList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder getQuantileOrBuilder( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index); /** @@ -2917,7 +2917,7 @@ public static final class Summary extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "Summary"); } @@ -2931,15 +2931,15 @@ private Summary() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder.class); } private int bitField0_; @@ -2983,19 +2983,19 @@ public double getSampleSum() { public static final int QUANTILE_FIELD_NUMBER = 3; @SuppressWarnings("serial") - private java.util.List quantile_; + private java.util.List quantile_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { return quantile_; } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List + public java.util.List getQuantileOrBuilderList() { return quantile_; } @@ -3010,14 +3010,14 @@ public int getQuantileCount() { * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getQuantile(int index) { return quantile_.get(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { return quantile_.get(index); } @@ -3109,10 +3109,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary) obj; if (hasSampleCount() != other.hasSampleCount()) return false; if (hasSampleCount()) { @@ -3166,44 +3166,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3211,26 +3211,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3243,7 +3243,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -3264,21 +3264,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Summary) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -3319,17 +3319,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -3337,15 +3337,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary(this); buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result) { + private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result) { if (quantileBuilder_ == null) { if (((bitField0_ & 0x00000004) != 0)) { quantile_ = java.util.Collections.unmodifiableList(quantile_); @@ -3357,7 +3357,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats. } } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -3379,16 +3379,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance()) return this; if (other.hasSampleCount()) { setSampleCount(other.getSampleCount()); } @@ -3461,9 +3461,9 @@ public Builder mergeFrom( break; } // case 17 case 26: { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile m = + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile m = input.readMessage( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.parser(), + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.parser(), extensionRegistry); if (quantileBuilder_ == null) { ensureQuantileIsMutable(); @@ -3577,22 +3577,22 @@ public Builder clearSampleSum() { return this; } - private java.util.List quantile_ = + private java.util.List quantile_ = java.util.Collections.emptyList(); private void ensureQuantileIsMutable() { if (!((bitField0_ & 0x00000004) != 0)) { - quantile_ = new java.util.ArrayList(quantile_); + quantile_ = new java.util.ArrayList(quantile_); bitField0_ |= 0x00000004; } } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder> quantileBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder> quantileBuilder_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { if (quantileBuilder_ == null) { return java.util.Collections.unmodifiableList(quantile_); } else { @@ -3612,7 +3612,7 @@ public int getQuantileCount() { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getQuantile(int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3623,7 +3623,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3640,7 +3640,7 @@ public Builder setQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.set(index, builderForValue.build()); @@ -3653,7 +3653,7 @@ public Builder setQuantile( /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile value) { + public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3670,7 +3670,7 @@ public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3687,7 +3687,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(builderForValue.build()); @@ -3701,7 +3701,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(index, builderForValue.build()); @@ -3715,7 +3715,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addAllQuantile( - java.lang.Iterable values) { + java.lang.Iterable values) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -3755,14 +3755,14 @@ public Builder removeQuantile(int index) { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder getQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder getQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().getBuilder(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3772,7 +3772,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileOrBuilderList() { if (quantileBuilder_ != null) { return quantileBuilder_.getMessageOrBuilderList(); @@ -3783,31 +3783,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder addQuantileBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder addQuantileBuilder() { return internalGetQuantileFieldBuilder().addBuilder( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance()); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder addQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder addQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().addBuilder( - index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.getDefaultInstance()); + index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileBuilderList() { return internalGetQuantileFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder> internalGetQuantileFieldBuilder() { if (quantileBuilder_ == null) { quantileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.QuantileOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder>( quantile_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), @@ -3942,12 +3942,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Summary) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -3983,7 +3983,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4017,7 +4017,7 @@ public static final class Untyped extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 3, + /* patch= */ 4, /* suffix= */ "", "Untyped"); } @@ -4030,15 +4030,15 @@ private Untyped() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder.class); } private int bitField0_; @@ -4101,10 +4101,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -4133,44 +4133,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4178,26 +4178,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4210,7 +4210,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -4231,21 +4231,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Untyped) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.newBuilder() private Builder() { } @@ -4266,17 +4266,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -4284,14 +4284,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -4303,16 +4303,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -4408,12 +4408,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Untyped) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -4449,7 +4449,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4507,7 +4507,7 @@ public interface HistogramOrBuilder extends * * repeated .io.prometheus.client.Bucket bucket = 3; */ - java.util.List + java.util.List getBucketList(); /** *
@@ -4516,7 +4516,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getBucket(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getBucket(int index);
     /**
      * 
      * Buckets for the conventional histogram.
@@ -4532,7 +4532,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    java.util.List 
+    java.util.List 
         getBucketOrBuilderList();
     /**
      * 
@@ -4541,7 +4541,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder getBucketOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index);
 
     /**
@@ -4650,7 +4650,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanList();
     /**
      * 
@@ -4659,7 +4659,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getNegativeSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getNegativeSpan(int index);
     /**
      * 
      * Negative buckets for the native histogram.
@@ -4675,7 +4675,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanOrBuilderList();
     /**
      * 
@@ -4684,7 +4684,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index);
 
     /**
@@ -4761,7 +4761,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanList();
     /**
      * 
@@ -4773,7 +4773,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getPositiveSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getPositiveSpan(int index);
     /**
      * 
      * Positive buckets for the native histogram.
@@ -4795,7 +4795,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanOrBuilderList();
     /**
      * 
@@ -4807,7 +4807,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index);
 
     /**
@@ -4881,7 +4881,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsList();
     /**
      * 
@@ -4890,7 +4890,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplars(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplars(int index);
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -4906,7 +4906,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsOrBuilderList();
     /**
      * 
@@ -4915,7 +4915,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index);
   }
   /**
@@ -4931,7 +4931,7 @@ public static final class Histogram extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 3,
+        /* patch= */ 4,
         /* suffix= */ "",
         "Histogram");
     }
@@ -4952,15 +4952,15 @@ private Histogram() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder.class);
     }
 
     private int bitField0_;
@@ -5031,7 +5031,7 @@ public double getSampleSum() {
 
     public static final int BUCKET_FIELD_NUMBER = 3;
     @SuppressWarnings("serial")
-    private java.util.List bucket_;
+    private java.util.List bucket_;
     /**
      * 
      * Buckets for the conventional histogram.
@@ -5040,7 +5040,7 @@ public double getSampleSum() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List getBucketList() {
+    public java.util.List getBucketList() {
       return bucket_;
     }
     /**
@@ -5051,7 +5051,7 @@ public java.util.Listrepeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getBucketOrBuilderList() {
       return bucket_;
     }
@@ -5074,7 +5074,7 @@ public int getBucketCount() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getBucket(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getBucket(int index) {
       return bucket_.get(index);
     }
     /**
@@ -5085,7 +5085,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder getBucketOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index) {
       return bucket_.get(index);
     }
@@ -5234,7 +5234,7 @@ public double getZeroCountFloat() {
 
     public static final int NEGATIVE_SPAN_FIELD_NUMBER = 9;
     @SuppressWarnings("serial")
-    private java.util.List negativeSpan_;
+    private java.util.List negativeSpan_;
     /**
      * 
      * Negative buckets for the native histogram.
@@ -5243,7 +5243,7 @@ public double getZeroCountFloat() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List getNegativeSpanList() {
+    public java.util.List getNegativeSpanList() {
       return negativeSpan_;
     }
     /**
@@ -5254,7 +5254,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getNegativeSpanOrBuilderList() {
       return negativeSpan_;
     }
@@ -5277,7 +5277,7 @@ public int getNegativeSpanCount() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getNegativeSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getNegativeSpan(int index) {
       return negativeSpan_.get(index);
     }
     /**
@@ -5288,7 +5288,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index) {
       return negativeSpan_.get(index);
     }
@@ -5383,7 +5383,7 @@ public double getNegativeCount(int index) {
 
     public static final int POSITIVE_SPAN_FIELD_NUMBER = 12;
     @SuppressWarnings("serial")
-    private java.util.List positiveSpan_;
+    private java.util.List positiveSpan_;
     /**
      * 
      * Positive buckets for the native histogram.
@@ -5395,7 +5395,7 @@ public double getNegativeCount(int index) {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List getPositiveSpanList() {
+    public java.util.List getPositiveSpanList() {
       return positiveSpan_;
     }
     /**
@@ -5409,7 +5409,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getPositiveSpanOrBuilderList() {
       return positiveSpan_;
     }
@@ -5438,7 +5438,7 @@ public int getPositiveSpanCount() {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getPositiveSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getPositiveSpan(int index) {
       return positiveSpan_.get(index);
     }
     /**
@@ -5452,7 +5452,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index) {
       return positiveSpan_.get(index);
     }
@@ -5547,7 +5547,7 @@ public double getPositiveCount(int index) {
 
     public static final int EXEMPLARS_FIELD_NUMBER = 16;
     @SuppressWarnings("serial")
-    private java.util.List exemplars_;
+    private java.util.List exemplars_;
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -5556,7 +5556,7 @@ public double getPositiveCount(int index) {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List getExemplarsList() {
+    public java.util.List getExemplarsList() {
       return exemplars_;
     }
     /**
@@ -5567,7 +5567,7 @@ public java.util.Listrepeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getExemplarsOrBuilderList() {
       return exemplars_;
     }
@@ -5590,7 +5590,7 @@ public int getExemplarsCount() {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplars(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplars(int index) {
       return exemplars_.get(index);
     }
     /**
@@ -5601,7 +5601,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index) {
       return exemplars_.get(index);
     }
@@ -5765,10 +5765,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram) obj;
 
       if (hasSampleCount() != other.hasSampleCount()) return false;
       if (hasSampleCount()) {
@@ -5916,44 +5916,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5961,26 +5961,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5993,7 +5993,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -6014,21 +6014,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Histogram)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -6102,17 +6102,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -6120,15 +6120,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result) {
         if (bucketBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             bucket_ = java.util.Collections.unmodifiableList(bucket_);
@@ -6167,7 +6167,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -6225,16 +6225,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance()) return this;
         if (other.hasSampleCount()) {
           setSampleCount(other.getSampleCount());
         }
@@ -6444,9 +6444,9 @@ public Builder mergeFrom(
                 break;
               } // case 17
               case 26: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.parser(),
                         extensionRegistry);
                 if (bucketBuilder_ == null) {
                   ensureBucketIsMutable();
@@ -6482,9 +6482,9 @@ public Builder mergeFrom(
                 break;
               } // case 65
               case 74: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (negativeSpanBuilder_ == null) {
                   ensureNegativeSpanIsMutable();
@@ -6528,9 +6528,9 @@ public Builder mergeFrom(
                 break;
               } // case 90
               case 98: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (positiveSpanBuilder_ == null) {
                   ensurePositiveSpanIsMutable();
@@ -6581,9 +6581,9 @@ public Builder mergeFrom(
                 break;
               } // case 122
               case 130: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.parser(),
                         extensionRegistry);
                 if (exemplarsBuilder_ == null) {
                   ensureExemplarsIsMutable();
@@ -6746,17 +6746,17 @@ public Builder clearSampleSum() {
         return this;
       }
 
-      private java.util.List bucket_ =
+      private java.util.List bucket_ =
         java.util.Collections.emptyList();
       private void ensureBucketIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          bucket_ = new java.util.ArrayList(bucket_);
+          bucket_ = new java.util.ArrayList(bucket_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder> bucketBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder> bucketBuilder_;
 
       /**
        * 
@@ -6765,7 +6765,7 @@ private void ensureBucketIsMutable() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List getBucketList() {
+      public java.util.List getBucketList() {
         if (bucketBuilder_ == null) {
           return java.util.Collections.unmodifiableList(bucket_);
         } else {
@@ -6793,7 +6793,7 @@ public int getBucketCount() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getBucket(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getBucket(int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);
         } else {
@@ -6808,7 +6808,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6829,7 +6829,7 @@ public Builder setBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.set(index, builderForValue.build());
@@ -6846,7 +6846,7 @@ public Builder setBucket(
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket value) {
+      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6867,7 +6867,7 @@ public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6888,7 +6888,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(builderForValue.build());
@@ -6906,7 +6906,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(index, builderForValue.build());
@@ -6924,7 +6924,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addAllBucket(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -6976,7 +6976,7 @@ public Builder removeBucket(int index) {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder getBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder getBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().getBuilder(index);
       }
@@ -6987,7 +6987,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder getBucketOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder getBucketOrBuilder(
           int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);  } else {
@@ -7001,7 +7001,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketOrBuilderList() {
         if (bucketBuilder_ != null) {
           return bucketBuilder_.getMessageOrBuilderList();
@@ -7016,9 +7016,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder addBucketBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder addBucketBuilder() {
         return internalGetBucketFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7027,10 +7027,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder addBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder addBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7039,16 +7039,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketBuilderList() {
         return internalGetBucketFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder> 
           internalGetBucketFieldBuilder() {
         if (bucketBuilder_ == null) {
           bucketBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder>(
                   bucket_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -7419,17 +7419,17 @@ public Builder clearZeroCountFloat() {
         return this;
       }
 
-      private java.util.List negativeSpan_ =
+      private java.util.List negativeSpan_ =
         java.util.Collections.emptyList();
       private void ensureNegativeSpanIsMutable() {
         if (!((bitField0_ & 0x00000200) != 0)) {
-          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
+          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
           bitField0_ |= 0x00000200;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
 
       /**
        * 
@@ -7438,7 +7438,7 @@ private void ensureNegativeSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List getNegativeSpanList() {
+      public java.util.List getNegativeSpanList() {
         if (negativeSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(negativeSpan_);
         } else {
@@ -7466,7 +7466,7 @@ public int getNegativeSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getNegativeSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getNegativeSpan(int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);
         } else {
@@ -7481,7 +7481,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7502,7 +7502,7 @@ public Builder setNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.set(index, builderForValue.build());
@@ -7519,7 +7519,7 @@ public Builder setNegativeSpan(
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
+      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7540,7 +7540,7 @@ public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7561,7 +7561,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(builderForValue.build());
@@ -7579,7 +7579,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(index, builderForValue.build());
@@ -7597,7 +7597,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addAllNegativeSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -7649,7 +7649,7 @@ public Builder removeNegativeSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().getBuilder(index);
       }
@@ -7660,7 +7660,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
           int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);  } else {
@@ -7674,7 +7674,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanOrBuilderList() {
         if (negativeSpanBuilder_ != null) {
           return negativeSpanBuilder_.getMessageOrBuilderList();
@@ -7689,9 +7689,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7700,10 +7700,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7712,16 +7712,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanBuilderList() {
         return internalGetNegativeSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> 
           internalGetNegativeSpanFieldBuilder() {
         if (negativeSpanBuilder_ == null) {
           negativeSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder>(
                   negativeSpan_,
                   ((bitField0_ & 0x00000200) != 0),
                   getParentForChildren(),
@@ -7975,17 +7975,17 @@ public Builder clearNegativeCount() {
         return this;
       }
 
-      private java.util.List positiveSpan_ =
+      private java.util.List positiveSpan_ =
         java.util.Collections.emptyList();
       private void ensurePositiveSpanIsMutable() {
         if (!((bitField0_ & 0x00001000) != 0)) {
-          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
+          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
           bitField0_ |= 0x00001000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
 
       /**
        * 
@@ -7997,7 +7997,7 @@ private void ensurePositiveSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List getPositiveSpanList() {
+      public java.util.List getPositiveSpanList() {
         if (positiveSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(positiveSpan_);
         } else {
@@ -8031,7 +8031,7 @@ public int getPositiveSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getPositiveSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getPositiveSpan(int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);
         } else {
@@ -8049,7 +8049,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8073,7 +8073,7 @@ public Builder setPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.set(index, builderForValue.build());
@@ -8093,7 +8093,7 @@ public Builder setPositiveSpan(
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
+      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8117,7 +8117,7 @@ public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8141,7 +8141,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(builderForValue.build());
@@ -8162,7 +8162,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(index, builderForValue.build());
@@ -8183,7 +8183,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addAllPositiveSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8244,7 +8244,7 @@ public Builder removePositiveSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().getBuilder(index);
       }
@@ -8258,7 +8258,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
           int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);  } else {
@@ -8275,7 +8275,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanOrBuilderList() {
         if (positiveSpanBuilder_ != null) {
           return positiveSpanBuilder_.getMessageOrBuilderList();
@@ -8293,9 +8293,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8307,10 +8307,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8322,16 +8322,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanBuilderList() {
         return internalGetPositiveSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> 
           internalGetPositiveSpanFieldBuilder() {
         if (positiveSpanBuilder_ == null) {
           positiveSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder>(
                   positiveSpan_,
                   ((bitField0_ & 0x00001000) != 0),
                   getParentForChildren(),
@@ -8585,17 +8585,17 @@ public Builder clearPositiveCount() {
         return this;
       }
 
-      private java.util.List exemplars_ =
+      private java.util.List exemplars_ =
         java.util.Collections.emptyList();
       private void ensureExemplarsIsMutable() {
         if (!((bitField0_ & 0x00008000) != 0)) {
-          exemplars_ = new java.util.ArrayList(exemplars_);
+          exemplars_ = new java.util.ArrayList(exemplars_);
           bitField0_ |= 0x00008000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
 
       /**
        * 
@@ -8604,7 +8604,7 @@ private void ensureExemplarsIsMutable() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List getExemplarsList() {
+      public java.util.List getExemplarsList() {
         if (exemplarsBuilder_ == null) {
           return java.util.Collections.unmodifiableList(exemplars_);
         } else {
@@ -8632,7 +8632,7 @@ public int getExemplarsCount() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplars(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplars(int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);
         } else {
@@ -8647,7 +8647,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8668,7 +8668,7 @@ public Builder setExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.set(index, builderForValue.build());
@@ -8685,7 +8685,7 @@ public Builder setExemplars(
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
+      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8706,7 +8706,7 @@ public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.co
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8727,7 +8727,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(builderForValue.build());
@@ -8745,7 +8745,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(index, builderForValue.build());
@@ -8763,7 +8763,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addAllExemplars(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8815,7 +8815,7 @@ public Builder removeExemplars(int index) {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder getExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder getExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().getBuilder(index);
       }
@@ -8826,7 +8826,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
           int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);  } else {
@@ -8840,7 +8840,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsOrBuilderList() {
         if (exemplarsBuilder_ != null) {
           return exemplarsBuilder_.getMessageOrBuilderList();
@@ -8855,9 +8855,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder addExemplarsBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder addExemplarsBuilder() {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8866,10 +8866,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder addExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder addExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8878,16 +8878,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsBuilderList() {
         return internalGetExemplarsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> 
           internalGetExemplarsFieldBuilder() {
         if (exemplarsBuilder_ == null) {
           exemplarsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder>(
                   exemplars_,
                   ((bitField0_ & 0x00008000) != 0),
                   getParentForChildren(),
@@ -8901,12 +8901,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Histogram)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -8942,7 +8942,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9018,11 +9018,11 @@ public interface BucketOrBuilder extends
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return The exemplar.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar();
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
   }
   /**
    * 
@@ -9042,7 +9042,7 @@ public static final class Bucket extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 3,
+        /* patch= */ 4,
         /* suffix= */ "",
         "Bucket");
     }
@@ -9055,15 +9055,15 @@ private Bucket() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder.class);
     }
 
     private int bitField0_;
@@ -9149,7 +9149,7 @@ public double getUpperBound() {
     }
 
     public static final int EXEMPLAR_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_;
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return Whether the exemplar field is set.
@@ -9163,15 +9163,15 @@ public boolean hasExemplar() {
      * @return The exemplar.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -9235,10 +9235,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket) obj;
 
       if (hasCumulativeCount() != other.hasCumulativeCount()) return false;
       if (hasCumulativeCount()) {
@@ -9297,44 +9297,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9342,26 +9342,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9374,7 +9374,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -9400,21 +9400,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Bucket)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -9448,17 +9448,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -9466,14 +9466,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -9499,16 +9499,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance()) return this;
         if (other.hasCumulativeCount()) {
           setCumulativeCount(other.getCumulativeCount());
         }
@@ -9754,9 +9754,9 @@ public Builder clearUpperBound() {
         return this;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar exemplar_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> exemplarBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> exemplarBuilder_;
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return Whether the exemplar field is set.
@@ -9768,9 +9768,9 @@ public boolean hasExemplar() {
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return The exemplar.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getExemplar() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() {
         if (exemplarBuilder_ == null) {
-          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         } else {
           return exemplarBuilder_.getMessage();
         }
@@ -9778,7 +9778,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
+      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -9795,7 +9795,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       public Builder setExemplar(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarBuilder_ == null) {
           exemplar_ = builderForValue.build();
         } else {
@@ -9808,11 +9808,11 @@ public Builder setExemplar(
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar value) {
+      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             exemplar_ != null &&
-            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance()) {
+            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance()) {
             getExemplarBuilder().mergeFrom(value);
           } else {
             exemplar_ = value;
@@ -9842,7 +9842,7 @@ public Builder clearExemplar() {
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder getExemplarBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder getExemplarBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetExemplarFieldBuilder().getBuilder();
@@ -9850,23 +9850,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
         if (exemplarBuilder_ != null) {
           return exemplarBuilder_.getMessageOrBuilder();
         } else {
           return exemplar_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         }
       }
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> 
           internalGetExemplarFieldBuilder() {
         if (exemplarBuilder_ == null) {
           exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder>(
                   getExemplar(),
                   getParentForChildren(),
                   isClean());
@@ -9879,12 +9879,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Bucket)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9920,7 +9920,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Bucket getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9990,7 +9990,7 @@ public static final class BucketSpan extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 3,
+        /* patch= */ 4,
         /* suffix= */ "",
         "BucketSpan");
     }
@@ -10003,15 +10003,15 @@ private BucketSpan() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder.class);
     }
 
     private int bitField0_;
@@ -10116,10 +10116,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan) obj;
 
       if (hasOffset() != other.hasOffset()) return false;
       if (hasOffset()) {
@@ -10155,44 +10155,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10200,26 +10200,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10232,7 +10232,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10262,21 +10262,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.BucketSpan)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpanOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.newBuilder()
       private Builder() {
 
       }
@@ -10298,17 +10298,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -10316,14 +10316,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -10339,16 +10339,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance()) return this;
         if (other.hasOffset()) {
           setOffset(other.getOffset());
         }
@@ -10524,12 +10524,12 @@ public Builder clearLength() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.BucketSpan)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10565,7 +10565,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.BucketSpan getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10578,12 +10578,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -10591,12 +10591,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -10650,7 +10650,7 @@ public static final class Exemplar extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 3,
+        /* patch= */ 4,
         /* suffix= */ "",
         "Exemplar");
     }
@@ -10664,33 +10664,33 @@ private Exemplar() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -10705,14 +10705,14 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
@@ -10828,10 +10828,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -10875,44 +10875,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10920,26 +10920,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10952,7 +10952,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10973,21 +10973,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Exemplar)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.ExemplarOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -11027,17 +11027,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -11045,15 +11045,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -11065,7 +11065,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -11083,16 +11083,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -11152,9 +11152,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -11193,22 +11193,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -11228,7 +11228,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -11239,7 +11239,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11256,7 +11256,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -11269,7 +11269,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11286,7 +11286,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11303,7 +11303,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -11317,7 +11317,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -11331,7 +11331,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -11371,14 +11371,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -11388,7 +11388,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -11399,31 +11399,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -11634,12 +11634,12 @@ public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Exemplar)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11675,7 +11675,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Exemplar getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11688,12 +11688,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -11701,12 +11701,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -11718,11 +11718,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return The gauge.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getGauge();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getGauge();
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder getGaugeOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder getGaugeOrBuilder();
 
     /**
      * optional .io.prometheus.client.Counter counter = 3;
@@ -11733,11 +11733,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      * optional .io.prometheus.client.Counter counter = 3;
      * @return The counter.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getCounter();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getCounter();
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder getCounterOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder getCounterOrBuilder();
 
     /**
      * optional .io.prometheus.client.Summary summary = 4;
@@ -11748,11 +11748,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      * optional .io.prometheus.client.Summary summary = 4;
      * @return The summary.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getSummary();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getSummary();
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder getSummaryOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder getSummaryOrBuilder();
 
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
@@ -11763,11 +11763,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return The untyped.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getUntyped();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getUntyped();
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder getUntypedOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder getUntypedOrBuilder();
 
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
@@ -11778,11 +11778,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Met
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return The histogram.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getHistogram();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getHistogram();
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder getHistogramOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder getHistogramOrBuilder();
 
     /**
      * optional int64 timestamp_ms = 6;
@@ -11808,7 +11808,7 @@ public static final class Metric extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 3,
+        /* patch= */ 4,
         /* suffix= */ "",
         "Metric");
     }
@@ -11822,33 +11822,33 @@ private Metric() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -11863,20 +11863,20 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
 
     public static final int GAUGE_FIELD_NUMBER = 2;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge gauge_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge gauge_;
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return Whether the gauge field is set.
@@ -11890,19 +11890,19 @@ public boolean hasGauge() {
      * @return The gauge.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getGauge() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getGauge() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
 
     public static final int COUNTER_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter counter_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter counter_;
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      * @return Whether the counter field is set.
@@ -11916,19 +11916,19 @@ public boolean hasCounter() {
      * @return The counter.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getCounter() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getCounter() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
     }
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder getCounterOrBuilder() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
     }
 
     public static final int SUMMARY_FIELD_NUMBER = 4;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary summary_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary summary_;
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      * @return Whether the summary field is set.
@@ -11942,19 +11942,19 @@ public boolean hasSummary() {
      * @return The summary.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getSummary() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getSummary() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
     }
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
     }
 
     public static final int UNTYPED_FIELD_NUMBER = 5;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped untyped_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped untyped_;
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return Whether the untyped field is set.
@@ -11968,19 +11968,19 @@ public boolean hasUntyped() {
      * @return The untyped.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getUntyped() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getUntyped() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
 
     public static final int HISTOGRAM_FIELD_NUMBER = 7;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram histogram_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram histogram_;
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return Whether the histogram field is set.
@@ -11994,15 +11994,15 @@ public boolean hasHistogram() {
      * @return The histogram.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getHistogram() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getHistogram() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
 
     public static final int TIMESTAMP_MS_FIELD_NUMBER = 6;
@@ -12106,10 +12106,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -12188,44 +12188,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12233,26 +12233,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12265,7 +12265,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -12286,21 +12286,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Metric)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -12364,17 +12364,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -12382,15 +12382,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -12402,7 +12402,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -12444,16 +12444,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -12525,9 +12525,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -12594,22 +12594,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -12629,7 +12629,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -12640,7 +12640,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12657,7 +12657,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -12670,7 +12670,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12687,7 +12687,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12704,7 +12704,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -12718,7 +12718,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -12732,7 +12732,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -12772,14 +12772,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -12789,7 +12789,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -12800,31 +12800,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -12834,9 +12834,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return labelBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge gauge_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge gauge_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder> gaugeBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder> gaugeBuilder_;
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return Whether the gauge field is set.
@@ -12848,9 +12848,9 @@ public boolean hasGauge() {
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return The gauge.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge getGauge() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getGauge() {
         if (gaugeBuilder_ == null) {
-          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
+          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
         } else {
           return gaugeBuilder_.getMessage();
         }
@@ -12858,7 +12858,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge value) {
+      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12875,7 +12875,7 @@ public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_go
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       public Builder setGauge(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder builderForValue) {
         if (gaugeBuilder_ == null) {
           gauge_ = builderForValue.build();
         } else {
@@ -12888,11 +12888,11 @@ public Builder setGauge(
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge value) {
+      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (((bitField0_ & 0x00000002) != 0) &&
             gauge_ != null &&
-            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance()) {
+            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance()) {
             getGaugeBuilder().mergeFrom(value);
           } else {
             gauge_ = value;
@@ -12922,7 +12922,7 @@ public Builder clearGauge() {
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder getGaugeBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder getGaugeBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
         return internalGetGaugeFieldBuilder().getBuilder();
@@ -12930,23 +12930,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
         if (gaugeBuilder_ != null) {
           return gaugeBuilder_.getMessageOrBuilder();
         } else {
           return gauge_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.getDefaultInstance() : gauge_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
         }
       }
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder> 
           internalGetGaugeFieldBuilder() {
         if (gaugeBuilder_ == null) {
           gaugeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.GaugeOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder>(
                   getGauge(),
                   getParentForChildren(),
                   isClean());
@@ -12955,9 +12955,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return gaugeBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter counter_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter counter_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder> counterBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder> counterBuilder_;
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        * @return Whether the counter field is set.
@@ -12969,9 +12969,9 @@ public boolean hasCounter() {
        * optional .io.prometheus.client.Counter counter = 3;
        * @return The counter.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter getCounter() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getCounter() {
         if (counterBuilder_ == null) {
-          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
+          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
         } else {
           return counterBuilder_.getMessage();
         }
@@ -12979,7 +12979,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter value) {
+      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12996,7 +12996,7 @@ public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Counter counter = 3;
        */
       public Builder setCounter(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder builderForValue) {
         if (counterBuilder_ == null) {
           counter_ = builderForValue.build();
         } else {
@@ -13009,11 +13009,11 @@ public Builder setCounter(
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter value) {
+      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (((bitField0_ & 0x00000004) != 0) &&
             counter_ != null &&
-            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance()) {
+            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance()) {
             getCounterBuilder().mergeFrom(value);
           } else {
             counter_ = value;
@@ -13043,7 +13043,7 @@ public Builder clearCounter() {
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder getCounterBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder getCounterBuilder() {
         bitField0_ |= 0x00000004;
         onChanged();
         return internalGetCounterFieldBuilder().getBuilder();
@@ -13051,23 +13051,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder getCounterOrBuilder() {
         if (counterBuilder_ != null) {
           return counterBuilder_.getMessageOrBuilder();
         } else {
           return counter_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.getDefaultInstance() : counter_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
         }
       }
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder> 
           internalGetCounterFieldBuilder() {
         if (counterBuilder_ == null) {
           counterBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.CounterOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder>(
                   getCounter(),
                   getParentForChildren(),
                   isClean());
@@ -13076,9 +13076,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return counterBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary summary_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary summary_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder> summaryBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder> summaryBuilder_;
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        * @return Whether the summary field is set.
@@ -13090,9 +13090,9 @@ public boolean hasSummary() {
        * optional .io.prometheus.client.Summary summary = 4;
        * @return The summary.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary getSummary() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getSummary() {
         if (summaryBuilder_ == null) {
-          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
+          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
         } else {
           return summaryBuilder_.getMessage();
         }
@@ -13100,7 +13100,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary value) {
+      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13117,7 +13117,7 @@ public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Summary summary = 4;
        */
       public Builder setSummary(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder builderForValue) {
         if (summaryBuilder_ == null) {
           summary_ = builderForValue.build();
         } else {
@@ -13130,11 +13130,11 @@ public Builder setSummary(
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary value) {
+      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             summary_ != null &&
-            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance()) {
+            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance()) {
             getSummaryBuilder().mergeFrom(value);
           } else {
             summary_ = value;
@@ -13164,7 +13164,7 @@ public Builder clearSummary() {
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder getSummaryBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder getSummaryBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetSummaryFieldBuilder().getBuilder();
@@ -13172,23 +13172,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
         if (summaryBuilder_ != null) {
           return summaryBuilder_.getMessageOrBuilder();
         } else {
           return summary_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.getDefaultInstance() : summary_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
         }
       }
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder> 
           internalGetSummaryFieldBuilder() {
         if (summaryBuilder_ == null) {
           summaryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.SummaryOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder>(
                   getSummary(),
                   getParentForChildren(),
                   isClean());
@@ -13197,9 +13197,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return summaryBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped untyped_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped untyped_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder> untypedBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder> untypedBuilder_;
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return Whether the untyped field is set.
@@ -13211,9 +13211,9 @@ public boolean hasUntyped() {
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return The untyped.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped getUntyped() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getUntyped() {
         if (untypedBuilder_ == null) {
-          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
+          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
         } else {
           return untypedBuilder_.getMessage();
         }
@@ -13221,7 +13221,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped value) {
+      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13238,7 +13238,7 @@ public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       public Builder setUntyped(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder builderForValue) {
         if (untypedBuilder_ == null) {
           untyped_ = builderForValue.build();
         } else {
@@ -13251,11 +13251,11 @@ public Builder setUntyped(
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped value) {
+      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (((bitField0_ & 0x00000010) != 0) &&
             untyped_ != null &&
-            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance()) {
+            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance()) {
             getUntypedBuilder().mergeFrom(value);
           } else {
             untyped_ = value;
@@ -13285,7 +13285,7 @@ public Builder clearUntyped() {
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder getUntypedBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder getUntypedBuilder() {
         bitField0_ |= 0x00000010;
         onChanged();
         return internalGetUntypedFieldBuilder().getBuilder();
@@ -13293,23 +13293,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
         if (untypedBuilder_ != null) {
           return untypedBuilder_.getMessageOrBuilder();
         } else {
           return untyped_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.getDefaultInstance() : untyped_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
         }
       }
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder> 
           internalGetUntypedFieldBuilder() {
         if (untypedBuilder_ == null) {
           untypedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.UntypedOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder>(
                   getUntyped(),
                   getParentForChildren(),
                   isClean());
@@ -13318,9 +13318,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return untypedBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram histogram_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram histogram_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder> histogramBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder> histogramBuilder_;
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return Whether the histogram field is set.
@@ -13332,9 +13332,9 @@ public boolean hasHistogram() {
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return The histogram.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram getHistogram() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getHistogram() {
         if (histogramBuilder_ == null) {
-          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
+          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
         } else {
           return histogramBuilder_.getMessage();
         }
@@ -13342,7 +13342,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram value) {
+      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13359,7 +13359,7 @@ public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.co
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       public Builder setHistogram(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder builderForValue) {
         if (histogramBuilder_ == null) {
           histogram_ = builderForValue.build();
         } else {
@@ -13372,11 +13372,11 @@ public Builder setHistogram(
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram value) {
+      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (((bitField0_ & 0x00000020) != 0) &&
             histogram_ != null &&
-            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance()) {
+            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance()) {
             getHistogramBuilder().mergeFrom(value);
           } else {
             histogram_ = value;
@@ -13406,7 +13406,7 @@ public Builder clearHistogram() {
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder getHistogramBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder getHistogramBuilder() {
         bitField0_ |= 0x00000020;
         onChanged();
         return internalGetHistogramFieldBuilder().getBuilder();
@@ -13414,23 +13414,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
         if (histogramBuilder_ != null) {
           return histogramBuilder_.getMessageOrBuilder();
         } else {
           return histogram_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.getDefaultInstance() : histogram_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
         }
       }
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder> 
           internalGetHistogramFieldBuilder() {
         if (histogramBuilder_ == null) {
           histogramBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.HistogramOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder>(
                   getHistogram(),
                   getParentForChildren(),
                   isClean());
@@ -13483,12 +13483,12 @@ public Builder clearTimestampMs() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Metric)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13524,7 +13524,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13577,17 +13577,17 @@ public interface MetricFamilyOrBuilder extends
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType getType();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType getType();
 
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getMetric(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getMetric(int index);
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
@@ -13595,12 +13595,12 @@ public interface MetricFamilyOrBuilder extends
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricOrBuilderList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder getMetricOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index);
 
     /**
@@ -13633,7 +13633,7 @@ public static final class MetricFamily extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 3,
+        /* patch= */ 4,
         /* suffix= */ "",
         "MetricFamily");
     }
@@ -13651,15 +13651,15 @@ private MetricFamily() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.Builder.class);
     }
 
     private int bitField0_;
@@ -13774,26 +13774,26 @@ public java.lang.String getHelp() {
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType getType() {
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.forNumber(type_);
-      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.COUNTER : result;
+    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType getType() {
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.forNumber(type_);
+      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.COUNTER : result;
     }
 
     public static final int METRIC_FIELD_NUMBER = 4;
     @SuppressWarnings("serial")
-    private java.util.List metric_;
+    private java.util.List metric_;
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List getMetricList() {
+    public java.util.List getMetricList() {
       return metric_;
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getMetricOrBuilderList() {
       return metric_;
     }
@@ -13808,14 +13808,14 @@ public int getMetricCount() {
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getMetric(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getMetric(int index) {
       return metric_.get(index);
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder getMetricOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index) {
       return metric_.get(index);
     }
@@ -13934,10 +13934,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily) obj;
 
       if (hasName() != other.hasName()) return false;
       if (hasName()) {
@@ -13996,44 +13996,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14041,26 +14041,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14073,7 +14073,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14094,21 +14094,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.MetricFamily)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamilyOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamilyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.newBuilder()
       private Builder() {
 
       }
@@ -14139,17 +14139,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -14157,15 +14157,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result) {
         if (metricBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             metric_ = java.util.Collections.unmodifiableList(metric_);
@@ -14177,7 +14177,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -14201,16 +14201,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.getDefaultInstance()) return this;
         if (other.hasName()) {
           name_ = other.name_;
           bitField0_ |= 0x00000001;
@@ -14293,8 +14293,8 @@ public Builder mergeFrom(
               } // case 18
               case 24: {
                 int tmpRaw = input.readEnum();
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType tmpValue =
-                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.forNumber(tmpRaw);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType tmpValue =
+                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.forNumber(tmpRaw);
                 if (tmpValue == null) {
                   mergeUnknownVarintField(3, tmpRaw);
                 } else {
@@ -14304,9 +14304,9 @@ public Builder mergeFrom(
                 break;
               } // case 24
               case 34: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.parser(),
                         extensionRegistry);
                 if (metricBuilder_ == null) {
                   ensureMetricIsMutable();
@@ -14511,16 +14511,16 @@ public Builder setHelpBytes(
        * @return The type.
        */
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType getType() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.forNumber(type_);
-        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType.COUNTER : result;
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType getType() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.forNumber(type_);
+        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.COUNTER : result;
       }
       /**
        * optional .io.prometheus.client.MetricType type = 3;
        * @param value The type to set.
        * @return This builder for chaining.
        */
-      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricType value) {
+      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType value) {
         if (value == null) { throw new NullPointerException(); }
         bitField0_ |= 0x00000004;
         type_ = value.getNumber();
@@ -14538,22 +14538,22 @@ public Builder clearType() {
         return this;
       }
 
-      private java.util.List metric_ =
+      private java.util.List metric_ =
         java.util.Collections.emptyList();
       private void ensureMetricIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          metric_ = new java.util.ArrayList(metric_);
+          metric_ = new java.util.ArrayList(metric_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder> metricBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder> metricBuilder_;
 
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List getMetricList() {
+      public java.util.List getMetricList() {
         if (metricBuilder_ == null) {
           return java.util.Collections.unmodifiableList(metric_);
         } else {
@@ -14573,7 +14573,7 @@ public int getMetricCount() {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric getMetric(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getMetric(int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);
         } else {
@@ -14584,7 +14584,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14601,7 +14601,7 @@ public Builder setMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.set(index, builderForValue.build());
@@ -14614,7 +14614,7 @@ public Builder setMetric(
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric value) {
+      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14631,7 +14631,7 @@ public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14648,7 +14648,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(builderForValue.build());
@@ -14662,7 +14662,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(index, builderForValue.build());
@@ -14676,7 +14676,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addAllMetric(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -14716,14 +14716,14 @@ public Builder removeMetric(int index) {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder getMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder getMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder getMetricOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder getMetricOrBuilder(
           int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);  } else {
@@ -14733,7 +14733,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricOrBuilderList() {
         if (metricBuilder_ != null) {
           return metricBuilder_.getMessageOrBuilderList();
@@ -14744,31 +14744,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder addMetricBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder addMetricBuilder() {
         return internalGetMetricFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder addMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder addMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricBuilderList() {
         return internalGetMetricFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder> 
           internalGetMetricFieldBuilder() {
         if (metricBuilder_ == null) {
           metricBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder>(
                   metric_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -14862,12 +14862,12 @@ public Builder setUnitBytes(
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.MetricFamily)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -14903,7 +14903,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics.MetricFamily getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -15028,7 +15028,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       "\002\022\013\n\007UNTYPED\020\003\022\r\n\tHISTOGRAM\020\004\022\023\n\017GAUGE_H" +
       "ISTOGRAM\020\005B\212\001\nLio.prometheus.metrics.exp" +
       "ositionformats.generated.com_google_prot" +
-      "obuf_4_33_3Z:github.com/prometheus/clien" +
+      "obuf_4_33_4Z:github.com/prometheus/clien" +
       "t_model/go;io_prometheus_client"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
index d05428b2a..feaf15b22 100644
--- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
+++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
@@ -6,7 +6,7 @@
 import com.google.protobuf.TextFormat;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.expositionformats.ExpositionFormatWriter;
-import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics;
+import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics;
 import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot;
diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
index 2125bde8c..e2e669c8c 100644
--- a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
+++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
@@ -3,7 +3,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import io.prometheus.metrics.config.EscapingScheme;
-import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_3.Metrics;
+import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics;
 import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl;
 import io.prometheus.metrics.expositionformats.internal.ProtobufUtil;
 import io.prometheus.metrics.model.snapshots.MetricSnapshot;

From 72cd8a0e9ba7f5b3011281efe90c5e5d47e21208 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 16 Jan 2026 06:12:27 +0000
Subject: [PATCH 009/110] chore(deps): update eclipse-temurin:25.0.1_8-jre
 docker digest to 96bccca (#1782)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| eclipse-temurin | final | digest | `968f191` โ†’ `96bccca` |
| eclipse-temurin |  | digest | `968f191` โ†’ `96bccca` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Configuration

๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

๐Ÿšฆ **Automerge**: Enabled.

โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/prometheus/client_java).



Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile  | 2 +-
 .../example-exporter-opentelemetry/oats-tests/http/Dockerfile   | 2 +-
 examples/example-native-histogram/docker-compose.yaml           | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile
index 7492b704d..ee5340755 100644
--- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile
+++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:25.0.1_8-jre@sha256:968f1917fcfa8250e72c39c68118798a5c86923a709c174578179b318f9033e6
+FROM eclipse-temurin:25.0.1_8-jre@sha256:96bccca442e8842a7366df338f5960e3342862ea6b8d42b97009a3dfd8602547
 
 COPY target/example-exporter-opentelemetry.jar ./app.jar
 # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same
diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile
index 0362e733a..5e8ea0db7 100644
--- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile
+++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:25.0.1_8-jre@sha256:968f1917fcfa8250e72c39c68118798a5c86923a709c174578179b318f9033e6
+FROM eclipse-temurin:25.0.1_8-jre@sha256:96bccca442e8842a7366df338f5960e3342862ea6b8d42b97009a3dfd8602547
 
 COPY target/example-exporter-opentelemetry.jar ./app.jar
 
diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml
index c39738129..e99fafeef 100644
--- a/examples/example-native-histogram/docker-compose.yaml
+++ b/examples/example-native-histogram/docker-compose.yaml
@@ -1,7 +1,7 @@
 version: "3"
 services:
   example-application:
-    image: eclipse-temurin:25.0.1_8-jre@sha256:968f1917fcfa8250e72c39c68118798a5c86923a709c174578179b318f9033e6
+    image: eclipse-temurin:25.0.1_8-jre@sha256:96bccca442e8842a7366df338f5960e3342862ea6b8d42b97009a3dfd8602547
     network_mode: host
     volumes:
       - ./target/example-native-histogram.jar:/example-native-histogram.jar

From 034a5d9c2500d325b6d94bf71f9189dd88a2a6ae Mon Sep 17 00:00:00 2001
From: Gregor Zeitlinger 
Date: Mon, 19 Jan 2026 12:29:50 +0100
Subject: [PATCH 010/110] fix blog post url (#1787)

Signed-off-by: Gregor Zeitlinger 
---
 .github/workflows/build.yml              | 2 +-
 .github/workflows/test-release-build.yml | 2 +-
 docs/content/_index.md                   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 012e79248..1b0973fef 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,7 +17,7 @@ jobs:
           version: v2026.1.1
           sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57
       - name: Cache local Maven repository
-        uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
+        uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
         with:
           path: ~/.m2/repository
           key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml
index 468a39f22..29e6b8a9e 100644
--- a/.github/workflows/test-release-build.yml
+++ b/.github/workflows/test-release-build.yml
@@ -21,7 +21,7 @@ jobs:
           version: v2026.1.1
           sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57
       - name: Cache local Maven repository
-        uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
+        uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
         with:
           path: ~/.m2/repository
           key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
diff --git a/docs/content/_index.md b/docs/content/_index.md
index 3b8966cf3..28e5165cd 100644
--- a/docs/content/_index.md
+++ b/docs/content/_index.md
@@ -30,7 +30,7 @@ synchronization. See Javadoc comments in
 **More Info**
 
 The Grafana Labs Blog has a post
-[Introducing the Prometheus Java Client 1.0.0](https://grafana.com/blog/2023/09/27/introducing-the-prometheus-java-client-1.0.0/) 
+[Introducing the Prometheus Java Client 1.0.0](https://grafana.com/blog/2023/09/27/introducing-the-prometheus-java-client-1-0-0/) 
 with a good overview of the release.
 
 There will also be a presentation at the [PromCon](https://promcon.io) conference on 29 Sep 2023.

From efd7b184fa3ddde1b8ac4aadf5e371e668fb3b77 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 19 Jan 2026 11:37:52 +0000
Subject: [PATCH 011/110] chore(deps): update dependency
 org.codehaus.mojo:versions-maven-plugin to v2.21.0 (#1786)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[org.codehaus.mojo:versions-maven-plugin](https://www.mojohaus.org/versions/)
([source](https://redirect.github.com/mojohaus/versions)) | `2.20.1` โ†’
`2.21.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.codehaus.mojo:versions-maven-plugin/2.21.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.codehaus.mojo:versions-maven-plugin/2.20.1/2.21.0?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

mojohaus/versions (org.codehaus.mojo:versions-maven-plugin) ### [`v2.21.0`](https://redirect.github.com/mojohaus/versions/releases/tag/2.21.0) [Compare Source](https://redirect.github.com/mojohaus/versions/compare/2.20.1...2.21.0) #### ๐Ÿš€ New features and improvements - Add versions.skip parameter to skip plugin execution ([#​1328](https://redirect.github.com/mojohaus/versions/pull/1328)) [@​jorgheymans](https://redirect.github.com/jorgheymans) #### ๐Ÿ› Bug Fixes - [#​1331](https://redirect.github.com/mojohaus/versions/issues/1331): Fix NPE in restrictionForUnchangedSegment if actual version is null ([#​1332](https://redirect.github.com/mojohaus/versions/pull/1332)) [@​andrzejj0](https://redirect.github.com/andrzejj0) - [#​1310](https://redirect.github.com/mojohaus/versions/issues/1310): Corrected UseDepVersionMojo + handling a similar case in SetMojo, SetScmTagMojo, UpdateChildModulesMojo ([#​1322](https://redirect.github.com/mojohaus/versions/pull/1322)) [@​andrzejj0](https://redirect.github.com/andrzejj0) - UseDepVersionMoto should process all projects on the project list ([#​1320](https://redirect.github.com/mojohaus/versions/pull/1320)) [@​andrzejj0](https://redirect.github.com/andrzejj0) - Fixed [#​1317](https://redirect.github.com/mojohaus/versions/issues/1317): Regression coming from ArtifactVersions::filter when currentVersion is null and ignoredVersions is not null ([#​1319](https://redirect.github.com/mojohaus/versions/pull/1319)) [@​andrzejj0](https://redirect.github.com/andrzejj0) #### ๐Ÿ“ Documentation updates - Fix README typos in Contributing section ([#​1337](https://redirect.github.com/mojohaus/versions/pull/1337)) [@​kranthipoturaju](https://redirect.github.com/kranthipoturaju) - [#​1323](https://redirect.github.com/mojohaus/versions/issues/1323): Documentation ([#​1324](https://redirect.github.com/mojohaus/versions/pull/1324)) [@​andrzejj0](https://redirect.github.com/andrzejj0) #### ๐Ÿ“ฆ Dependency updates - Bump byteBuddyVersion from 1.18.3 to 1.18.4 ([#​1335](https://redirect.github.com/mojohaus/versions/pull/1335)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) - Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.4.0 to 3.5.0 ([#​1333](https://redirect.github.com/mojohaus/versions/pull/1333)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) - Bump org.codehaus.plexus:plexus-archiver from 4.10.4 to 4.11.0 ([#​1334](https://redirect.github.com/mojohaus/versions/pull/1334)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) - Bump org.codehaus.mojo:mojo-parent from 94 to 95 ([#​1330](https://redirect.github.com/mojohaus/versions/pull/1330)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) - Bump byteBuddyVersion from 1.18.2 to 1.18.3 ([#​1329](https://redirect.github.com/mojohaus/versions/pull/1329)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) - Bump org.apache.commons:commons-text from 1.14.0 to 1.15.0 ([#​1325](https://redirect.github.com/mojohaus/versions/pull/1325)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) - Bump byteBuddyVersion from 1.18.1 to 1.18.2 ([#​1318](https://redirect.github.com/mojohaus/versions/pull/1318)) @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5a64862cf..54c3ec2de 100644 --- a/pom.xml +++ b/pom.xml @@ -293,7 +293,7 @@ org.codehaus.mojo versions-maven-plugin - 2.20.1 + 2.21.0 file://${project.basedir}/version-rules.xml From 0d227f9aa630f8cf9fc28c53cafe6ca71d10b61c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:38:21 +0000 Subject: [PATCH 012/110] chore(deps): update dependency mise to v2026.1.4 (#1785) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [mise](https://redirect.github.com/jdx/mise) | patch | `v2026.1.1` โ†’ `v2026.1.4` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
jdx/mise (mise) ### [`v2026.1.4`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.4) [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.3...v2026.1.4) This release brings significant improvements to dependency management, task execution, and backend flexibility, with a focus on reproducibility and performance. The Conda backend now supports dependency locking for reproducible installations, ensuring your environments remain consistent across machines and time. The HTTP backend has been enhanced with JSON filtering and Tera templating for more flexible version extraction from web sources. Task execution sees improvements in monorepo support and performance, while several bug fixes address deadlocks and path resolution issues. ##### Highlights **Reproducible Conda Environments** - The [Conda backend](https://mise.jdx.dev/dev-tools/backends/conda.html) now supports dependency locking ([#​7708](https://redirect.github.com/jdx/mise/pull/7708)), allowing you to freeze exact package versions for reproducible installations. This ensures your conda environments remain identical across different machines and over time, crucial for scientific computing and data analysis workflows. **Enhanced HTTP Backend** - The [HTTP backend](https://mise.jdx.dev/dev-tools/backends/http.html) gains powerful new features for version extraction ([#​7707](https://redirect.github.com/jdx/mise/pull/7707), [#​7723](https://redirect.github.com/jdx/mise/pull/7723)). You can now use JSON filter syntax to extract versions from complex API responses, and Tera templating provides flexible string manipulation. This makes it easier to integrate tools that don't follow standard versioning patterns. **Better Monorepo Task Support** - [Task execution](https://mise.jdx.dev/tasks/) in monorepos is now more flexible with explicit config root listing via `[monorepo].config_roots` ([#​7705](https://redirect.github.com/jdx/mise/pull/7705)). Task dependencies can now use environment variables ([#​7724](https://redirect.github.com/jdx/mise/pull/7724)), and path resolution for dependencies works correctly across monorepo boundaries ([#​7698](https://redirect.github.com/jdx/mise/pull/7698), [#​7699](https://redirect.github.com/jdx/mise/pull/7699)). ##### Bug Fixes - Fixed a deadlock that could occur when using venv/go backends during environment resolution ([@​stk0vrfl0w](https://redirect.github.com/stk0vrfl0w) in [#​7696](https://redirect.github.com/jdx/mise/pull/7696)) - Resolved hardcoded library paths in conda packages that prevented proper relocation ([#​7713](https://redirect.github.com/jdx/mise/pull/7713)) - Tool stubs are now properly exempted from lockfile requirements ([#​7729](https://redirect.github.com/jdx/mise/pull/7729)) - Python's `ls-remote` command now correctly sorts CPython versions at the end of the output ([#​7721](https://redirect.github.com/jdx/mise/pull/7721)) - Remote task files are now resolved before display and validation commands ([@​yannrouillard](https://redirect.github.com/yannrouillard) in [#​7681](https://redirect.github.com/jdx/mise/pull/7681)) ##### Performance Task listing performance has been restored to previous levels by fixing a caching regression ([#​7716](https://redirect.github.com/jdx/mise/pull/7716)). Users with many tasks should notice significantly faster `mise tasks` commands. ##### Registry Updates Several tools have been migrated to more reliable backends: - **Dotnet**, **Lua**, **Redis**, and **Postgres** now use vfox backends by default for better cross-platform support - **Kotlin** and **Crystal** moved to GitHub backends for direct releases - **SQLite** and **Make** now use the conda backend - **Meson** uses pipx for Python-based installation - Added Smithy support via aqua backend ([#​7661](https://redirect.github.com/jdx/mise/pull/7661)) Low-usage ASDF plugins have been removed to streamline the registry ([#​7701](https://redirect.github.com/jdx/mise/pull/7701)). ##### New Contributors Welcome to [@​yannrouillard](https://redirect.github.com/yannrouillard) and [@​stk0vrfl0w](https://redirect.github.com/stk0vrfl0w) who made their first contributions to mise! ### [`v2026.1.3`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.3) [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.1.2...v2026.1.3) This release introduces several powerful new features for mise, including private artifact storage via S3, enhanced upgrade controls, and improved hook management. We've also fixed important bugs affecting npm dependencies, GitHub authentication, and task inheritance in monorepos. ##### Highlights **S3 Backend Support** - You can now use Amazon S3 for private artifact storage, enabling secure distribution of internal tools and binaries. This is particularly useful for enterprise environments that need to host proprietary tools. See the [S3 backend documentation](https://mise.jdx.dev/backends/s3.html) for setup instructions. ([@​jdx](https://redirect.github.com/jdx), [#​7668](https://redirect.github.com/jdx/mise/pull/7668)) **Enhanced Upgrade Command** - The `mise upgrade` command now includes an `--exclude` flag to skip specific tools during bulk upgrades, and benefits from improved tab completion that shows only installed tools. This gives you more control when updating your development environment. Learn more in the [upgrade command documentation](https://mise.jdx.dev/cli/upgrade.html). ([@​jdx](https://redirect.github.com/jdx), [#​7669](https://redirect.github.com/jdx/mise/pull/7669), [#​7670](https://redirect.github.com/jdx/mise/pull/7670)) **Hook and Environment Control** - New `--no-hooks` and `--no-env` flags provide fine-grained control over mise's behavior, allowing you to skip hooks or environment variable loading when needed. This is helpful for debugging or when you need to run mise in isolation. ([@​aacebedo](https://redirect.github.com/aacebedo), [#​7560](https://redirect.github.com/jdx/mise/pull/7560)) ##### Bug Fixes - **npm circular dependencies** - Fixed an issue where mise could get stuck in a loop when npm itself was listed as a dependency ([@​AprilNEA](https://redirect.github.com/AprilNEA), [#​7644](https://redirect.github.com/jdx/mise/pull/7644)) - **GitHub authentication** - Improved token handling to properly fall back to `GITHUB_TOKEN` when accessing github.com, resolving authentication issues for private repositories ([@​subdigital](https://redirect.github.com/subdigital), [#​7667](https://redirect.github.com/jdx/mise/pull/7667), [#​7673](https://redirect.github.com/jdx/mise/pull/7673)) - **Task inheritance** - Tasks defined in parent directories are now properly inherited in monorepo setups, making it easier to share common tasks across projects ([@​chadxz](https://redirect.github.com/chadxz), [#​7643](https://redirect.github.com/jdx/mise/pull/7643)) - **vfox backend upgrades** - Fixed upgrading tools that use symlinked installations in the vfox backend ([@​TyceHerrman](https://redirect.github.com/TyceHerrman), [#​7012](https://redirect.github.com/jdx/mise/pull/7012)) - **Architecture validation** - mise now properly rejects tool downloads when the architecture doesn't match your system, preventing installation of incompatible binaries ([@​jdx](https://redirect.github.com/jdx), [#​7672](https://redirect.github.com/jdx/mise/pull/7672)) - **Self-update efficiency** - The self-update command now skips unnecessary operations when you're already on the latest version ([@​jdx](https://redirect.github.com/jdx), [#​7666](https://redirect.github.com/jdx/mise/pull/7666)) ##### Registry Updates Added support for new tools: - **oh-my-posh** - The popular cross-shell prompt theme engine ([@​scop](https://redirect.github.com/scop), [#​7659](https://redirect.github.com/jdx/mise/pull/7659)) - **bibtex-tidy** - A BibTeX file formatter and cleaner ([@​3w36zj6](https://redirect.github.com/3w36zj6), [#​7677](https://redirect.github.com/jdx/mise/pull/7677)) Also fixed the kscript configuration by removing an incorrect bin\_path option ([@​risu729](https://redirect.github.com/risu729), [#​7693](https://redirect.github.com/jdx/mise/pull/7693)). ##### New Contributors Welcome to [@​AprilNEA](https://redirect.github.com/AprilNEA), [@​opswole](https://redirect.github.com/opswole), [@​subdigital](https://redirect.github.com/subdigital), and [@​aacebedo](https://redirect.github.com/aacebedo) who made their first contributions to mise! ### [`v2026.1.2`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.2) [Compare Source](https://redirect.github.com/jdx/mise/compare/vfox-v2026.1.1...vfox-v2026.1.2) mise v2026.1.2 includes several important bug fixes and security improvements, particularly addressing version management edge cases and enhancing the tool's reliability across different scenarios. This release also strengthens our GitHub workflow security to prevent potential code execution from untrusted sources, ensuring the safety of our development process and community contributions. ##### Bug Fixes **Version Management Improvements** - Fixed an issue where pre-release versions were incorrectly included when using `latest` with `install_before` ([#​7631](https://redirect.github.com/jdx/mise/pull/7631)) - thanks to [@​koh-sh](https://redirect.github.com/koh-sh) - Enhanced version filtering to properly exclude test versions (e.g., `1.0.0-test`) from stable version lists ([#​7647](https://redirect.github.com/jdx/mise/pull/7647)) - thanks to [@​belgio99](https://redirect.github.com/belgio99) - Resolved a year-boundary bug that caused `mise self-update` to fail when crossing into a new year ([#​7611](https://redirect.github.com/jdx/mise/pull/7611)) **Backend and Asset Detection** - Added support for `.artifactbundle.zip` files in asset selection, improving compatibility with certain tool distributions ([#​7657](https://redirect.github.com/jdx/mise/pull/7657)) - thanks to [@​swizzlr](https://redirect.github.com/swizzlr) - Fixed HTTP backend to properly fallback to configuration when fetching tool options ([#​7655](https://redirect.github.com/jdx/mise/pull/7655)) - thanks to [@​roele](https://redirect.github.com/roele) **Task System** - Corrected tool inheritance behavior in [tasks](https://mise.jdx.dev/tasks/) when using intermediate parent configurations ([#​7637](https://redirect.github.com/jdx/mise/pull/7637)) - thanks to [@​chadxz](https://redirect.github.com/chadxz) ##### Security - Implemented safeguards in our GitHub workflows to prevent potential code execution from untrusted forks, enhancing the security of our development process ##### New Tools - Added support for [oha](https://redirect.github.com/hatoo/oha), a modern HTTP load testing tool ([#​7633](https://redirect.github.com/jdx/mise/pull/7633)) - thanks to [@​jylenhof](https://redirect.github.com/jylenhof) ##### New Contributors Welcome to our first-time contributors! - [@​swizzlr](https://redirect.github.com/swizzlr), [@​belgio99](https://redirect.github.com/belgio99), [@​gmalinowski](https://redirect.github.com/gmalinowski), [@​chadxz](https://redirect.github.com/chadxz), [@​shina1024](https://redirect.github.com/shina1024), [@​jonathanagustin](https://redirect.github.com/jonathanagustin), and [@​turbocrime](https://redirect.github.com/turbocrime)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - "before 4am on monday" (UTC), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .github/workflows/acceptance-tests.yml | 4 ++-- .github/workflows/build.yml | 4 ++-- .github/workflows/github-pages.yaml | 4 ++-- .github/workflows/lint-rest.yml | 4 ++-- .github/workflows/native-tests.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- .github/workflows/test-release-build.yml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 8f22554bd..e58275b27 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Run acceptance tests run: mise run acceptance-test diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b0973fef..fe290ebd6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,8 +14,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Cache local Maven repository uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index 814cfef61..b83a25b2d 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -39,8 +39,8 @@ jobs: fetch-depth: 0 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 cache: "false" - name: Setup Pages id: pages diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 7180d9999..22293dbe1 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Lint run: mise run lint:rest diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index bad40289e..c9667635b 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -15,8 +15,8 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 working_directory: .mise/envs/native - name: Run native tests working-directory: .mise/envs/native diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a8d3d90c9..a2d6d0df0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,8 +26,8 @@ jobs: - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 cache: false - name: Build release version diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 29e6b8a9e..db240c627 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -18,8 +18,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 with: - version: v2026.1.1 - sha256: 986e4630dfdfaae41d09c0317507e252c7403d72839fc66844b534c120a3dc57 + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Cache local Maven repository uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: From 444b70213ac0a395ddb88963e3fcfb32063d0b00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:38:46 +0000 Subject: [PATCH 013/110] chore(deps): update jdx/mise-action action to v3.6.0 (#1784) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [jdx/mise-action](https://redirect.github.com/jdx/mise-action) | action | minor | `v3.5.1` โ†’ `v3.6.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
jdx/mise-action (jdx/mise-action) ### [`v3.6.0`](https://redirect.github.com/jdx/mise-action/releases/tag/v3.6.0) [Compare Source](https://redirect.github.com/jdx/mise-action/compare/v3.5.1...v3.6.0) #### What's Changed - chore(deps): update dependency prettier to v3.7.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​331](https://redirect.github.com/jdx/mise-action/pull/331) - chore(deps): update github/codeql-action digest to [`497990d`](https://redirect.github.com/jdx/mise-action/commit/497990d) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​324](https://redirect.github.com/jdx/mise-action/pull/324) - chore(deps): update dependency typescript-eslint to v8.48.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​332](https://redirect.github.com/jdx/mise-action/pull/332) - chore(deps): update dependency [@​types/handlebars](https://redirect.github.com/types/handlebars) to v4.1.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​314](https://redirect.github.com/jdx/mise-action/pull/314) - chore(deps): update dependency [@​eslint/eslintrc](https://redirect.github.com/eslint/eslintrc) to v3.3.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​333](https://redirect.github.com/jdx/mise-action/pull/333) - chore(deps): lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​336](https://redirect.github.com/jdx/mise-action/pull/336) - chore(deps): lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​338](https://redirect.github.com/jdx/mise-action/pull/338) - fix: use mise\_dir input when specified by [@​jdx](https://redirect.github.com/jdx) in [#​339](https://redirect.github.com/jdx/mise-action/pull/339) - feat: add option to disable shims in PATH by [@​jdx](https://redirect.github.com/jdx) in [#​340](https://redirect.github.com/jdx/mise-action/pull/340) - fix: pass environment variables to mise commands by [@​jdx](https://redirect.github.com/jdx) in [#​341](https://redirect.github.com/jdx/mise-action/pull/341) - chore(deps): lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​344](https://redirect.github.com/jdx/mise-action/pull/344) - chore(deps): update github/codeql-action digest to [`45c3735`](https://redirect.github.com/jdx/mise-action/commit/45c3735) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​346](https://redirect.github.com/jdx/mise-action/pull/346) - chore(deps): lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​348](https://redirect.github.com/jdx/mise-action/pull/348) - chore(deps): update actions/checkout action to v6 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​350](https://redirect.github.com/jdx/mise-action/pull/350) - chore(deps): lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​352](https://redirect.github.com/jdx/mise-action/pull/352) - docs: fix description for `mise_toml` input by [@​quad](https://redirect.github.com/quad) in [#​351](https://redirect.github.com/jdx/mise-action/pull/351) - fix: make mise self-update output visible in logs by [@​nikobockerman](https://redirect.github.com/nikobockerman) in [#​355](https://redirect.github.com/jdx/mise-action/pull/355) - chore(deps): update actions/setup-node action to v6 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​356](https://redirect.github.com/jdx/mise-action/pull/356) - chore(deps): lock file maintenance by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​358](https://redirect.github.com/jdx/mise-action/pull/358) - chore(deps): update actions/setup-node digest to [`6044e13`](https://redirect.github.com/jdx/mise-action/commit/6044e13) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​361](https://redirect.github.com/jdx/mise-action/pull/361) - fix(cache): isolate cache keys per working\_directory in monorepos by [@​chadxz](https://redirect.github.com/chadxz) in [#​360](https://redirect.github.com/jdx/mise-action/pull/360) - chore(deps): update github/codeql-action digest to [`4bdb89f`](https://redirect.github.com/jdx/mise-action/commit/4bdb89f) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​362](https://redirect.github.com/jdx/mise-action/pull/362) - chore(deps): update dependency [@​types/handlebars](https://redirect.github.com/types/handlebars) to v4.1.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​349](https://redirect.github.com/jdx/mise-action/pull/349) - chore(deps): update actions/upload-artifact action to v6 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​357](https://redirect.github.com/jdx/mise-action/pull/357) - chore: release v3.6.0 by [@​mise-en-dev](https://redirect.github.com/mise-en-dev) in [#​342](https://redirect.github.com/jdx/mise-action/pull/342) #### New Contributors - [@​quad](https://redirect.github.com/quad) made their first contribution in [#​351](https://redirect.github.com/jdx/mise-action/pull/351) - [@​nikobockerman](https://redirect.github.com/nikobockerman) made their first contribution in [#​355](https://redirect.github.com/jdx/mise-action/pull/355) - [@​chadxz](https://redirect.github.com/chadxz) made their first contribution in [#​360](https://redirect.github.com/jdx/mise-action/pull/360) **Full Changelog**:
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .github/workflows/acceptance-tests.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/github-pages.yaml | 2 +- .github/workflows/lint-rest.yml | 2 +- .github/workflows/native-tests.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test-release-build.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index e58275b27..e2bce6c24 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -13,7 +13,7 @@ jobs: with: persist-credentials: false uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe290ebd6..b863384d7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 with: persist-credentials: false - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index b83a25b2d..13ff839b8 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -37,7 +37,7 @@ jobs: persist-credentials: false fetch-tags: "true" fetch-depth: 0 - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 22293dbe1..f9716802c 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -13,7 +13,7 @@ jobs: with: persist-credentials: false uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index c9667635b..fe0f5cb07 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -13,7 +13,7 @@ jobs: with: persist-credentials: false uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a2d6d0df0..62c52ed63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ jobs: with: persist-credentials: false - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index db240c627..8d2597075 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 with: persist-credentials: false - - uses: jdx/mise-action@146a28175021df8ca24f8ee1828cc2a60f980bd5 # v3.5.1 + - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 From 0d25d8fc02453119f789882ec73fdc39c573d6f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:39:29 +0000 Subject: [PATCH 014/110] chore(deps): update actions/cache action to v5.0.2 (#1788) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/cache](https://redirect.github.com/actions/cache) | action | patch | `v5.0.1` โ†’ `v5.0.2` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
actions/cache (actions/cache) ### [`v5.0.2`](https://redirect.github.com/actions/cache/compare/v5.0.1...v5.0.2) [Compare Source](https://redirect.github.com/actions/cache/compare/v5.0.1...v5.0.2)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/test-release-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b863384d7..0e222f826 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Cache local Maven repository - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 + uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 8d2597075..eb5e03c9d 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -21,7 +21,7 @@ jobs: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Cache local Maven repository - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 + uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} From 814ae41cb6ba82f2a79b7e732c8f4f230ef700c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 18:34:31 +0000 Subject: [PATCH 015/110] chore(deps): update grafana/tempo docker tag to v2.9.1 (#1789) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | grafana/tempo | patch | `2.9.0` โ†’ `2.9.1` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index 6b3f50b32..c53ba5156 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -52,7 +52,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yaml tempo: - image: grafana/tempo:2.9.0@sha256:65a5789759435f1ef696f1953258b9bbdb18eb571d5ce711ff812d2e128288a4 + image: grafana/tempo:2.9.1@sha256:290414580eabd1bde91f22e4a4579242fe77377c425223f45d59b8ad1540ce3c network_mode: host volumes: - ./config/tempo-config.yaml:/config.yaml From 4135b2fcf42426811e0ab842dd362ed58bdaecd3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 21:02:39 +0000 Subject: [PATCH 016/110] chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to 9d1d306 (#1790) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | digest | `96bccca` โ†’ `9d1d306` | | eclipse-temurin | | digest | `96bccca` โ†’ `9d1d306` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile | 2 +- .../example-exporter-opentelemetry/oats-tests/http/Dockerfile | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile index ee5340755..96c33c029 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.1_8-jre@sha256:96bccca442e8842a7366df338f5960e3342862ea6b8d42b97009a3dfd8602547 +FROM eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a COPY target/example-exporter-opentelemetry.jar ./app.jar # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile index 5e8ea0db7..b5cfb792e 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.1_8-jre@sha256:96bccca442e8842a7366df338f5960e3342862ea6b8d42b97009a3dfd8602547 +FROM eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a COPY target/example-exporter-opentelemetry.jar ./app.jar diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index e99fafeef..8c27abce0 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.1_8-jre@sha256:96bccca442e8842a7366df338f5960e3342862ea6b8d42b97009a3dfd8602547 + image: eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a network_mode: host volumes: - ./target/example-native-histogram.jar:/example-native-histogram.jar From 4fe0d60eea3a1723fa08e9f682646309cbad0cd9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:07:56 +0000 Subject: [PATCH 017/110] chore(deps): update jdx/mise-action action to v3.6.1 (#1791) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [jdx/mise-action](https://redirect.github.com/jdx/mise-action) | action | patch | `v3.6.0` โ†’ `v3.6.1` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
jdx/mise-action (jdx/mise-action) ### [`v3.6.1`](https://redirect.github.com/jdx/mise-action/releases/tag/v3.6.1) [Compare Source](https://redirect.github.com/jdx/mise-action/compare/v3.6.0...v3.6.1) #### What's Changed - Revert "fix(cache): isolate cache keys per working\_directory in monorepos" by [@​jdx](https://redirect.github.com/jdx) in [#​364](https://redirect.github.com/jdx/mise-action/pull/364) - chore: release v3.6.1 by [@​mise-en-dev](https://redirect.github.com/mise-en-dev) in [#​365](https://redirect.github.com/jdx/mise-action/pull/365) **Full Changelog**:
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/acceptance-tests.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/github-pages.yaml | 2 +- .github/workflows/lint-rest.yml | 2 +- .github/workflows/native-tests.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test-release-build.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index e2bce6c24..0554aed98 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -13,7 +13,7 @@ jobs: with: persist-credentials: false uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0e222f826..70772c851 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 with: persist-credentials: false - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index 13ff839b8..a8660279f 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -37,7 +37,7 @@ jobs: persist-credentials: false fetch-tags: "true" fetch-depth: 0 - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index f9716802c..0495837c7 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -13,7 +13,7 @@ jobs: with: persist-credentials: false uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index fe0f5cb07..b328771f0 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -13,7 +13,7 @@ jobs: with: persist-credentials: false uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 62c52ed63..0a99bbf32 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ jobs: with: persist-credentials: false - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index eb5e03c9d..4a268e8c5 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 with: persist-credentials: false - - uses: jdx/mise-action@c53b9236f0b3370f31520f8b142f141256d839c6 # v3.6.0 + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 From 7670747fdf38a622352c49444940b3dcaf10d20f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 15:34:47 +0000 Subject: [PATCH 018/110] chore(deps): update dependency com.uber.nullaway:nullaway to v0.13.0 (#1792) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.uber.nullaway:nullaway](https://redirect.github.com/uber/NullAway) | `0.12.15` โ†’ `0.13.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.uber.nullaway:nullaway/0.13.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.uber.nullaway:nullaway/0.12.15/0.13.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
uber/NullAway (com.uber.nullaway:nullaway) ### [`v0.13.0`](https://redirect.github.com/uber/NullAway/blob/HEAD/CHANGELOG.md#Version-0130) NullAway now requires a minimum of JDK 17 and Error Prone 2.36.0 to run; we bump the version to 0.13.0 to reflect these updated requirements. There are also many improvements to JSpecify mode support, and several nice changes and improvements from first-time contributors. - Support added for JUnit's [@​TempDir](https://redirect.github.com/TempDir) by [@​romainmoreau](https://redirect.github.com/romainmoreau) ([#​1387](https://redirect.github.com/uber/NullAway/issues/1387)) - Use OptimizedLibraryModels for method type variable upper bounds ([#​1388](https://redirect.github.com/uber/NullAway/issues/1388)) - Add [@​InjectWireMock](https://redirect.github.com/InjectWireMock) as known excluded field annotation ([#​1391](https://redirect.github.com/uber/NullAway/issues/1391)) - Require JDK 17 to run NullAway ([#​1394](https://redirect.github.com/uber/NullAway/issues/1394)) - Support adding nested nullability annotations in library models ([#​1407](https://redirect.github.com/uber/NullAway/issues/1407)) - Add library model for AtomicReferenceFieldUpdater ([#​1409](https://redirect.github.com/uber/NullAway/issues/1409)) - Correctly get parameter types for a lambda whose type was inferred ([#​1348](https://redirect.github.com/uber/NullAway/issues/1348)) - Add Mockito annotations to default excluded field annotations by [@​murdos](https://redirect.github.com/murdos) ([#​1418](https://redirect.github.com/uber/NullAway/issues/1418)) - Properly identify annotations directly on the array element type of a Symbol ([#​1419](https://redirect.github.com/uber/NullAway/issues/1419)) - Update to Checker Framework 3.53.0 ([#​1429](https://redirect.github.com/uber/NullAway/issues/1429)) - JSpecify: Apply annotations on type variables to lambdas in more cases ([#​1428](https://redirect.github.com/uber/NullAway/issues/1428)) - Migrate AutoValue to Records by [@​rishikraj990](https://redirect.github.com/rishikraj990) ([#​1415](https://redirect.github.com/uber/NullAway/issues/1415)) - Bump minimum Error Prone version to 2.36.0, and add detection of nullable dereference by switch expressions ([#​1427](https://redirect.github.com/uber/NullAway/issues/1427)) - JSpecify: Improve handling of method references ([#​1430](https://redirect.github.com/uber/NullAway/issues/1430)) - Allow suppressing nullaway on individual parameters by [@​jackwickham](https://redirect.github.com/jackwickham) ([#​1436](https://redirect.github.com/uber/NullAway/issues/1436)) - Update jdk-javac-plugin to contain nested annotations by [@​haewiful](https://redirect.github.com/haewiful) ([#​1432](https://redirect.github.com/uber/NullAway/issues/1432)) - Maintenance - Delete code to generate library models from source ([#​1385](https://redirect.github.com/uber/NullAway/issues/1385)) - Refactor: Migration to Version Catalog completed by [@​vitinh0z](https://redirect.github.com/vitinh0z) ([#​1386](https://redirect.github.com/uber/NullAway/issues/1386)) - Bump Gradle to 9.2.1 ([#​1392](https://redirect.github.com/uber/NullAway/issues/1392)) - Update to Error Prone 2.45.0 ([#​1401](https://redirect.github.com/uber/NullAway/issues/1401)) - Stop matching switch expression kind using strings ([#​1404](https://redirect.github.com/uber/NullAway/issues/1404)) - Refactoring: clarify docs and naming for RestoreNullnessAnnotationsVisitor ([#​1406](https://redirect.github.com/uber/NullAway/issues/1406)) - Refactoring: rename method and field ([#​1405](https://redirect.github.com/uber/NullAway/issues/1405)) - Run NullAway on jdk-javac-plugin code ([#​1408](https://redirect.github.com/uber/NullAway/issues/1408)) - Clarify comment in test ([#​1411](https://redirect.github.com/uber/NullAway/issues/1411)) - Enable PatternMatchingInstanceOf check and fix all warnings ([#​1412](https://redirect.github.com/uber/NullAway/issues/1412)) - Enable StatementSwitchToExpressionSwitch check and fix all warnings ([#​1413](https://redirect.github.com/uber/NullAway/issues/1413)) - bump and remove some dependencies ([#​1414](https://redirect.github.com/uber/NullAway/issues/1414)) - Update minimum supported Error Prone version to 2.25.0 ([#​1421](https://redirect.github.com/uber/NullAway/issues/1421)) - Update CI to run builds on JDK 25 ([#​1422](https://redirect.github.com/uber/NullAway/issues/1422)) - Various cleanups suggested by IntelliJ ([#​1423](https://redirect.github.com/uber/NullAway/issues/1423)) - Convert test data in main NullAway tests to use text blocks ([#​1424](https://redirect.github.com/uber/NullAway/issues/1424)) - Refactor CoreTests and UnannotatedTests to use addSourceLines and inline test data by [@​cobayo](https://redirect.github.com/cobayo) ([#​1426](https://redirect.github.com/uber/NullAway/issues/1426)) - Refactor ContractsTests to use Java text blocks by [@​cobayo](https://redirect.github.com/cobayo) ([#​1435](https://redirect.github.com/uber/NullAway/issues/1435)) - Update Error Prone and errorprone-plugin versions ([#​1434](https://redirect.github.com/uber/NullAway/issues/1434))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 54c3ec2de..6f3d5282a 100644 --- a/pom.xml +++ b/pom.xml @@ -280,7 +280,7 @@ com.uber.nullaway nullaway - 0.12.15 + 0.13.0 If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- examples/example-exporter-opentelemetry/docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index c53ba5156..28a657b5d 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -36,7 +36,7 @@ services: - -jar - /example-greeting-service.jar collector: - image: otel/opentelemetry-collector-contrib:0.143.1@sha256:f051aff195ad50ed5ad9d95bcdd51d7258200c937def3797cf830366ed62e034 + image: otel/opentelemetry-collector-contrib:0.144.0@sha256:213886eb6407af91b87fa47551c3632be1a6419ff3a5114ef1e6fc364628496f network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml diff --git a/examples/example-exporter-opentelemetry/docker-compose.yaml b/examples/example-exporter-opentelemetry/docker-compose.yaml index 9d9b8fda9..53afbed4c 100644 --- a/examples/example-exporter-opentelemetry/docker-compose.yaml +++ b/examples/example-exporter-opentelemetry/docker-compose.yaml @@ -13,7 +13,7 @@ services: #- -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 - /example-exporter-opentelemetry.jar collector: - image: otel/opentelemetry-collector-contrib:0.143.1@sha256:f051aff195ad50ed5ad9d95bcdd51d7258200c937def3797cf830366ed62e034 + image: otel/opentelemetry-collector-contrib:0.144.0@sha256:213886eb6407af91b87fa47551c3632be1a6419ff3a5114ef1e6fc364628496f network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml From 4db120a025f9237b83c8eb2b0689b0e1829be55c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 05:13:38 +0000 Subject: [PATCH 020/110] chore(deps): update actions/setup-java digest to be666c2 (#1796) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-java](https://redirect.github.com/actions/setup-java) ([changelog](https://redirect.github.com/actions/setup-java/compare/f2beeb24e141e01a676f977032f5a29d81c9e27e..be666c2fcd27ec809703dec50e508c2fdc7f6654)) | action | digest | `f2beeb2` โ†’ `be666c2` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0a99bbf32..7e01fabf7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,7 +36,7 @@ jobs: TAG: ${{ github.ref_name }} - name: Set up Apache Maven Central - uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5 + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 with: distribution: "temurin" java-version: "21" From 623467c4ed93eee6acceb00eb08ec9c726b1a815 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:58:35 +0000 Subject: [PATCH 021/110] fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4.0.2 (#1797) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.springframework.boot:spring-boot-starter-parent](https://spring.io/projects/spring-boot) ([source](https://redirect.github.com/spring-projects/spring-boot)) | `4.0.1` โ†’ `4.0.2` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.springframework.boot:spring-boot-starter-parent/4.0.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.springframework.boot:spring-boot-starter-parent/4.0.1/4.0.2?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
spring-projects/spring-boot (org.springframework.boot:spring-boot-starter-parent) ### [`v4.0.2`](https://redirect.github.com/spring-projects/spring-boot/compare/v4.0.1...v4.0.2) [Compare Source](https://redirect.github.com/spring-projects/spring-boot/compare/v4.0.1...v4.0.2)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- integration-tests/it-spring-boot-smoke-test/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index 35663055f..ddd6e238a 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -8,7 +8,7 @@ org.springframework.boot spring-boot-starter-parent - 4.0.1 + 4.0.2 From 54b25383f00596d2d584c40cd7ba1b7cffdb017a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 02:07:24 +0000 Subject: [PATCH 022/110] chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.2.0 (#1799) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.diffplug.spotless:spotless-maven-plugin](https://redirect.github.com/diffplug/spotless) | `3.1.0` โ†’ `3.2.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.diffplug.spotless:spotless-maven-plugin/3.2.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.diffplug.spotless:spotless-maven-plugin/3.1.0/3.2.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
diffplug/spotless (com.diffplug.spotless:spotless-maven-plugin) ### [`v3.2.0`](https://redirect.github.com/diffplug/spotless/blob/HEAD/CHANGES.md#320---2025-07-07) ##### Added - Support for `idea` ([#​2020](https://redirect.github.com/diffplug/spotless/pull/2020), [#​2535](https://redirect.github.com/diffplug/spotless/pull/2535)) - Add support for removing wildcard imports via `removeWildcardImports` step. ([#​2517](https://redirect.github.com/diffplug/spotless/pull/2517)) - scalafmt: enforce version consistency between the version configured in Spotless and the version declared in Scalafmt config file ([#​2460](https://redirect.github.com/diffplug/spotless/issues/2460)) ##### Fixed - `SortPom` disable expandEmptyElements, to avoid empty body warnings. ([#​2520](https://redirect.github.com/diffplug/spotless/pull/2520)) - Fix biome formatter for new major release 2.x of biome ([#​2537](https://redirect.github.com/diffplug/spotless/pull/2537)) - Make sure npm-based formatters use the correct `node_modules` directory when running in parallel. ([#​2542](https://redirect.github.com/diffplug/spotless/pull/2542)) ##### Changed - Bump internal dependencies for npm-based formatters ([#​2542](https://redirect.github.com/diffplug/spotless/pull/2542))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- integration-tests/it-spring-boot-smoke-test/pom.xml | 2 +- prometheus-metrics-parent/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index ddd6e238a..4fbd5da98 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -162,7 +162,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.1.0 + 3.2.0 diff --git a/prometheus-metrics-parent/pom.xml b/prometheus-metrics-parent/pom.xml index 075eaf782..a0d59af7a 100644 --- a/prometheus-metrics-parent/pom.xml +++ b/prometheus-metrics-parent/pom.xml @@ -71,7 +71,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.1.0 + 3.2.0 From 057ac4a22f352caa88be658ef996b96ec013374e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 06:48:36 +0000 Subject: [PATCH 023/110] chore(deps): update actions/checkout action to v6.0.2 (#1798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v6.0.1` โ†’ `v6.0.2` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
actions/checkout (actions/checkout) ### [`v6.0.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v602) [Compare Source](https://redirect.github.com/actions/checkout/compare/v6.0.1...v6.0.2) - Fix tag handling: preserve annotations and explicit fetch-tags by [@​ericsciple](https://redirect.github.com/ericsciple) in [#​2356](https://redirect.github.com/actions/checkout/pull/2356)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lint-rest.yml | 2 +- .github/workflows/super-linter.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 0495837c7..58817721e 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -12,7 +12,7 @@ jobs: - name: Check out with: persist-credentials: false - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.4 diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml index eba4d3890..070752cb3 100644 --- a/.github/workflows/super-linter.yml +++ b/.github/workflows/super-linter.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false fetch-depth: 0 From ba537784b80c7cf09589e9d70ac7db7260dce1d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 24 Jan 2026 22:03:57 +0000 Subject: [PATCH 024/110] chore(deps): update dependency org.assertj:assertj-core to v3.27.7 (#1801) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://redirect.github.com/assertj/assertj)) | `3.27.6` โ†’ `3.27.7` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.assertj:assertj-core/3.27.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.assertj:assertj-core/3.27.6/3.27.7?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6f3d5282a..6fedc521e 100644 --- a/pom.xml +++ b/pom.xml @@ -387,7 +387,7 @@ org.assertj assertj-core - 3.27.6 + 3.27.7 test From fcbb08e6d433a4acfc0a418ba70dd7208126eb4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 02:16:15 +0000 Subject: [PATCH 025/110] fix(deps): update dependency io.dropwizard.metrics:metrics-core to v4.2.38 (#1805) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.dropwizard.metrics:metrics-core](https://metrics.dropwizard.io) ([source](https://redirect.github.com/dropwizard/metrics)) | `4.2.37` โ†’ `4.2.38` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.dropwizard.metrics:metrics-core/4.2.38?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.dropwizard.metrics:metrics-core/4.2.37/4.2.38?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
dropwizard/metrics (io.dropwizard.metrics:metrics-core) ### [`v4.2.38`](https://redirect.github.com/dropwizard/metrics/releases/tag/v4.2.38) [Compare Source](https://redirect.github.com/dropwizard/metrics/compare/v4.2.37...v4.2.38) #### What's Changed - chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4946](https://redirect.github.com/dropwizard/metrics/pull/4946) - chore(deps): update dependency org.assertj:assertj-core to v3.27.5 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4947](https://redirect.github.com/dropwizard/metrics/pull/4947) - fix(deps): update dependency org.apache.httpcomponents.core5:httpcore5 to v5.3.6 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4948](https://redirect.github.com/dropwizard/metrics/pull/4948) - chore(deps): update dependency org.mockito:mockito-core to v5.20.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4951](https://redirect.github.com/dropwizard/metrics/pull/4951) - chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.12.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4950](https://redirect.github.com/dropwizard/metrics/pull/4950) - chore(deps): update dependency org.assertj:assertj-core to v3.27.6 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4958](https://redirect.github.com/dropwizard/metrics/pull/4958) - fix(deps): update log4j2 monorepo to v2.25.2 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4959](https://redirect.github.com/dropwizard/metrics/pull/4959) - chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.9.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4960](https://redirect.github.com/dropwizard/metrics/pull/4960) - fix(deps): update dependency org.apache.httpcomponents.client5:httpclient5 to v5.5.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4967](https://redirect.github.com/dropwizard/metrics/pull/4967) - chore(deps): update dependency maven-wrapper to v3.3.4 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4966](https://redirect.github.com/dropwizard/metrics/pull/4966) - chore(deps): update actions/cache action to v4.3.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4968](https://redirect.github.com/dropwizard/metrics/pull/4968) - chore(deps): update dependency org.apache.commons:commons-lang3 to v3.19.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4969](https://redirect.github.com/dropwizard/metrics/pull/4969) - chore(deps): update actions/stale digest to [`5f858e3`](https://redirect.github.com/dropwizard/metrics/commit/5f858e3) (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4974](https://redirect.github.com/dropwizard/metrics/pull/4974) - chore(deps): update dependency org.apache.maven.plugins:maven-enforcer-plugin to v3.6.2 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4975](https://redirect.github.com/dropwizard/metrics/pull/4975) - fix(deps): update dependency org.jdbi:jdbi3-core to v3.49.6 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4976](https://redirect.github.com/dropwizard/metrics/pull/4976) - chore(deps): update dependency org.apache.maven.plugins:maven-dependency-plugin to v3.9.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4978](https://redirect.github.com/dropwizard/metrics/pull/4978) - fix(deps): update logback monorepo to v1.5.19 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4977](https://redirect.github.com/dropwizard/metrics/pull/4977) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.17.8 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4989](https://redirect.github.com/dropwizard/metrics/pull/4989) - chore(deps): update dependency org.jacoco:jacoco-maven-plugin to v0.8.14 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4988](https://redirect.github.com/dropwizard/metrics/pull/4988) - fix(deps): update jetty monorepo to v12.1.2 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4990](https://redirect.github.com/dropwizard/metrics/pull/4990) - fix(deps): update logback monorepo to v1.5.20 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4994](https://redirect.github.com/dropwizard/metrics/pull/4994) - fix(deps): update dependency com.rabbitmq:amqp-client to v5.27.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4995](https://redirect.github.com/dropwizard/metrics/pull/4995) - fix(deps): update jetty monorepo to v12.1.3 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5000](https://redirect.github.com/dropwizard/metrics/pull/5000) - fix(deps): update dependency com.github.ben-manes.caffeine:caffeine to v3.2.3 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5004](https://redirect.github.com/dropwizard/metrics/pull/5004) - fix(deps): update logback monorepo to v1.3.16 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5005](https://redirect.github.com/dropwizard/metrics/pull/5005) - fix(deps): update dependency com.rabbitmq:amqp-client to v5.27.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5011](https://redirect.github.com/dropwizard/metrics/pull/5011) - chore(deps): update dependency org.apache.maven.plugins:maven-release-plugin to v3.2.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5013](https://redirect.github.com/dropwizard/metrics/pull/5013) - feat: add module for Jersey 4.0.x by [@​joschi](https://redirect.github.com/joschi) in [#​5025](https://redirect.github.com/dropwizard/metrics/pull/5025) - fix(deps): update jetty monorepo to v12.1.4 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5026](https://redirect.github.com/dropwizard/metrics/pull/5026) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5028](https://redirect.github.com/dropwizard/metrics/pull/5028) - fix(deps): update logback monorepo to v1.5.21 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5027](https://redirect.github.com/dropwizard/metrics/pull/5027) - chore(deps): update dependency org.apache.maven.plugins:maven-jar-plugin to v3.5.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5035](https://redirect.github.com/dropwizard/metrics/pull/5035) - chore(deps): update dependency org.apache.commons:commons-lang3 to v3.20.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5034](https://redirect.github.com/dropwizard/metrics/pull/5034) - chore(deps): update actions/checkout action to v5.0.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5039](https://redirect.github.com/dropwizard/metrics/pull/5039) - chore(deps): update actions/checkout digest to [`93cb6ef`](https://redirect.github.com/dropwizard/metrics/commit/93cb6ef) (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5038](https://redirect.github.com/dropwizard/metrics/pull/5038) - chore(deps): update github actions to v6 (release/4.2.x) (major) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5040](https://redirect.github.com/dropwizard/metrics/pull/5040) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.2 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5044](https://redirect.github.com/dropwizard/metrics/pull/5044) - chore(deps): update maven plugins to v3.4.0 (release/4.2.x) (minor) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5046](https://redirect.github.com/dropwizard/metrics/pull/5046) - fix(deps): update jetty monorepo to v12.1.5 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5054](https://redirect.github.com/dropwizard/metrics/pull/5054) - chore(deps): update actions/checkout action to v6.0.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5053](https://redirect.github.com/dropwizard/metrics/pull/5053) - chore(deps): update github actions (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5052](https://redirect.github.com/dropwizard/metrics/pull/5052) - chore(deps): update dependency org.apache.maven.plugins:maven-release-plugin to v3.3.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5055](https://redirect.github.com/dropwizard/metrics/pull/5055) - fix(deps): update dependency com.rabbitmq:amqp-client to v5.28.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5056](https://redirect.github.com/dropwizard/metrics/pull/5056) - fix(deps): update logback monorepo to v1.5.22 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5063](https://redirect.github.com/dropwizard/metrics/pull/5063) - chore(deps): update dependency org.apache.maven.plugins:maven-release-plugin to v3.3.1 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5062](https://redirect.github.com/dropwizard/metrics/pull/5062) - chore(deps): update actions/cache action to v5 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5067](https://redirect.github.com/dropwizard/metrics/pull/5067) - chore(deps): update dependency org.mockito:mockito-core to v5.21.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5064](https://redirect.github.com/dropwizard/metrics/pull/5064) - chore(deps): update dependency maven to v3.9.12 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5075](https://redirect.github.com/dropwizard/metrics/pull/5075) - fix(deps): update log4j2 monorepo to v2.25.3 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5076](https://redirect.github.com/dropwizard/metrics/pull/5076) - fix(deps): update logback monorepo to v1.5.23 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5081](https://redirect.github.com/dropwizard/metrics/pull/5081) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.3 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5079](https://redirect.github.com/dropwizard/metrics/pull/5079) - fix(deps): update dependency org.apache.httpcomponents.client5:httpclient5 to v5.5.2 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5080](https://redirect.github.com/dropwizard/metrics/pull/5080) - fix(deps): update logback monorepo to v1.5.24 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5089](https://redirect.github.com/dropwizard/metrics/pull/5089) - chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.10.0 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5091](https://redirect.github.com/dropwizard/metrics/pull/5091) - Disable CI release workflow for forks by [@​the-thing](https://redirect.github.com/the-thing) in [#​5099](https://redirect.github.com/dropwizard/metrics/pull/5099) - Add a metrics-jackson3 module - metrics-json but dependent on jackson 3 by [@​cunningt](https://redirect.github.com/cunningt) in [#​5101](https://redirect.github.com/dropwizard/metrics/pull/5101) - chore(deps): update actions/cache action to v5.0.2 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5102](https://redirect.github.com/dropwizard/metrics/pull/5102) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.4 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5103](https://redirect.github.com/dropwizard/metrics/pull/5103) - fix(deps): update dependency org.apache.httpcomponents.core5:httpcore5 to v5.4 (release/4.2.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5065](https://redirect.github.com/dropwizard/metrics/pull/5065) - fix(deps): update logback monorepo to v1.5.25 (release/4.2.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5105](https://redirect.github.com/dropwizard/metrics/pull/5105) #### New Contributors - [@​cunningt](https://redirect.github.com/cunningt) made their first contribution in [#​5101](https://redirect.github.com/dropwizard/metrics/pull/5101) **Full Changelog**:
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- prometheus-metrics-instrumentation-dropwizard/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prometheus-metrics-instrumentation-dropwizard/pom.xml b/prometheus-metrics-instrumentation-dropwizard/pom.xml index d98fdc6b7..1c58efd78 100644 --- a/prometheus-metrics-instrumentation-dropwizard/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard/pom.xml @@ -38,7 +38,7 @@ io.dropwizard.metrics metrics-core - 4.2.37 + 4.2.38 provided From fe352a11ce0130c01657811cdc2a3f16ced38806 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 02:20:36 +0000 Subject: [PATCH 026/110] chore(deps): update dependency mise to v2026.1.7 (#1804) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [mise](https://redirect.github.com/jdx/mise) | patch | `v2026.1.4` โ†’ `v2026.1.7` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
jdx/mise (mise) ### [`v2026.1.7`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.7): : Cache & Compatibility Cleanup [Compare Source](https://redirect.github.com/jdx/mise/compare/aqua-registry-v2026.1.6...v2026.1.7) This release focuses on stability improvements and compatibility fixes. The headline fix addresses a caching issue where plugin watch files weren't being properly cached, causing unnecessary re-execution of plugins when loading environment variables. We've also resolved several edge cases in tool resolution and version handling. ##### Bug Fixes - **Registry mismatch fix**: Previously installed tools now correctly resolve against the registry, fixing cases where tools installed before registry changes would fail to match properly. Thanks to [@​smorimoto](https://redirect.github.com/smorimoto) for this fix in their first contribution! [#​7773](https://redirect.github.com/jdx/mise/pull/7773) - **Environment caching improvement**: Fixed an issue where `watch_files` weren't being cached properly, causing plugins to re-execute unnecessarily when loading environment variables. This should improve performance when using plugins with file watchers. [#​7817](https://redirect.github.com/jdx/mise/pull/7817) - **GitHub tag format handling**: The GitHub backend now correctly handles tools that use the `projectname@version` tag format (e.g., `tool@v1.2.3`), expanding compatibility with more GitHub releases. [#​7788](https://redirect.github.com/jdx/mise/pull/7788) - **HashiCorp tools version detection**: Added `fromJSON` and `keys` functions to `version_expr` for the HTTP backend, fixing version detection for HashiCorp tools like sentinel, nomad-pack, and tfc-agent. [#​7816](https://redirect.github.com/jdx/mise/pull/7816) ##### Registry Additions - **claude-powerline**: A powerline prompt theme - added by [@​TyceHerrman](https://redirect.github.com/TyceHerrman) [#​7798](https://redirect.github.com/jdx/mise/pull/7798) - **rpk**: Redpanda CLI tool - added by [@​artemklevtsov](https://redirect.github.com/artemklevtsov) [#​7802](https://redirect.github.com/jdx/mise/pull/7802) ##### New Contributors Welcome to our new contributors! ๐ŸŽ‰ - [@​smorimoto](https://redirect.github.com/smorimoto) - [@​nguyenvulong](https://redirect.github.com/nguyenvulong) ##### ๐Ÿ“ฆ Aqua Registry Updates ##### New Packages (5) - [`Epistates/treemd`](https://redirect.github.com/Epistates/treemd) - [`anthropics/claude-code`](https://redirect.github.com/anthropics/claude-code) - [`k1LoW/git-wt`](https://redirect.github.com/k1LoW/git-wt) - [`odigos-io/odigos`](https://redirect.github.com/odigos-io/odigos) - [`raskell-io/hx`](https://redirect.github.com/raskell-io/hx) ##### Updated Packages (6) - [`checkmake/checkmake`](https://redirect.github.com/checkmake/checkmake) - [`gruntwork-io/terragrunt`](https://redirect.github.com/gruntwork-io/terragrunt) - [`interlynk-io/sbomqs`](https://redirect.github.com/interlynk-io/sbomqs) - [`maxpert/marmot`](https://redirect.github.com/maxpert/marmot) - [`pranshuparmar/witr`](https://redirect.github.com/pranshuparmar/witr) - [`skim-rs/skim`](https://redirect.github.com/skim-rs/skim) ### [`v2026.1.6`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.6): : Better Errors, Faster Envs [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.5...v2026.1.6) This release brings two significant quality-of-life improvements: enhanced error diagnostics for configuration files and a new environment caching system. When you make a typo in your `mise.toml`, you'll now get beautifully formatted error messages with precise line and column information thanks to miette diagnostics. The new environment caching feature can dramatically speed up shell activation for projects with complex environment setups. ##### Highlights **TOML Parsing Diagnostics** - Configuration errors now display with clear, contextual error messages showing exactly where the problem is in your file. No more guessing which line has the syntax error! [#​7764](https://redirect.github.com/jdx/mise/pull/7764) by [@​jdx](https://redirect.github.com/jdx) **Environment Caching** - A new caching system for environment resolution that supports module-level cacheability. This can significantly speed up `mise activate` for projects with many tools or complex configurations. [#​7761](https://redirect.github.com/jdx/mise/pull/7761) by [@​jdx](https://redirect.github.com/jdx) ##### Bug Fixes - **Auto-created venvs** now properly handle freshness checks during the prepare phase, preventing unnecessary rebuilds [#​7770](https://redirect.github.com/jdx/mise/pull/7770) by [@​jdx](https://redirect.github.com/jdx) - **Task tools** are now included in environment resolution cache checks, ensuring cache invalidation works correctly when task-specific tools change [#​7786](https://redirect.github.com/jdx/mise/pull/7786) by [@​jdx](https://redirect.github.com/jdx) - **Tool stubs** now include dependency toolset paths, fixing issues where tools couldn't find their dependencies [#​7777](https://redirect.github.com/jdx/mise/pull/7777) by [@​thejcannon](https://redirect.github.com/thejcannon) - Fixed rust lockfile inconsistency [#​7780](https://redirect.github.com/jdx/mise/pull/7780) by [@​vadimpiven](https://redirect.github.com/vadimpiven) ##### Registry Updates - Added **miller** - a powerful CSV/JSON/etc data processing tool [#​7782](https://redirect.github.com/jdx/mise/pull/7782) by [@​kit494way](https://redirect.github.com/kit494way) - Added **atlas-community** - the community edition of the Atlas database schema management tool [#​7784](https://redirect.github.com/jdx/mise/pull/7784) by [@​akanter](https://redirect.github.com/akanter) - Switched **zprint** to use the aqua backend [#​7767](https://redirect.github.com/jdx/mise/pull/7767) by [@​scop](https://redirect.github.com/scop) ##### Security - Removed an insecure registry-comment workflow from CI [#​7769](https://redirect.github.com/jdx/mise/pull/7769) by [@​jdx](https://redirect.github.com/jdx) ##### Other Changes - Improved file task field parsing with better test coverage [#​7751](https://redirect.github.com/jdx/mise/pull/7751) by [@​makp0](https://redirect.github.com/makp0) - Dropped Fedora 41 from COPR builds as it has reached end-of-life [#​7771](https://redirect.github.com/jdx/mise/pull/7771) by [@​TobiX](https://redirect.github.com/TobiX) ##### ๐Ÿ“ฆ Aqua Registry Updates ##### New Packages (2) - [`cameron-martin/bazel-lsp`](https://redirect.github.com/cameron-martin/bazel-lsp) - [`micro-editor/micro`](https://redirect.github.com/micro-editor/micro) ### [`v2026.1.5`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.5): : PowerShell Joins the Party [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.4...v2026.1.5) This release brings PowerShell users into the mise ecosystem with full tab completion support, making mise more accessible to Windows developers and PowerShell enthusiasts everywhere. The vfox backend also receives significant upgrades with rolling release support and a new semver Lua module for smarter version sorting. File task handling gets a reliability boost with improved parsing, validation, and better error messages when unknown fields appear in task headers. Several schema and configuration fixes ensure your mise setup works more predictably across different scenarios. ##### Highlights - **PowerShell Completion Support**: Tab completion now works in PowerShell sessions, bringing the same convenient autocomplete experience that bash, zsh, and fish users enjoy. See the [shell completions documentation](https://mise.jdx.dev/installing-mise.html#shell-completions) for setup instructions. ([#​7746](https://redirect.github.com/jdx/mise/pull/7746)) by [@​jdx](https://redirect.github.com/jdx) - **Vfox Rolling Releases**: The vfox backend now supports rolling releases with checksum tracking, enabling tools that publish frequent updates without traditional version numbers. A new semver Lua module also improves version sorting accuracy. ([#​7757](https://redirect.github.com/jdx/mise/pull/7757), [#​7739](https://redirect.github.com/jdx/mise/pull/7739)) by [@​jdx](https://redirect.github.com/jdx) - **Improved File Task Parsing**: File tasks now have DRYer parsing logic and validate unknown fields in headers, catching configuration mistakes earlier with clearer error messages. ([#​7738](https://redirect.github.com/jdx/mise/pull/7738), [#​7733](https://redirect.github.com/jdx/mise/pull/7733)) by [@​makp0](https://redirect.github.com/makp0) ##### Bug Fixes - Fixed schema missing the required string variant for environment variables ([#​7734](https://redirect.github.com/jdx/mise/pull/7734)) by [@​vadimpiven](https://redirect.github.com/vadimpiven) - Fixed double forward slashes appearing in task list paths ([#​7744](https://redirect.github.com/jdx/mise/pull/7744)) by [@​collinstevens](https://redirect.github.com/collinstevens) - Fixed `{{ version }}` template variables being incorrectly processed during config load instead of being preserved for runtime evaluation ([#​7755](https://redirect.github.com/jdx/mise/pull/7755)) by [@​jdx](https://redirect.github.com/jdx) ##### New Contributors Welcome to our new contributors! ๐ŸŽ‰ - [@​collinstevens](https://redirect.github.com/collinstevens) made their first contribution in [#​7744](https://redirect.github.com/jdx/mise/pull/7744) - [@​makp0](https://redirect.github.com/makp0) made their first contribution in [#​7738](https://redirect.github.com/jdx/mise/pull/7738) - [@​vadimpiven](https://redirect.github.com/vadimpiven) made their first contribution in [#​7734](https://redirect.github.com/jdx/mise/pull/7734) ##### ๐Ÿ“ฆ Aqua Registry Updates ##### New Packages (2) - [`F1bonacc1/process-compose`](https://redirect.github.com/F1bonacc1/process-compose) - [`kkinnear/zprint`](https://redirect.github.com/kkinnear/zprint) ##### Updated Packages (1) - [`theryangeary/choose`](https://redirect.github.com/theryangeary/choose)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - "before 4am on monday" (UTC), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/acceptance-tests.yml | 4 ++-- .github/workflows/build.yml | 4 ++-- .github/workflows/github-pages.yaml | 4 ++-- .github/workflows/lint-rest.yml | 4 ++-- .github/workflows/native-tests.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- .github/workflows/test-release-build.yml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 0554aed98..cd283fef0 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - name: Run acceptance tests run: mise run acceptance-test diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 70772c851..b2dbc73f5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,8 +14,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - name: Cache local Maven repository uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index a8660279f..3207b6bf3 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -39,8 +39,8 @@ jobs: fetch-depth: 0 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea cache: "false" - name: Setup Pages id: pages diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 58817721e..efce5cfa5 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - name: Lint run: mise run lint:rest diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index b328771f0..77596da0e 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -15,8 +15,8 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea working_directory: .mise/envs/native - name: Run native tests working-directory: .mise/envs/native diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e01fabf7..6bdc23a95 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,8 +26,8 @@ jobs: - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea cache: false - name: Build release version diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 4a268e8c5..89e414540 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -18,8 +18,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.1.7 + sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - name: Cache local Maven repository uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: From 0550eef81789f7e54466e8d7d22200930791c11e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 06:04:26 +0000 Subject: [PATCH 027/110] fix(deps): update dependency io.dropwizard.metrics5:metrics-core to v5.0.6 (#1806) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.dropwizard.metrics5:metrics-core](https://metrics.dropwizard.io) ([source](https://redirect.github.com/dropwizard/metrics)) | `5.0.5` โ†’ `5.0.6` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.dropwizard.metrics5:metrics-core/5.0.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.dropwizard.metrics5:metrics-core/5.0.5/5.0.6?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
dropwizard/metrics (io.dropwizard.metrics5:metrics-core) ### [`v5.0.6`](https://redirect.github.com/dropwizard/metrics/releases/tag/v5.0.6) [Compare Source](https://redirect.github.com/dropwizard/metrics/compare/v5.0.5...v5.0.6) #### What's Changed - chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4952](https://redirect.github.com/dropwizard/metrics/pull/4952) - chore(deps): update dependency org.assertj:assertj-core to v3.27.5 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4953](https://redirect.github.com/dropwizard/metrics/pull/4953) - fix(deps): update dependency org.apache.httpcomponents.core5:httpcore5 to v5.3.6 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4954](https://redirect.github.com/dropwizard/metrics/pull/4954) - chore(deps): update dependency com.google.errorprone:error\_prone\_core to v2.42.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4955](https://redirect.github.com/dropwizard/metrics/pull/4955) - chore(deps): update mockito monorepo to v5.20.0 (release/5.0.x) (minor) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4957](https://redirect.github.com/dropwizard/metrics/pull/4957) - chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.12.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4956](https://redirect.github.com/dropwizard/metrics/pull/4956) - chore(deps): update dependency org.assertj:assertj-core to v3.27.6 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4961](https://redirect.github.com/dropwizard/metrics/pull/4961) - chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.9.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4963](https://redirect.github.com/dropwizard/metrics/pull/4963) - fix(deps): update log4j2 monorepo to v2.25.2 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4962](https://redirect.github.com/dropwizard/metrics/pull/4962) - chore(deps): update dependency maven-wrapper to v3.3.4 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4970](https://redirect.github.com/dropwizard/metrics/pull/4970) - fix(deps): update dependency org.apache.httpcomponents.client5:httpclient5 to v5.5.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4971](https://redirect.github.com/dropwizard/metrics/pull/4971) - chore(deps): update dependency org.apache.commons:commons-lang3 to v3.19.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4973](https://redirect.github.com/dropwizard/metrics/pull/4973) - chore(deps): update actions/cache action to v4.3.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4972](https://redirect.github.com/dropwizard/metrics/pull/4972) - fix(deps): update logback monorepo to v1.5.19 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4983](https://redirect.github.com/dropwizard/metrics/pull/4983) - fix(deps): update junit-framework monorepo to v6 (release/5.0.x) (major) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4987](https://redirect.github.com/dropwizard/metrics/pull/4987) - fix(deps): update dependency org.jdbi:jdbi3-core to v3.49.6 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4982](https://redirect.github.com/dropwizard/metrics/pull/4982) - chore(deps): update dependency org.apache.maven.plugins:maven-enforcer-plugin to v3.6.2 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4981](https://redirect.github.com/dropwizard/metrics/pull/4981) - chore(deps): update dependency org.apache.maven.plugins:maven-dependency-plugin to v3.9.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4984](https://redirect.github.com/dropwizard/metrics/pull/4984) - chore(deps): update actions/stale digest to [`5f858e3`](https://redirect.github.com/dropwizard/metrics/commit/5f858e3) (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4980](https://redirect.github.com/dropwizard/metrics/pull/4980) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.17.8 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4992](https://redirect.github.com/dropwizard/metrics/pull/4992) - fix(deps): update jetty monorepo to v12.1.2 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4993](https://redirect.github.com/dropwizard/metrics/pull/4993) - chore(deps): update dependency org.jacoco:jacoco-maven-plugin to v0.8.14 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4991](https://redirect.github.com/dropwizard/metrics/pull/4991) - fix(deps): update logback monorepo to v1.5.20 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4997](https://redirect.github.com/dropwizard/metrics/pull/4997) - fix(deps): update dependency com.rabbitmq:amqp-client to v5.27.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​4998](https://redirect.github.com/dropwizard/metrics/pull/4998) - fix(deps): update jetty monorepo to v12.1.3 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5002](https://redirect.github.com/dropwizard/metrics/pull/5002) - fix(deps): update dependency com.github.ben-manes.caffeine:caffeine to v3.2.3 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5007](https://redirect.github.com/dropwizard/metrics/pull/5007) - fix(deps): update jackson monorepo to v2.20.1 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5008](https://redirect.github.com/dropwizard/metrics/pull/5008) - fix(deps): update logback monorepo to v1.3.16 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5010](https://redirect.github.com/dropwizard/metrics/pull/5010) - fix(deps): update junit-framework monorepo to v6.0.1 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5009](https://redirect.github.com/dropwizard/metrics/pull/5009) - fix(deps): update dependency com.rabbitmq:amqp-client to v5.27.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5018](https://redirect.github.com/dropwizard/metrics/pull/5018) - chore(deps): update dependency org.apache.maven.plugins:maven-release-plugin to v3.2.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5019](https://redirect.github.com/dropwizard/metrics/pull/5019) - fix(deps): update dependency org.jdbi:jdbi3-core to v3.50.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5020](https://redirect.github.com/dropwizard/metrics/pull/5020) - feat: add module for Jersey 4.0.x by [@​joschi](https://redirect.github.com/joschi) in [#​5024](https://redirect.github.com/dropwizard/metrics/pull/5024) - fix(deps): update logback monorepo to v1.5.21 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5031](https://redirect.github.com/dropwizard/metrics/pull/5031) - fix(deps): update jetty monorepo to v12.1.4 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5030](https://redirect.github.com/dropwizard/metrics/pull/5030) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5032](https://redirect.github.com/dropwizard/metrics/pull/5032) - chore(deps): update dependency org.apache.maven.plugins:maven-jar-plugin to v3.5.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5037](https://redirect.github.com/dropwizard/metrics/pull/5037) - chore(deps): update dependency org.apache.commons:commons-lang3 to v3.20.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5036](https://redirect.github.com/dropwizard/metrics/pull/5036) - chore(deps): update actions/checkout digest to [`93cb6ef`](https://redirect.github.com/dropwizard/metrics/commit/93cb6ef) (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5041](https://redirect.github.com/dropwizard/metrics/pull/5041) - chore(deps): update actions/checkout action to v5.0.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5042](https://redirect.github.com/dropwizard/metrics/pull/5042) - chore(deps): update github actions to v6 (release/5.0.x) (major) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5043](https://redirect.github.com/dropwizard/metrics/pull/5043) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.2 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5048](https://redirect.github.com/dropwizard/metrics/pull/5048) - chore(deps): update maven plugins to v3.4.0 (release/5.0.x) (minor) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5050](https://redirect.github.com/dropwizard/metrics/pull/5050) - chore(deps): update actions/checkout action to v6.0.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5058](https://redirect.github.com/dropwizard/metrics/pull/5058) - fix(deps): update jetty monorepo to v12.1.5 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5059](https://redirect.github.com/dropwizard/metrics/pull/5059) - chore(deps): update github actions (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5057](https://redirect.github.com/dropwizard/metrics/pull/5057) - chore(deps): update dependency org.apache.maven.plugins:maven-release-plugin to v3.3.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5060](https://redirect.github.com/dropwizard/metrics/pull/5060) - fix(deps): update dependency com.rabbitmq:amqp-client to v5.28.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5061](https://redirect.github.com/dropwizard/metrics/pull/5061) - fix(deps): update logback monorepo to v1.5.22 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5069](https://redirect.github.com/dropwizard/metrics/pull/5069) - chore(deps): update dependency org.apache.maven.plugins:maven-release-plugin to v3.3.1 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5068](https://redirect.github.com/dropwizard/metrics/pull/5068) - chore(deps): update actions/cache action to v5 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5074](https://redirect.github.com/dropwizard/metrics/pull/5074) - chore(deps): update mockito monorepo to v5.21.0 (release/5.0.x) (minor) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5070](https://redirect.github.com/dropwizard/metrics/pull/5070) - fix(deps): update log4j2 monorepo to v2.25.3 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5078](https://redirect.github.com/dropwizard/metrics/pull/5078) - chore(deps): update dependency maven to v3.9.12 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5077](https://redirect.github.com/dropwizard/metrics/pull/5077) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.3 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5084](https://redirect.github.com/dropwizard/metrics/pull/5084) - fix(deps): update logback monorepo to v1.5.23 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5086](https://redirect.github.com/dropwizard/metrics/pull/5086) - fix(deps): update dependency org.apache.httpcomponents.client5:httpclient5 to v5.5.2 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5085](https://redirect.github.com/dropwizard/metrics/pull/5085) - fix(deps): update junit-framework monorepo to v6.0.2 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5093](https://redirect.github.com/dropwizard/metrics/pull/5093) - fix(deps): update logback monorepo to v1.5.24 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5094](https://redirect.github.com/dropwizard/metrics/pull/5094) - chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.10.0 (release/5.0.x) - autoclosed by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5096](https://redirect.github.com/dropwizard/metrics/pull/5096) - fix(deps): update dependency org.jdbi:jdbi3-core to v3.51.0 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5072](https://redirect.github.com/dropwizard/metrics/pull/5072) - chore(deps): update actions/cache action to v5.0.2 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5108](https://redirect.github.com/dropwizard/metrics/pull/5108) - fix(deps): update logback monorepo to v1.5.25 (release/5.0.x) (patch) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5111](https://redirect.github.com/dropwizard/metrics/pull/5111) - fix(deps): update dependency org.apache.httpcomponents.core5:httpcore5 to v5.4 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5071](https://redirect.github.com/dropwizard/metrics/pull/5071) - fix(deps): update dependency net.bytebuddy:byte-buddy to v1.18.4 (release/5.0.x) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​5109](https://redirect.github.com/dropwizard/metrics/pull/5109) **Full Changelog**:
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- prometheus-metrics-instrumentation-dropwizard5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prometheus-metrics-instrumentation-dropwizard5/pom.xml b/prometheus-metrics-instrumentation-dropwizard5/pom.xml index 692e321bd..4fc7524f4 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard5/pom.xml @@ -31,7 +31,7 @@ io.dropwizard.metrics5 metrics-core - 5.0.5 + 5.0.6 provided From 701e49d1481eb4eec06c2329e25fee903cd07e34 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 26 Jan 2026 02:52:25 -0500 Subject: [PATCH 028/110] Add test matrix for different java versions (#1781) Signed-off-by: Jay DeLuca Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .editorconfig | 5 +- .github/workflows/multi-version-test.yml | 39 +++ .mise/tasks/build-release.sh | 2 +- benchmarks/pom.xml | 4 +- .../it-spring-boot-smoke-test/pom.xml | 181 +++++++------ pom.xml | 249 +++++++++--------- .../exporter/httpserver/HTTPServerTest.java | 26 +- prometheus-metrics-parent/pom.xml | 48 ++-- 8 files changed, 328 insertions(+), 226 deletions(-) create mode 100644 .github/workflows/multi-version-test.yml diff --git a/.editorconfig b/.editorconfig index 8628b45bd..3ba329fae 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,9 +11,12 @@ max_line_length = 200 max_line_length = 300 [pom.xml] -max_line_length = 110 +max_line_length = 120 [*.py] # checked by black indent_size = 4 max_line_length = 120 + +[{.mise/tasks/build-release.sh,.github/workflows/multi-version-test.yml}] +max_line_length = 200 \ No newline at end of file diff --git a/.github/workflows/multi-version-test.yml b/.github/workflows/multi-version-test.yml new file mode 100644 index 000000000..5290d3e76 --- /dev/null +++ b/.github/workflows/multi-version-test.yml @@ -0,0 +1,39 @@ +--- +name: Java-Version Compatibility Tests + +on: [pull_request] + +permissions: {} + +jobs: + compatibility-test: + name: Test on Java ${{ matrix.java }} + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + java: [17, 21, 25] + steps: + - name: Check out + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + with: + persist-credentials: false + + - name: Set up Java ${{ matrix.java }} + id: setup-java + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 + with: + distribution: "temurin" + java-version: ${{ matrix.java }} + + - name: Cache local Maven repository + uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven-java${{ matrix.java }}- + ${{ runner.os }}-maven- + + - name: Build and test on Java ${{ matrix.java }} + run: ./mvnw clean install -Dtest.java.version=${{ matrix.java }} -Dspotless.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn -Dcoverage.skip=true diff --git a/.mise/tasks/build-release.sh b/.mise/tasks/build-release.sh index a29b0d22f..448dd3d5f 100755 --- a/.mise/tasks/build-release.sh +++ b/.mise/tasks/build-release.sh @@ -9,4 +9,4 @@ set -euo pipefail VERSION=${usage_tag#v} mise run set-version "$VERSION" -mvn -B package -P 'release,!default' -Dmaven.test.skip=true +mvn -B package -P 'release,!default,!examples-and-integration-tests' -Dmaven.test.skip=true -Dgpg.skip=true diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index b2fad5766..b484e4754 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -85,8 +85,8 @@ 1.8 1.8 - - + + -parameters diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index 4fbd5da98..a48c17c89 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -89,95 +89,108 @@ - - org.graalvm.buildtools - native-maven-plugin - - - - - --initialize-at-build-time=org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$LifecycleMethods - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.DynamicDescendantFilter$Mode - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector$1 - - - --initialize-at-build-time=org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo - - - --initialize-at-build-time=org.junit.jupiter.engine.discovery.ClassSelectorResolver$DummyClassTemplateInvocationContext - - - --initialize-at-build-time=org.junit.platform.engine.support.store.NamespacedHierarchicalStore$EvaluatedValue - - --initialize-at-build-time=org.junit.platform.launcher.core.DiscoveryIssueNotifier - - - --initialize-at-build-time=org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider - - - --initialize-at-build-time=org.junit.platform.launcher.core.LauncherDiscoveryResult$EngineResultInfo - - - --initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor$LifecycleMethods - - - --initialize-at-build-time=org.junit.platform.commons.logging.LoggerFactory$DelegatingLogger - - - --initialize-at-build-time=org.junit.jupiter.engine.execution.ConditionEvaluator - - - --initialize-at-build-time=org.junit.jupiter.engine.execution.InterceptingExecutableInvoker - - - --initialize-at-build-time=org.junit.jupiter.api.extension.ConditionEvaluationResult - - - --initialize-at-build-time=org.junit.jupiter.engine.execution.InvocationInterceptorChain - - - - - org.springframework.boot spring-boot-maven-plugin - - com.diffplug.spotless - spotless-maven-plugin - 3.2.0 - - - - - - - - verify - - check - - - - + + + java17-plus + + [17,) + + + + + org.graalvm.buildtools + native-maven-plugin + + + + + --initialize-at-build-time=org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$LifecycleMethods + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.DynamicDescendantFilter$Mode + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector$1 + + + --initialize-at-build-time=org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo + + + --initialize-at-build-time=org.junit.jupiter.engine.discovery.ClassSelectorResolver$DummyClassTemplateInvocationContext + + + --initialize-at-build-time=org.junit.platform.engine.support.store.NamespacedHierarchicalStore$EvaluatedValue + + --initialize-at-build-time=org.junit.platform.launcher.core.DiscoveryIssueNotifier + + + --initialize-at-build-time=org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider + + + --initialize-at-build-time=org.junit.platform.launcher.core.LauncherDiscoveryResult$EngineResultInfo + + + --initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor$LifecycleMethods + + + --initialize-at-build-time=org.junit.platform.commons.logging.LoggerFactory$DelegatingLogger + + + --initialize-at-build-time=org.junit.jupiter.engine.execution.ConditionEvaluator + + + --initialize-at-build-time=org.junit.jupiter.engine.execution.InterceptingExecutableInvoker + + + --initialize-at-build-time=org.junit.jupiter.api.extension.ConditionEvaluationResult + + + --initialize-at-build-time=org.junit.jupiter.engine.execution.InvocationInterceptorChain + + + + + + + com.diffplug.spotless + spotless-maven-plugin + 3.2.0 + + + + + + + + verify + + check + + + + + + + + + diff --git a/pom.xml b/pom.xml index 6fedc521e..8e121f2a3 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ 6.0.2 2.16.0-alpha 8 + 25 0.70 false false @@ -69,6 +70,67 @@ 3.0.2 provided
+ + + org.junit.jupiter + junit-jupiter + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit-jupiter.version} + test + + + org.mockito + mockito-core + 5.21.0 + test + + + org.assertj + assertj-core + 3.27.6 + test + + + com.google.guava + guava + ${guava.version} + test + + + org.slf4j + slf4j-simple + 2.0.17 + test + + + org.junit-pioneer + junit-pioneer + 2.3.0 + test + + + org.awaitility + awaitility + 4.3.0 + test + + + org.wiremock + wiremock + 3.13.2 + test + + + org.hamcrest + hamcrest-core + + + @@ -252,42 +314,16 @@ ${java.version} ${java.version} ${java.version} - 25 - 25 - 25 + ${test.java.version} + ${test.java.version} + ${test.java.version} true -Xlint:all,-serial,-processing,-options ${warnings} --should-stop=ifError=FLOW -XDcompilePolicy=simple - - -Xplugin:ErrorProne - -Xep:AlmostJavadoc:OFF - -Xep:MissingSummary:OFF - -Xep:LongDoubleConversion:OFF - -Xep:StringSplitter:OFF - -XepExcludedPaths:(.*/generated/.*|.*/src/test/java/.*|.*/examples/.*|.*/integration-tests/.*) - -XepOpt:NullAway:AnnotatedPackages=io.prometheus.metrics - - - - com.google.errorprone - error_prone_core - 2.46.0 - - - com.uber.nullaway - nullaway - 0.13.0 - - -
@@ -301,6 +337,31 @@ + + + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-bom-alpha + ${otel.instrumentation.version} + pom + import + + + io.opentelemetry + opentelemetry-proto + 1.7.1-alpha + test + + + + @@ -331,102 +392,15 @@ - default + examples-and-integration-tests - true + [25,) examples benchmarks integration-tests - - - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - - - io.opentelemetry.instrumentation - opentelemetry-instrumentation-bom-alpha - ${otel.instrumentation.version} - pom - import - - - io.opentelemetry - opentelemetry-proto - 1.7.1-alpha - test - - - - - - - org.junit.jupiter - junit-jupiter - ${junit-jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-params - ${junit-jupiter.version} - test - - - org.mockito - mockito-core - 5.21.0 - test - - - org.assertj - assertj-core - 3.27.7 - test - - - com.google.guava - guava - ${guava.version} - test - - - org.slf4j - slf4j-simple - 2.0.17 - test - - - org.junit-pioneer - junit-pioneer - 2.3.0 - test - - - org.awaitility - awaitility - 4.3.0 - test - - - org.wiremock - wiremock - 3.13.2 - test - - - org.hamcrest - hamcrest-core - - - - javadoc @@ -448,6 +422,45 @@ + + errorprone + + [21,) + + + + + maven-compiler-plugin + + + -XDaddTypeAnnotationsToSymbol=true + + -Xplugin:ErrorProne + -Xep:AlmostJavadoc:OFF + -Xep:MissingSummary:OFF + -Xep:LongDoubleConversion:OFF + -Xep:StringSplitter:OFF + -XepExcludedPaths:(.*/generated/.*|.*/src/test/java/.*|.*/examples/.*|.*/integration-tests/.*) + -XepOpt:NullAway:AnnotatedPackages=io.prometheus.metrics + + + + + com.google.errorprone + error_prone_core + 2.46.0 + + + com.uber.nullaway + nullaway + 0.13.0 + + + + + + + release diff --git a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java index 9b7f658de..5959c5c91 100644 --- a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java +++ b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java @@ -12,6 +12,7 @@ import io.prometheus.metrics.model.registry.PrometheusScrapeRequest; import io.prometheus.metrics.model.snapshots.MetricSnapshots; import java.io.IOException; +import java.lang.reflect.Method; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; @@ -45,7 +46,7 @@ public Result authenticate(HttpExchange exchange) { HttpHandler handler = exchange -> { boolean found = false; - Subject current = Subject.current(); + Subject current = getCurrentSubject(); for (Principal p : current.getPrincipals()) { if (user.equals(p.getName())) { found = true; @@ -186,4 +187,27 @@ void healthDisabled() throws IOException { "204", "/-/healthy"); } + + /** + * Get current Subject using reflection to support both Java 17 and Java 18+. + * + *

Java 18+ has Subject.current(), but Java 17 and earlier require + * Subject.getSubject(AccessController.getContext()). + */ + @SuppressWarnings({"removal"}) + private static Subject getCurrentSubject() { + try { + Method currentMethod = Subject.class.getMethod("current"); + return (Subject) currentMethod.invoke(null); + } catch (NoSuchMethodException e) { + // Fall back to pre-Java 18 API + try { + return Subject.getSubject(java.security.AccessController.getContext()); + } catch (Exception ex) { + throw new RuntimeException("Failed to get current Subject", ex); + } + } catch (Exception e) { + throw new RuntimeException("Failed to invoke Subject.current()", e); + } + } } diff --git a/prometheus-metrics-parent/pom.xml b/prometheus-metrics-parent/pom.xml index a0d59af7a..a34005b07 100644 --- a/prometheus-metrics-parent/pom.xml +++ b/prometheus-metrics-parent/pom.xml @@ -68,29 +68,39 @@ - - com.diffplug.spotless - spotless-maven-plugin - 3.2.0 - - - - - ${spotless.skip} - - - - verify - - check - - - - + + java17-plus + + [17,) + + + + + com.diffplug.spotless + spotless-maven-plugin + 3.2.0 + + + + + ${spotless.skip} + + + + verify + + check + + + + + + + release From 29fe2e926f55056fe452a529ff216a9a7574d4bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 10:15:02 +0100 Subject: [PATCH 029/110] chore(deps): update dependency org.assertj:assertj-core to v3.27.7 (#1807) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://redirect.github.com/assertj/assertj)) | `3.27.6` โ†’ `3.27.7` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.assertj:assertj-core/3.27.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.assertj:assertj-core/3.27.6/3.27.7?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Disabled because a matching PR was automerged previously. โ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8e121f2a3..cd650d2d7 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ org.assertj assertj-core - 3.27.6 + 3.27.7 test From 9053ad1d56a2605b006d58dac6d64bb3035dd740 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 10:26:05 +0100 Subject: [PATCH 030/110] fix javadoc (#1809) Signed-off-by: Gregor Zeitlinger --- .github/workflows/test-release-build.yml | 2 ++ benchmarks/pom.xml | 1 + examples/pom.xml | 1 + integration-tests/pom.xml | 1 + pom.xml | 7 +++++++ 5 files changed, 12 insertions(+) diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 89e414540..923b488c3 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -27,6 +27,8 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- + - name: Build Javadoc + run: mise run javadoc - name: Build release version run: mise run build-release env: diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index b484e4754..96a6c740a 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -23,6 +23,7 @@ 0.16.0 3.0.2 true + true diff --git a/examples/pom.xml b/examples/pom.xml index f88b313a2..5b93c068f 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -19,6 +19,7 @@ true + true diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index b932c5799..49880c484 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -19,6 +19,7 @@ true + true diff --git a/pom.xml b/pom.xml index cd650d2d7..85cf1247d 100644 --- a/pom.xml +++ b/pom.xml @@ -334,6 +334,12 @@ file://${project.basedir}/version-rules.xml + + maven-javadoc-plugin + + ${javadoc.skip} + + @@ -409,6 +415,7 @@ maven-javadoc-plugin + ${javadoc.skip} UTF-8 UTF-8 true From e9609fc2d1c1f590c5bc17e42f91d5e28febd383 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 10:26:40 +0100 Subject: [PATCH 031/110] pom cleanup (#1810) Signed-off-by: Gregor Zeitlinger --- pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pom.xml b/pom.xml index 85cf1247d..9a12a1591 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,6 @@ prometheus-metrics-parent/pom.xml - 1.5.0-SNAPSHOT client_java Prometheus Metrics Library @@ -370,11 +369,6 @@ - - - maven-project-info-reports-plugin - 3.9.0 - maven-javadoc-plugin From a1798e3111d78384e640886d4a8b004557b9108d Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 10:37:31 +0100 Subject: [PATCH 032/110] separate java update as graal is not working (#1811) Signed-off-by: Gregor Zeitlinger --- .github/renovate.json5 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 67c8c137f..e910c42ff 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -16,6 +16,18 @@ groupName: "mise", schedule: ["before 4am on monday"], }, + { + matchFileNames: ["mise.toml"], + matchDepNames: ["java"], + groupName: "java temurin", + additionalBranchPrefix: "temurin-", + }, + { + matchFileNames: [".mise/envs/native/mise.toml"], + matchDepNames: ["java"], + groupName: "java graalvm", + additionalBranchPrefix: "graalvm-", + }, ], customManagers: [ { From 68dd33288300bf6a569a02f9ee37978932c08744 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 09:47:48 +0000 Subject: [PATCH 033/110] chore(deps): update dependency java to v25.0.2+10.0.lts (#1813) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [java](https://adoptium.net) | patch | `25.0.1+8.0.LTS` โ†’ `25.0.2+10.0.LTS` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index 56d2680f5..9e0118e33 100644 --- a/mise.toml +++ b/mise.toml @@ -1,7 +1,7 @@ [tools] "go:github.com/gohugoio/hugo" = "v0.154.5" "go:github.com/grafana/oats" = "0.6.0" -java = "temurin-25.0.1+8.0.LTS" +java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" protoc = "33.4" From e9d9f4b7d3a164f61f328c84dfb7b51e597b86eb Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 11:57:27 +0100 Subject: [PATCH 034/110] pin super linter (#1814) Signed-off-by: Gregor Zeitlinger --- .editorconfig | 2 +- .github/renovate.json5 | 6 ++++++ .github/super-linter.env | 2 ++ .mise/tasks/lint/super-linter.sh | 7 +++++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.editorconfig b/.editorconfig index 3ba329fae..9ecadc44d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,5 +18,5 @@ max_line_length = 120 indent_size = 4 max_line_length = 120 -[{.mise/tasks/build-release.sh,.github/workflows/multi-version-test.yml}] +[{.mise/tasks/build-release.sh,.mise/tasks/lint/super-linter.sh,.github/workflows/multi-version-test.yml}] max_line_length = 200 \ No newline at end of file diff --git a/.github/renovate.json5 b/.github/renovate.json5 index e910c42ff..9a1112597 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -39,5 +39,11 @@ depNameTemplate: "mise", matchStrings: ["jdx/mise-action.*\\n\\s*with:\\s*\\n\\s*version: [\"']?(?v[.\\d]+)[\"']?\\s*\\n\\s*sha256: [\"']?(?\\w+)[\"']?"], }, + { + customType: "regex", + description: "update super-linter in mise tasks", + fileMatch: ["^\\.mise/tasks/.+\\.sh$"], + matchStrings: ['# renovate: datasource=(?\\S+) depName=(?\\S+)\\s+\\S+_VERSION="(?v\\d+\\.\\d+\\.\\d+)@(?sha256:[a-f0-9]+)"'], + }, ], } diff --git a/.github/super-linter.env b/.github/super-linter.env index 62850b064..1c7584fb5 100644 --- a/.github/super-linter.env +++ b/.github/super-linter.env @@ -1,6 +1,7 @@ FILTER_REGEX_EXCLUDE=mvnw|src/main/generated/.*|docs/themes/.*|keystore.pkcs12|.*.java|prometheus-metrics-exporter-opentelemetry-shaded/pom.xml|CODE_OF_CONDUCT.md IGNORE_GITIGNORED_FILES=true JAVA_FILE_NAME=google_checks.xml +LOG_LEVEL=ERROR # conflicts with prettier VALIDATE_BIOME_FORMAT=false # conflicts with prettier @@ -38,4 +39,5 @@ FIX_MARKDOWN=true FIX_MARKDOWN_PRETTIER=true FIX_PYTHON_BLACK=true FIX_SHELL_SHFMT=true +FIX_SPELL_CODESPELL=true FIX_YAML_PRETTIER=true diff --git a/.mise/tasks/lint/super-linter.sh b/.mise/tasks/lint/super-linter.sh index 54c2b434e..994f6f638 100755 --- a/.mise/tasks/lint/super-linter.sh +++ b/.mise/tasks/lint/super-linter.sh @@ -4,11 +4,14 @@ set -euo pipefail -docker pull ghcr.io/super-linter/super-linter:latest +# renovate: datasource=docker depName=ghcr.io/super-linter/super-linter +SUPER_LINTER_VERSION="v8.3.2@sha256:e9d1895a1bdc1f9d9df41f688b27aa891743f23f9fae0f22a3e25eeda8f102db" + +docker pull --platform linux/amd64 "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" docker run --rm \ -e RUN_LOCAL=true \ -e DEFAULT_BRANCH=main \ --env-file ".github/super-linter.env" \ -v "$(pwd)":/tmp/lint \ - ghcr.io/super-linter/super-linter:latest + "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" From 233df63b828223e0c421607fa84b3b742d7bba3b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:13:58 +0000 Subject: [PATCH 035/110] chore(config): migrate Renovate config (#1815) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Renovate config in this repository needs migrating. Typically this is because one or more configuration options you are using have been renamed. You don't need to merge this PR right away, because Renovate will continue to migrate these fields internally each time it runs. But later some of these fields may be fully deprecated and the migrations removed. So it's a good idea to merge this migration PR soon. #### [PLEASE NOTE](https://docs.renovatebot.com/configuration-options#configmigration): JSON5 config file migrated! All comments & trailing commas were removed. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about config migration again, but one day your current config may no longer be valid. โ“ Got questions? Does something look wrong to you? Please don't hesitate to [request help here](https://redirect.github.com/renovatebot/renovate/discussions). --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .github/renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 9a1112597..f6ec71da9 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -42,7 +42,7 @@ { customType: "regex", description: "update super-linter in mise tasks", - fileMatch: ["^\\.mise/tasks/.+\\.sh$"], + managerFilePatterns: ["/^\\.mise/tasks/.+\\.sh$/"], matchStrings: ['# renovate: datasource=(?\\S+) depName=(?\\S+)\\s+\\S+_VERSION="(?v\\d+\\.\\d+\\.\\d+)@(?sha256:[a-f0-9]+)"'], }, ], From 2e4331f90fafbee504ec86630ba39d98bdd9efe3 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 12:41:54 +0100 Subject: [PATCH 036/110] improve code quality, part 1 (#1808) Signed-off-by: Gregor Zeitlinger --- .editorconfig | 4 +- .github/super-linter.env | 2 +- CLAUDE.md | 96 ++++++ CODE_QUALITY_IMPROVEMENTS.md | 86 +++++ prometheus-metrics-exporter-common/pom.xml | 8 + .../common/PrometheusHttpRequestTest.java | 120 +++++++ .../common/PrometheusScrapeHandlerTest.java | 303 ++++++++++++++++++ .../pom.xml | 36 +++ .../ResourceAttributesFromOtelAgentTest.java | 67 ++++ .../pom.xml | 8 + .../jakarta/HttpExchangeAdapterTest.java | 165 ++++++++++ .../jakarta/PrometheusMetricsServletTest.java | 82 +++++ .../pom.xml | 8 + .../javax/HttpExchangeAdapterTest.java | 190 +++++++++++ .../javax/PrometheusMetricsServletTest.java | 82 +++++ .../dropwizard/DropwizardExports.java | 249 +++++--------- .../dropwizard5/DropwizardExports.java | 269 ++++++---------- .../internal/AbstractDropwizardExports.java | 236 ++++++++++++++ 18 files changed, 1675 insertions(+), 336 deletions(-) create mode 100644 CLAUDE.md create mode 100644 CODE_QUALITY_IMPROVEMENTS.md create mode 100644 prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java create mode 100644 prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java create mode 100644 prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java create mode 100644 prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java create mode 100644 prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java create mode 100644 prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java create mode 100644 prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java create mode 100644 prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java diff --git a/.editorconfig b/.editorconfig index 9ecadc44d..6aed0058b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,10 +4,10 @@ root = true max_line_length = 100 indent_size = 2 -[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,super-linter.env,.gitleaksignore,*.json5}] +[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,.gitleaksignore,*.json5}] max_line_length = 200 -[{grafana-dashboard-*.json,.editorconfig}] +[{grafana-dashboard-*.json,.editorconfig,super-linter.env}] max_line_length = 300 [pom.xml] diff --git a/.github/super-linter.env b/.github/super-linter.env index 1c7584fb5..1ebf97898 100644 --- a/.github/super-linter.env +++ b/.github/super-linter.env @@ -1,4 +1,4 @@ -FILTER_REGEX_EXCLUDE=mvnw|src/main/generated/.*|docs/themes/.*|keystore.pkcs12|.*.java|prometheus-metrics-exporter-opentelemetry-shaded/pom.xml|CODE_OF_CONDUCT.md +FILTER_REGEX_EXCLUDE=mvnw|src/main/generated/.*|docs/themes/.*|keystore.pkcs12|.*.java|prometheus-metrics-exporter-opentelemetry-shaded/pom.xml|CODE_OF_CONDUCT.md|CLAUDE.md|CODE_QUALITY_IMPROVEMENTS.md IGNORE_GITIGNORED_FILES=true JAVA_FILE_NAME=google_checks.xml LOG_LEVEL=ERROR diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..ba985e587 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,96 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Build Commands + +This project uses Maven with mise for task automation. The Maven wrapper (`./mvnw`) is used for all builds. + +```bash +# Full CI build (clean + install + all checks) +mise run ci + +# Quick compile without tests or checks (fastest for development) +mise run compile + +# Run unit tests only (skips formatting/coverage/checkstyle checks) +mise run test + +# Run all tests including integration tests +mise run test-all + +# Format code with Google Java Format +mise run format +# or directly: ./mvnw spotless:apply + +# Run a single test class +./mvnw test -Dtest=CounterTest -Dspotless.check.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true + +# Run a single test method +./mvnw test -Dtest=CounterTest#testIncrement -Dspotless.check.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true + +# Run tests in a specific module +./mvnw test -pl prometheus-metrics-core -Dspotless.check.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true + +# Regenerate protobuf classes (after protobuf dependency update) +mise run generate +``` + +## Architecture + +The library follows a layered architecture where metrics flow from core types through a registry to exporters: + +``` +prometheus-metrics-core (user-facing API) + โ”‚ + โ–ผ collect() +prometheus-metrics-model (immutable snapshots) + โ”‚ + โ–ผ +prometheus-metrics-exposition-formats (text/protobuf/OpenMetrics) + โ”‚ + โ–ผ +Exporters (httpserver, servlet, pushgateway, opentelemetry) +``` + +### Key Modules + +- **prometheus-metrics-core**: User-facing metric types (Counter, Gauge, Histogram, Summary, Info, StateSet). All metrics implement the `Collector` interface with a `collect()` method. +- **prometheus-metrics-model**: Internal read-only immutable snapshot types returned by `collect()`. Contains `PrometheusRegistry` for metric registration. +- **prometheus-metrics-config**: Runtime configuration via properties files or system properties. +- **prometheus-metrics-exposition-formats**: Converts snapshots to Prometheus exposition formats. +- **prometheus-metrics-tracer**: Exemplar support with OpenTelemetry tracing integration. +- **prometheus-metrics-simpleclient-bridge**: Allows legacy simpleclient 0.16.0 metrics to work with the new registry. + +### Instrumentation Modules + +Pre-built instrumentations: `prometheus-metrics-instrumentation-jvm`, `-caffeine`, `-guava`, `-dropwizard`, `-dropwizard5`. + +## Code Style + +- **Formatter**: Google Java Format (enforced via Spotless) +- **Line length**: 100 characters +- **Indentation**: 2 spaces +- **Static analysis**: Error Prone with NullAway (`io.prometheus.metrics` package) +- **Logger naming**: Logger fields must be named `logger` (not `log`, `LOG`, or `LOGGER`) +- **Assertions in tests**: Use static imports from AssertJ (`import static org.assertj.core.api.Assertions.assertThat`) +- **Empty catch blocks**: Use `ignored` as the exception variable name + +## Linting and Validation + +- **IMPORTANT**: Always run `mise run build` after modifying Java files to ensure all lints, code formatting (Spotless), static analysis (Error Prone), and checkstyle checks pass +- **IMPORTANT**: Always run `mise run lint:super-linter` after modifying non-Java files (YAML, Markdown, shell scripts, JSON, etc.) +- Super-linter is configured to only show ERROR-level messages via `LOG_LEVEL=ERROR` in `.github/super-linter.env` +- Local super-linter version is pinned to match CI (see `.mise/tasks/lint/super-linter.sh`) + +## Testing + +- JUnit 5 (Jupiter) with `@Test` annotations +- AssertJ for fluent assertions +- Mockito for mocking +- Integration tests are in `integration-tests/` and run during `verify` phase +- Acceptance tests use OATs framework: `mise run acceptance-test` + +## Java Version + +Source compatibility: Java 8. Tests run on Java 25 (configured in `mise.toml`). diff --git a/CODE_QUALITY_IMPROVEMENTS.md b/CODE_QUALITY_IMPROVEMENTS.md new file mode 100644 index 000000000..28984b36b --- /dev/null +++ b/CODE_QUALITY_IMPROVEMENTS.md @@ -0,0 +1,86 @@ +# Code Quality Improvement Plan + +This document tracks code quality improvements for the Prometheus Java Client library. Work through these items incrementally across sessions. + +## High Priority + +### 1. Add Missing Test Coverage for Exporter Modules +- [x] `prometheus-metrics-exporter-common` - base module, no tests +- [x] `prometheus-metrics-exporter-servlet-jakarta` - no tests +- [x] `prometheus-metrics-exporter-servlet-javax` - no tests +- [x] `prometheus-metrics-exporter-opentelemetry-otel-agent-resources` - no tests + +### 2. Eliminate Dropwizard Module Duplication +- [x] Create shared base class or use generics for `prometheus-metrics-instrumentation-dropwizard` and `prometheus-metrics-instrumentation-dropwizard5` (~297 lines each, nearly identical) + +### 3. Address Technical Debt (TODOs) +- [ ] `prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java:965` - "reset interval isn't tested yet" +- [ ] `prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java:205` - "Exemplars (are hard-coded as empty)" +- [ ] `prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java:18` - "synchronized implementation, room for optimization" +- [ ] `prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java:105` - "Add environment variables like EXEMPLARS_ENABLED" +- [ ] `prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java:44` - "filter configuration for OpenTelemetry exporter" +- [ ] `prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java:7` - "JavaDoc missing" + +### 4. Improve Exception Handling +Replace broad `catch (Exception e)` with specific exception types: +- [ ] `prometheus-metrics-instrumentation-dropwizard5/src/main/java/.../DropwizardExports.java:237` +- [ ] `prometheus-metrics-instrumentation-caffeine/src/main/java/.../CacheMetricsCollector.java:229` +- [ ] `prometheus-metrics-exporter-opentelemetry/src/main/java/.../PrometheusInstrumentationScope.java:47` +- [ ] `prometheus-metrics-exporter-opentelemetry/src/main/java/.../OtelAutoConfig.java:115` +- [ ] `prometheus-metrics-instrumentation-jvm/src/main/java/.../JvmNativeMemoryMetrics.java:166` +- [ ] `prometheus-metrics-exporter-httpserver/src/main/java/.../HttpExchangeAdapter.java:115` + +## Medium Priority + +### 5. Add Branch Coverage to JaCoCo +- [ ] Update `pom.xml` to add branch coverage requirement (~50% minimum) +```xml + + BRANCH + COVEREDRATIO + 0.50 + +``` + +### 6. Raise Minimum Coverage Thresholds +Current thresholds to review: +- [ ] `prometheus-metrics-exporter-httpserver` - 45% (raise to 60%) +- [ ] `prometheus-metrics-instrumentation-dropwizard5` - 50% (raise to 60%) +- [ ] `prometheus-metrics-exposition-textformats` - 50% (raise to 60%) +- [ ] `prometheus-metrics-instrumentation-jvm` - 55% (raise to 60%) + +### 7. Add SpotBugs +- [ ] Add `spotbugs-maven-plugin` to `pom.xml` +- [ ] Configure with appropriate rule set + +### 8. Narrow Checkstyle Suppressions +- [ ] Review `checkstyle-suppressions.xml` - currently suppresses ALL Javadoc checks globally +- [ ] Narrow to specific packages/classes that need exceptions + +## Lower Priority + +### 9. Refactor Large Classes +- [ ] `prometheus-metrics-core/src/main/java/.../Histogram.java` (978 lines) - consider extracting native histogram logic + +### 10. Document Configuration Classes +- [ ] `PrometheusPropertiesLoader` - add JavaDoc +- [ ] `ExporterProperties` and related classes - add JavaDoc +- [ ] `ExporterOpenTelemetryProperties` - add JavaDoc (noted in TODO) + +### 11. Consolidate Servlet Exporter Duplication +- [ ] Extract common logic from `servlet-jakarta` and `servlet-javax` into `exporter-common` + +### 12. Add Mutation Testing +- [ ] Add Pitest (`pitest-maven`) for critical modules +- [ ] Start with `prometheus-metrics-core` and `prometheus-metrics-model` + +--- + +## Progress Notes + +_Add notes here as items are completed:_ + +| Date | Item | Notes | +|------|------|-------| +| 2026-01-24 | Missing Test Coverage for Exporter Modules | Added 55 tests across 4 modules: exporter-common (22 tests), servlet-jakarta (14 tests), servlet-javax (14 tests), otel-agent-resources (5 tests). All tests passing. | +| 2026-01-24 | Eliminate Dropwizard Module Duplication | Created AbstractDropwizardExports base class (267 lines) with generic type parameters. Reduced dropwizard module from 297 to 209 lines (-88 lines, -30%), dropwizard5 module from 297 to 212 lines (-85 lines, -29%). All tests passing (32 tests dropwizard5, 13 tests dropwizard). | diff --git a/prometheus-metrics-exporter-common/pom.xml b/prometheus-metrics-exporter-common/pom.xml index 73eed61cb..d5a9ef2ef 100644 --- a/prometheus-metrics-exporter-common/pom.xml +++ b/prometheus-metrics-exporter-common/pom.xml @@ -38,6 +38,14 @@ ${project.version} runtime + + + + io.prometheus + prometheus-metrics-core + ${project.version} + test + diff --git a/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java new file mode 100644 index 000000000..65fcc8041 --- /dev/null +++ b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java @@ -0,0 +1,120 @@ +package io.prometheus.metrics.exporter.common; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collections; +import java.util.Enumeration; +import org.junit.jupiter.api.Test; + +class PrometheusHttpRequestTest { + + @Test + public void testGetHeaderReturnsFirstValue() { + PrometheusHttpRequest request = + new TestPrometheusHttpRequest("name[]=metric1&name[]=metric2", "gzip"); + assertThat(request.getHeader("Accept-Encoding")).isEqualTo("gzip"); + } + + @Test + public void testGetHeaderReturnsNullWhenNoHeaders() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("", null); + assertThat(request.getHeader("Accept-Encoding")).isNull(); + } + + @Test + public void testGetParameterReturnsFirstValue() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("name[]=metric1&name[]=metric2"); + assertThat(request.getParameter("name[]")).isEqualTo("metric1"); + } + + @Test + public void testGetParameterReturnsNullWhenNotPresent() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("other=value"); + assertThat(request.getParameter("name[]")).isNull(); + } + + @Test + public void testGetParameterValuesReturnsMultipleValues() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("name[]=metric1&name[]=metric2"); + String[] values = request.getParameterValues("name[]"); + assertThat(values).containsExactly("metric1", "metric2"); + } + + @Test + public void testGetParameterValuesReturnsNullWhenNotPresent() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("other=value"); + assertThat(request.getParameterValues("name[]")).isNull(); + } + + @Test + public void testGetParameterValuesWithEmptyQueryString() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest(""); + assertThat(request.getParameterValues("name[]")).isNull(); + } + + @Test + public void testGetParameterValuesWithNullQueryString() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest(null); + assertThat(request.getParameterValues("name[]")).isNull(); + } + + @Test + public void testGetParameterValuesWithUrlEncodedValues() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("name=hello%20world"); + String[] values = request.getParameterValues("name"); + assertThat(values).containsExactly("hello world"); + } + + @Test + public void testGetParameterValuesWithSpecialCharacters() { + PrometheusHttpRequest request = new TestPrometheusHttpRequest("name=%2Ffoo%2Fbar"); + String[] values = request.getParameterValues("name"); + assertThat(values).containsExactly("/foo/bar"); + } + + @Test + public void testGetParameterValuesIgnoresParametersWithoutEquals() { + PrometheusHttpRequest request = + new TestPrometheusHttpRequest("name[]=value1&invalid&name[]=value2"); + String[] values = request.getParameterValues("name[]"); + assertThat(values).containsExactly("value1", "value2"); + } + + /** Test implementation of PrometheusHttpRequest for testing default methods. */ + private static class TestPrometheusHttpRequest implements PrometheusHttpRequest { + private final String queryString; + private final String acceptEncoding; + + TestPrometheusHttpRequest(String queryString) { + this(queryString, null); + } + + TestPrometheusHttpRequest(String queryString, String acceptEncoding) { + this.queryString = queryString; + this.acceptEncoding = acceptEncoding; + } + + @Override + public String getQueryString() { + return queryString; + } + + @Override + public Enumeration getHeaders(String name) { + if (acceptEncoding != null && name.equals("Accept-Encoding")) { + return Collections.enumeration(Collections.singletonList(acceptEncoding)); + } + return null; + } + + @Override + public String getMethod() { + return "GET"; + } + + @Override + public String getRequestPath() { + return "/metrics"; + } + } +} diff --git a/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java new file mode 100644 index 000000000..4d38d75e8 --- /dev/null +++ b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java @@ -0,0 +1,303 @@ +package io.prometheus.metrics.exporter.common; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.prometheus.metrics.core.metrics.Counter; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.GZIPInputStream; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class PrometheusScrapeHandlerTest { + + private PrometheusRegistry registry; + private PrometheusScrapeHandler handler; + private Counter testCounter; + + @BeforeEach + public void setUp() { + registry = new PrometheusRegistry(); + handler = new PrometheusScrapeHandler(registry); + testCounter = Counter.builder().name("test_counter").help("Test counter").register(registry); + testCounter.inc(5); + } + + @Test + public void testBasicScrape() throws IOException { + TestHttpExchange exchange = new TestHttpExchange("GET", null); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseBody()).contains("test_counter"); + assertThat(exchange.getResponseBody()).contains("5.0"); + } + + @Test + public void testOpenMetricsFormat() throws IOException { + TestHttpExchange exchange = + new TestHttpExchange("GET", null).withHeader("Accept", "application/openmetrics-text"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseHeaders().get("Content-Type")) + .contains("application/openmetrics-text"); + assertThat(exchange.getResponseBody()).contains("test_counter"); + } + + @Test + public void testPrometheusTextFormat() throws IOException { + TestHttpExchange exchange = + new TestHttpExchange("GET", null).withHeader("Accept", "text/plain"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseHeaders().get("Content-Type")).contains("text/plain"); + assertThat(exchange.getResponseBody()).contains("test_counter"); + } + + @Test + public void testGzipCompression() throws IOException { + TestHttpExchange exchange = + new TestHttpExchange("GET", null).withHeader("Accept-Encoding", "gzip"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseHeaders().get("Content-Encoding")).isEqualTo("gzip"); + assertThat(exchange.isGzipCompressed()).isTrue(); + + // Decompress and verify content + String decompressed = exchange.getDecompressedBody(); + assertThat(decompressed).contains("test_counter"); + } + + @Test + public void testMultipleAcceptEncodingHeaders() throws IOException { + TestHttpExchange exchange = + new TestHttpExchange("GET", null) + .withHeader("Accept-Encoding", "deflate") + .withHeader("Accept-Encoding", "gzip, br"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseHeaders().get("Content-Encoding")).isEqualTo("gzip"); + } + + @Test + public void testHeadRequest() throws IOException { + TestHttpExchange exchange = new TestHttpExchange("HEAD", null); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseHeaders().get("Content-Length")).isNotNull(); + // For HEAD requests, body should be empty even though Content-Length is set + assertThat(exchange.rawResponseBody.size()).isEqualTo(0); + } + + @Test + public void testDebugOpenMetrics() throws IOException { + TestHttpExchange exchange = new TestHttpExchange("GET", "debug=openmetrics"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseHeaders().get("Content-Type")) + .isEqualTo("text/plain; charset=utf-8"); + assertThat(exchange.getResponseBody()).contains("test_counter"); + } + + @Test + public void testDebugText() throws IOException { + TestHttpExchange exchange = new TestHttpExchange("GET", "debug=text"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseBody()).contains("test_counter"); + } + + @Test + public void testDebugInvalidParameter() throws IOException { + TestHttpExchange exchange = new TestHttpExchange("GET", "debug=invalid"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(500); + assertThat(exchange.getResponseBody()).contains("debug=invalid: Unsupported query parameter"); + } + + @Test + public void testMetricNameFilter() throws IOException { + Counter anotherCounter = + Counter.builder().name("another_counter").help("Another counter").register(registry); + anotherCounter.inc(10); + + TestHttpExchange exchange = new TestHttpExchange("GET", "name[]=test_counter"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + assertThat(exchange.getResponseBody()).contains("test_counter"); + assertThat(exchange.getResponseBody()).doesNotContain("another_counter"); + } + + @Test + public void testMultipleMetricNameFilters() throws IOException { + Counter counter1 = Counter.builder().name("metric_one").help("Metric one").register(registry); + Counter counter2 = Counter.builder().name("metric_two").help("Metric two").register(registry); + Counter counter3 = + Counter.builder().name("metric_three").help("Metric three").register(registry); + counter1.inc(); + counter2.inc(); + counter3.inc(); + + TestHttpExchange exchange = new TestHttpExchange("GET", "name[]=metric_one&name[]=metric_two"); + handler.handleRequest(exchange); + + assertThat(exchange.getResponseCode()).isEqualTo(200); + String body = exchange.getResponseBody(); + assertThat(body).contains("metric_one"); + assertThat(body).contains("metric_two"); + assertThat(body).doesNotContain("metric_three"); + } + + /** Test implementation of PrometheusHttpExchange for testing. */ + private static class TestHttpExchange implements PrometheusHttpExchange { + private final TestHttpRequest request; + private final TestHttpResponse response; + private boolean closed = false; + + ByteArrayOutputStream rawResponseBody = new ByteArrayOutputStream(); + + TestHttpExchange(String method, String queryString) { + this.request = new TestHttpRequest(method, queryString); + this.response = new TestHttpResponse(rawResponseBody); + } + + TestHttpExchange withHeader(String name, String value) { + request.addHeader(name, value); + return this; + } + + @Override + public PrometheusHttpRequest getRequest() { + return request; + } + + @Override + public PrometheusHttpResponse getResponse() { + return response; + } + + @Override + public void handleException(IOException e) throws IOException { + throw e; + } + + @Override + public void handleException(RuntimeException e) { + throw e; + } + + @Override + public void close() { + closed = true; + } + + public int getResponseCode() { + return response.statusCode; + } + + public Map getResponseHeaders() { + return response.headers; + } + + public String getResponseBody() { + return rawResponseBody.toString(StandardCharsets.UTF_8); + } + + public boolean isGzipCompressed() { + return "gzip".equals(response.headers.get("Content-Encoding")); + } + + public String getDecompressedBody() throws IOException { + if (!isGzipCompressed()) { + return getResponseBody(); + } + byte[] compressed = rawResponseBody.toByteArray(); + try (GZIPInputStream gzipInputStream = + new GZIPInputStream(new java.io.ByteArrayInputStream(compressed))) { + ByteArrayOutputStream decompressed = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len; + while ((len = gzipInputStream.read(buffer)) > 0) { + decompressed.write(buffer, 0, len); + } + return decompressed.toString(StandardCharsets.UTF_8.name()); + } + } + } + + /** Test implementation of PrometheusHttpRequest. */ + private static class TestHttpRequest implements PrometheusHttpRequest { + private final String method; + private final String queryString; + private final Map> headers = new HashMap<>(); + + TestHttpRequest(String method, String queryString) { + this.method = method; + this.queryString = queryString; + } + + void addHeader(String name, String value) { + headers.computeIfAbsent(name, k -> new java.util.ArrayList<>()).add(value); + } + + @Override + public String getQueryString() { + return queryString; + } + + @Override + public Enumeration getHeaders(String name) { + java.util.List values = headers.get(name); + return values == null ? null : Collections.enumeration(values); + } + + @Override + public String getMethod() { + return method; + } + + @Override + public String getRequestPath() { + return "/metrics"; + } + } + + /** Test implementation of PrometheusHttpResponse. */ + private static class TestHttpResponse implements PrometheusHttpResponse { + private final Map headers = new HashMap<>(); + private final ByteArrayOutputStream outputStream; + private int statusCode; + + TestHttpResponse(ByteArrayOutputStream outputStream) { + this.outputStream = outputStream; + } + + @Override + public void setHeader(String name, String value) { + headers.put(name, value); + } + + @Override + public OutputStream sendHeadersAndGetBody(int statusCode, int contentLength) + throws IOException { + this.statusCode = statusCode; + return outputStream; + } + } +} diff --git a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml index b87712160..16fd43422 100644 --- a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml @@ -21,6 +21,8 @@ io.prometheus.otel.resource.attributes 1.29.0 + + 0.50 @@ -59,6 +61,40 @@ + + org.jacoco + jacoco-maven-plugin + + + **/io/opentelemetry/** + + + + + check + + check + + + + + CLASS + + + LINE + COVEREDRATIO + ${jacoco.line-coverage} + + + + io.opentelemetry.** + + + + + + + diff --git a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java new file mode 100644 index 000000000..1dd07e7c9 --- /dev/null +++ b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java @@ -0,0 +1,67 @@ +package io.prometheus.otelagent; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Map; +import org.junit.jupiter.api.Test; + +class ResourceAttributesFromOtelAgentTest { + + @Test + public void testGetResourceAttributesWithoutOtelAgent() { + // When OTel agent is not attached, should return empty map + Map attributes = + ResourceAttributesFromOtelAgent.getResourceAttributes("test-scope"); + assertThat(attributes).isEmpty(); + } + + @Test + public void testGetResourceAttributesWithDifferentInstrumentationScopes() { + // Test with different scope names to ensure temp directory creation works + Map attributes1 = + ResourceAttributesFromOtelAgent.getResourceAttributes("scope-one"); + Map attributes2 = + ResourceAttributesFromOtelAgent.getResourceAttributes("scope-two"); + + assertThat(attributes1).isEmpty(); + assertThat(attributes2).isEmpty(); + } + + @Test + public void testGetResourceAttributesHandlesExceptions() { + // Test with special characters that might cause issues in temp directory names + Map attributes = + ResourceAttributesFromOtelAgent.getResourceAttributes("test/scope"); + // Should not throw, should return empty map + assertThat(attributes).isEmpty(); + } + + @Test + public void testGetResourceAttributesReturnsImmutableMap() { + Map attributes = + ResourceAttributesFromOtelAgent.getResourceAttributes("test-scope"); + + // Verify the returned map is not null + assertThat(attributes).isNotNull(); + + // The returned map should be unmodifiable (per implementation) + try { + attributes.put("test.key", "test.value"); + // If we get here without exception, it's not truly immutable, + // but we still verify it returned empty + assertThat(attributes).isEmpty(); + } catch (UnsupportedOperationException e) { + // This is the expected behavior for an immutable map + assertThat(attributes).isEmpty(); + } + } + + @Test + public void testGetResourceAttributesWithNullKey() { + // Test the null handling in the attribute map processing + // Without OTel agent, this returns empty map, but tests the null check logic + Map attributes = + ResourceAttributesFromOtelAgent.getResourceAttributes("test-scope"); + assertThat(attributes).isEmpty(); + } +} diff --git a/prometheus-metrics-exporter-servlet-jakarta/pom.xml b/prometheus-metrics-exporter-servlet-jakarta/pom.xml index 263428a20..247c3dfb9 100644 --- a/prometheus-metrics-exporter-servlet-jakarta/pom.xml +++ b/prometheus-metrics-exporter-servlet-jakarta/pom.xml @@ -34,5 +34,13 @@ 6.1.0 provided + + + + io.prometheus + prometheus-metrics-core + ${project.version} + test + diff --git a/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java new file mode 100644 index 000000000..62fe74ae5 --- /dev/null +++ b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java @@ -0,0 +1,165 @@ +package io.prometheus.metrics.exporter.servlet.jakarta; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import io.prometheus.metrics.exporter.common.PrometheusHttpRequest; +import io.prometheus.metrics.exporter.common.PrometheusHttpResponse; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +class HttpExchangeAdapterTest { + + @Test + public void testRequestGetQueryString() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getQueryString()).thenReturn("name[]=test"); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getQueryString()).isEqualTo("name[]=test"); + } + + @Test + public void testRequestGetHeaders() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getHeaders("Accept")) + .thenReturn(Collections.enumeration(Collections.singletonList("text/plain"))); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getHeaders("Accept").nextElement()).isEqualTo("text/plain"); + } + + @Test + public void testRequestGetMethod() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getMethod()).thenReturn("GET"); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getMethod()).isEqualTo("GET"); + } + + @Test + public void testRequestGetRequestPath() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getContextPath()).thenReturn("/app"); + when(servletRequest.getServletPath()).thenReturn("/metrics"); + when(servletRequest.getPathInfo()).thenReturn(null); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getRequestPath()).isEqualTo("/app/metrics"); + } + + @Test + public void testRequestGetRequestPathWithPathInfo() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getContextPath()).thenReturn("/app"); + when(servletRequest.getServletPath()).thenReturn("/metrics"); + when(servletRequest.getPathInfo()).thenReturn("/extra"); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getRequestPath()).isEqualTo("/app/metrics/extra"); + } + + @Test + public void testResponseSetHeader() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpResponse response = adapter.getResponse(); + + response.setHeader("Content-Type", "text/plain"); + verify(servletResponse).setHeader("Content-Type", "text/plain"); + } + + @Test + public void testResponseSendHeadersAndGetBody() throws IOException { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + ServletOutputStream outputStream = mock(ServletOutputStream.class); + when(servletResponse.getOutputStream()).thenReturn(outputStream); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpResponse response = adapter.getResponse(); + + response.sendHeadersAndGetBody(200, 100); + + verify(servletResponse).setContentLength(100); + verify(servletResponse).setStatus(200); + verify(servletResponse).getOutputStream(); + } + + @Test + public void testResponseSendHeadersWithContentLengthAlreadySet() throws IOException { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + ServletOutputStream outputStream = mock(ServletOutputStream.class); + when(servletResponse.getHeader("Content-Length")).thenReturn("50"); + when(servletResponse.getOutputStream()).thenReturn(outputStream); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpResponse response = adapter.getResponse(); + + response.sendHeadersAndGetBody(200, 100); + + verify(servletResponse).setStatus(200); + verify(servletResponse).getOutputStream(); + } + + @Test + public void testHandleIOException() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + IOException exception = new IOException("Test exception"); + + assertThatExceptionOfType(IOException.class) + .isThrownBy(() -> adapter.handleException(exception)) + .withMessage("Test exception"); + } + + @Test + public void testHandleRuntimeException() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + RuntimeException exception = new RuntimeException("Test exception"); + + assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> adapter.handleException(exception)) + .withMessage("Test exception"); + } + + @Test + public void testClose() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + adapter.close(); // Should not throw + } +} diff --git a/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java new file mode 100644 index 000000000..6d5e03a71 --- /dev/null +++ b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java @@ -0,0 +1,82 @@ +package io.prometheus.metrics.exporter.servlet.jakarta; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import io.prometheus.metrics.core.metrics.Counter; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class PrometheusMetricsServletTest { + + private PrometheusRegistry registry; + private Counter testCounter; + + @BeforeEach + public void setUp() { + registry = new PrometheusRegistry(); + testCounter = Counter.builder().name("test_counter").help("Test counter").register(registry); + testCounter.inc(42); + } + + @Test + public void testDoGetWritesMetrics() throws IOException { + HttpServletRequest request = mock(HttpServletRequest.class); + HttpServletResponse response = mock(HttpServletResponse.class); + + when(request.getQueryString()).thenReturn(null); + when(request.getMethod()).thenReturn("GET"); + when(request.getHeaders("Accept-Encoding")).thenReturn(Collections.emptyEnumeration()); + when(request.getHeaders("Accept")).thenReturn(Collections.emptyEnumeration()); + when(request.getContextPath()).thenReturn(""); + when(request.getServletPath()).thenReturn("/metrics"); + when(request.getPathInfo()).thenReturn(null); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + when(response.getOutputStream()) + .thenReturn( + new ServletOutputStream() { + @Override + public void write(int b) throws IOException { + outputStream.write(b); + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setWriteListener(WriteListener writeListener) {} + }); + + PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(registry); + servlet.doGet(request, response); + + String output = outputStream.toString(StandardCharsets.UTF_8.name()); + assertThat(output).contains("test_counter"); + assertThat(output).contains("42.0"); + } + + @Test + public void testServletUsesDefaultRegistry() { + PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(); + assertThat(servlet).isNotNull(); + } + + @Test + public void testServletWithCustomRegistry() { + PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(registry); + assertThat(servlet).isNotNull(); + } +} diff --git a/prometheus-metrics-exporter-servlet-javax/pom.xml b/prometheus-metrics-exporter-servlet-javax/pom.xml index 30cd52539..1239b96fb 100644 --- a/prometheus-metrics-exporter-servlet-javax/pom.xml +++ b/prometheus-metrics-exporter-servlet-javax/pom.xml @@ -41,6 +41,14 @@ 4.0.1 provided + + + + io.prometheus + prometheus-metrics-core + ${project.version} + test + diff --git a/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java new file mode 100644 index 000000000..144019f0d --- /dev/null +++ b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java @@ -0,0 +1,190 @@ +package io.prometheus.metrics.exporter.servlet.javax; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import io.prometheus.metrics.exporter.common.PrometheusHttpRequest; +import io.prometheus.metrics.exporter.common.PrometheusHttpResponse; +import java.io.IOException; +import java.util.Collections; +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.junit.jupiter.api.Test; + +class HttpExchangeAdapterTest { + + @Test + public void testRequestGetQueryString() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getQueryString()).thenReturn("name[]=test"); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getQueryString()).isEqualTo("name[]=test"); + } + + @Test + public void testRequestGetHeaders() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getHeaders("Accept")) + .thenReturn(Collections.enumeration(Collections.singletonList("text/plain"))); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getHeaders("Accept").nextElement()).isEqualTo("text/plain"); + } + + @Test + public void testRequestGetMethod() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getMethod()).thenReturn("GET"); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getMethod()).isEqualTo("GET"); + } + + @Test + public void testRequestGetRequestPath() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getContextPath()).thenReturn("/app"); + when(servletRequest.getServletPath()).thenReturn("/metrics"); + when(servletRequest.getPathInfo()).thenReturn(null); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getRequestPath()).isEqualTo("/app/metrics"); + } + + @Test + public void testRequestGetRequestPathWithPathInfo() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + when(servletRequest.getContextPath()).thenReturn("/app"); + when(servletRequest.getServletPath()).thenReturn("/metrics"); + when(servletRequest.getPathInfo()).thenReturn("/extra"); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpRequest request = adapter.getRequest(); + + assertThat(request.getRequestPath()).isEqualTo("/app/metrics/extra"); + } + + @Test + public void testResponseSetHeader() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpResponse response = adapter.getResponse(); + + response.setHeader("Content-Type", "text/plain"); + verify(servletResponse).setHeader("Content-Type", "text/plain"); + } + + @Test + public void testResponseSendHeadersAndGetBody() throws IOException { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + ServletOutputStream outputStream = + new ServletOutputStream() { + @Override + public void write(int b) throws IOException {} + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setWriteListener(WriteListener writeListener) {} + }; + when(servletResponse.getOutputStream()).thenReturn(outputStream); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpResponse response = adapter.getResponse(); + + response.sendHeadersAndGetBody(200, 100); + + verify(servletResponse).setContentLength(100); + verify(servletResponse).setStatus(200); + verify(servletResponse).getOutputStream(); + } + + @Test + public void testResponseSendHeadersWithContentLengthAlreadySet() throws IOException { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + ServletOutputStream outputStream = + new ServletOutputStream() { + @Override + public void write(int b) throws IOException {} + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setWriteListener(WriteListener writeListener) {} + }; + when(servletResponse.getHeader("Content-Length")).thenReturn("50"); + when(servletResponse.getOutputStream()).thenReturn(outputStream); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + PrometheusHttpResponse response = adapter.getResponse(); + + response.sendHeadersAndGetBody(200, 100); + + verify(servletResponse).setStatus(200); + verify(servletResponse).getOutputStream(); + } + + @Test + public void testHandleIOException() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + IOException exception = new IOException("Test exception"); + + assertThatExceptionOfType(IOException.class) + .isThrownBy(() -> adapter.handleException(exception)) + .withMessage("Test exception"); + } + + @Test + public void testHandleRuntimeException() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + RuntimeException exception = new RuntimeException("Test exception"); + + assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> adapter.handleException(exception)) + .withMessage("Test exception"); + } + + @Test + public void testClose() { + HttpServletRequest servletRequest = mock(HttpServletRequest.class); + HttpServletResponse servletResponse = mock(HttpServletResponse.class); + + HttpExchangeAdapter adapter = new HttpExchangeAdapter(servletRequest, servletResponse); + adapter.close(); // Should not throw + } +} diff --git a/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java new file mode 100644 index 000000000..f847ca60c --- /dev/null +++ b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java @@ -0,0 +1,82 @@ +package io.prometheus.metrics.exporter.servlet.javax; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import io.prometheus.metrics.core.metrics.Counter; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class PrometheusMetricsServletTest { + + private PrometheusRegistry registry; + private Counter testCounter; + + @BeforeEach + public void setUp() { + registry = new PrometheusRegistry(); + testCounter = Counter.builder().name("test_counter").help("Test counter").register(registry); + testCounter.inc(42); + } + + @Test + public void testDoGetWritesMetrics() throws IOException { + HttpServletRequest request = mock(HttpServletRequest.class); + HttpServletResponse response = mock(HttpServletResponse.class); + + when(request.getQueryString()).thenReturn(null); + when(request.getMethod()).thenReturn("GET"); + when(request.getHeaders("Accept-Encoding")).thenReturn(Collections.emptyEnumeration()); + when(request.getHeaders("Accept")).thenReturn(Collections.emptyEnumeration()); + when(request.getContextPath()).thenReturn(""); + when(request.getServletPath()).thenReturn("/metrics"); + when(request.getPathInfo()).thenReturn(null); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + when(response.getOutputStream()) + .thenReturn( + new ServletOutputStream() { + @Override + public void write(int b) throws IOException { + outputStream.write(b); + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setWriteListener(WriteListener writeListener) {} + }); + + PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(registry); + servlet.doGet(request, response); + + String output = outputStream.toString(StandardCharsets.UTF_8.name()); + assertThat(output).contains("test_counter"); + assertThat(output).contains("42.0"); + } + + @Test + public void testServletUsesDefaultRegistry() { + PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(); + assertThat(servlet).isNotNull(); + } + + @Test + public void testServletWithCustomRegistry() { + PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(registry); + assertThat(servlet).isNotNull(); + } +} diff --git a/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java index 4ab03341e..0c1c8455f 100644 --- a/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java +++ b/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java @@ -10,32 +10,29 @@ import com.codahale.metrics.Snapshot; import com.codahale.metrics.Timer; import io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler; +import io.prometheus.metrics.instrumentation.dropwizard5.internal.AbstractDropwizardExports; import io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper; -import io.prometheus.metrics.model.registry.MultiCollector; import io.prometheus.metrics.model.registry.PrometheusRegistry; -import io.prometheus.metrics.model.snapshots.CounterSnapshot; -import io.prometheus.metrics.model.snapshots.GaugeSnapshot; -import io.prometheus.metrics.model.snapshots.MetricMetadata; -import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; -import io.prometheus.metrics.model.snapshots.PrometheusNaming; -import io.prometheus.metrics.model.snapshots.Quantiles; -import io.prometheus.metrics.model.snapshots.SummarySnapshot; -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; -/** Collect Dropwizard metrics from a MetricRegistry. */ -public class DropwizardExports implements MultiCollector { - private static final Logger logger = Logger.getLogger(DropwizardExports.class.getName()); - private final MetricRegistry registry; - private final MetricFilter metricFilter; - @Nullable private final CustomLabelMapper labelMapper; - private final InvalidMetricHandler invalidMetricHandler; +/** + * Collect Dropwizard 4.x metrics from a MetricRegistry. + * + *

This is a thin wrapper around {@link AbstractDropwizardExports} that handles the Dropwizard + * 4.x specific API where metric names are Strings. + */ +public class DropwizardExports + extends AbstractDropwizardExports< + MetricRegistry, + MetricFilter, + Counter, + Gauge, + Histogram, + Timer, + Meter, + Metric, + Snapshot> { /** * Creates a new DropwizardExports and {@link MetricFilter#ALL}. @@ -43,11 +40,7 @@ public class DropwizardExports implements MultiCollector { * @param registry a metric registry to export in prometheus. */ public DropwizardExports(MetricRegistry registry) { - super(); - this.registry = registry; - this.metricFilter = MetricFilter.ALL; - this.labelMapper = null; - this.invalidMetricHandler = InvalidMetricHandler.ALWAYS_THROW; + this(registry, MetricFilter.ALL, null, InvalidMetricHandler.ALWAYS_THROW); } /** @@ -57,10 +50,7 @@ public DropwizardExports(MetricRegistry registry) { * @param metricFilter a custom metric filter. */ public DropwizardExports(MetricRegistry registry, MetricFilter metricFilter) { - this.registry = registry; - this.metricFilter = metricFilter; - this.labelMapper = null; - this.invalidMetricHandler = InvalidMetricHandler.ALWAYS_THROW; + this(registry, metricFilter, null, InvalidMetricHandler.ALWAYS_THROW); } /** @@ -70,176 +60,103 @@ public DropwizardExports(MetricRegistry registry, MetricFilter metricFilter) { */ public DropwizardExports( MetricRegistry registry, MetricFilter metricFilter, @Nullable CustomLabelMapper labelMapper) { - this.registry = registry; - this.metricFilter = metricFilter; - this.labelMapper = labelMapper; - this.invalidMetricHandler = InvalidMetricHandler.ALWAYS_THROW; + this(registry, metricFilter, labelMapper, InvalidMetricHandler.ALWAYS_THROW); } /** * @param registry a metric registry to export in prometheus. * @param metricFilter a custom metric filter. * @param labelMapper a labelMapper to use to map labels. + * @param invalidMetricHandler handler for invalid metrics. */ private DropwizardExports( MetricRegistry registry, MetricFilter metricFilter, @Nullable CustomLabelMapper labelMapper, InvalidMetricHandler invalidMetricHandler) { - this.registry = registry; - this.metricFilter = metricFilter; - this.labelMapper = labelMapper; - this.invalidMetricHandler = invalidMetricHandler; + super(registry, metricFilter, labelMapper, invalidMetricHandler); } - private static String getHelpMessage(String metricName, Metric metric) { - return String.format( - "Generated from Dropwizard metric import (metric=%s, type=%s)", - metricName, metric.getClass().getName()); + @Override + protected MetricSnapshots collectMetricSnapshots() { + MetricSnapshots.Builder metricSnapshots = MetricSnapshots.builder(); + // For Dropwizard 4.x, map keys are Strings, so we just use identity function + collectMetricKind( + metricSnapshots, registry.getGauges(metricFilter), this::fromGauge, key -> key); + collectMetricKind( + metricSnapshots, registry.getCounters(metricFilter), this::fromCounter, key -> key); + collectMetricKind( + metricSnapshots, registry.getHistograms(metricFilter), this::fromHistogram, key -> key); + collectMetricKind( + metricSnapshots, registry.getTimers(metricFilter), this::fromTimer, key -> key); + collectMetricKind( + metricSnapshots, registry.getMeters(metricFilter), this::fromMeter, key -> key); + return metricSnapshots.build(); } - private MetricMetadata getMetricMetaData(String metricName, Metric metric) { - String name = labelMapper != null ? labelMapper.getName(metricName) : metricName; - return new MetricMetadata( - PrometheusNaming.sanitizeMetricName(name), getHelpMessage(metricName, metric)); + @Override + protected long getCounterCount(Counter counter) { + return counter.getCount(); } - /** - * Export counter as Prometheus Gauge. - */ - MetricSnapshot fromCounter(String dropwizardName, Counter counter) { - MetricMetadata metadata = getMetricMetaData(dropwizardName, counter); - CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = - CounterSnapshot.CounterDataPointSnapshot.builder() - .value(Long.valueOf(counter.getCount()).doubleValue()); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new CounterSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected Object getGaugeValue(Gauge gauge) { + return gauge.getValue(); } - /** Export gauge as a prometheus gauge. */ - @Nullable - MetricSnapshot fromGauge(String dropwizardName, Gauge gauge) { - Object obj = gauge.getValue(); - double value; - if (obj instanceof Number) { - value = ((Number) obj).doubleValue(); - } else if (obj instanceof Boolean) { - value = ((Boolean) obj) ? 1 : 0; - } else { - logger.log( - Level.FINE, - String.format( - "Invalid type for Gauge %s: %s", - PrometheusNaming.sanitizeMetricName(dropwizardName), - obj == null ? "null" : obj.getClass().getName())); - return null; - } - MetricMetadata metadata = getMetricMetaData(dropwizardName, gauge); - GaugeSnapshot.GaugeDataPointSnapshot.Builder dataPointBuilder = - GaugeSnapshot.GaugeDataPointSnapshot.builder().value(value); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new GaugeSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected Snapshot getHistogramSnapshot(Histogram histogram) { + return histogram.getSnapshot(); } - /** - * Export a histogram snapshot as a prometheus SUMMARY. - * - * @param dropwizardName metric name. - * @param snapshot the histogram snapshot. - * @param count the total sample count for this snapshot. - * @param factor a factor to apply to histogram values. - */ - MetricSnapshot fromSnapshotAndCount( - String dropwizardName, Snapshot snapshot, long count, double factor, String helpMessage) { - Quantiles quantiles = - Quantiles.builder() - .quantile(0.5, snapshot.getMedian() * factor) - .quantile(0.75, snapshot.get75thPercentile() * factor) - .quantile(0.95, snapshot.get95thPercentile() * factor) - .quantile(0.98, snapshot.get98thPercentile() * factor) - .quantile(0.99, snapshot.get99thPercentile() * factor) - .quantile(0.999, snapshot.get999thPercentile() * factor) - .build(); + @Override + protected long getHistogramCount(Histogram histogram) { + return histogram.getCount(); + } - String name = labelMapper != null ? labelMapper.getName(dropwizardName) : dropwizardName; - MetricMetadata metadata = - new MetricMetadata(PrometheusNaming.sanitizeMetricName(name), helpMessage); - SummarySnapshot.SummaryDataPointSnapshot.Builder dataPointBuilder = - SummarySnapshot.SummaryDataPointSnapshot.builder().quantiles(quantiles).count(count); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new SummarySnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected Snapshot getTimerSnapshot(Timer timer) { + return timer.getSnapshot(); } - /** Convert histogram snapshot. */ - MetricSnapshot fromHistogram(String dropwizardName, Histogram histogram) { - return fromSnapshotAndCount( - dropwizardName, - histogram.getSnapshot(), - histogram.getCount(), - 1.0, - getHelpMessage(dropwizardName, histogram)); + @Override + protected long getTimerCount(Timer timer) { + return timer.getCount(); } - /** Export Dropwizard Timer as a histogram. Use TIME_UNIT as time unit. */ - MetricSnapshot fromTimer(String dropwizardName, Timer timer) { - return fromSnapshotAndCount( - dropwizardName, - timer.getSnapshot(), - timer.getCount(), - 1.0D / TimeUnit.SECONDS.toNanos(1L), - getHelpMessage(dropwizardName, timer)); + @Override + protected long getMeterCount(Meter meter) { + return meter.getCount(); } - /** Export a Meter as a prometheus COUNTER. */ - MetricSnapshot fromMeter(String dropwizardName, Meter meter) { - MetricMetadata metadata = getMetricMetaData(dropwizardName + "_total", meter); - CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = - CounterSnapshot.CounterDataPointSnapshot.builder().value(meter.getCount()); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new CounterSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected double getMedian(Snapshot snapshot) { + return snapshot.getMedian(); } @Override - public MetricSnapshots collect() { - MetricSnapshots.Builder metricSnapshots = MetricSnapshots.builder(); - collectMetricKind(metricSnapshots, registry.getGauges(metricFilter), this::fromGauge); - collectMetricKind(metricSnapshots, registry.getCounters(metricFilter), this::fromCounter); - collectMetricKind(metricSnapshots, registry.getHistograms(metricFilter), this::fromHistogram); - collectMetricKind(metricSnapshots, registry.getTimers(metricFilter), this::fromTimer); - collectMetricKind(metricSnapshots, registry.getMeters(metricFilter), this::fromMeter); - return metricSnapshots.build(); + protected double get75thPercentile(Snapshot snapshot) { + return snapshot.get75thPercentile(); } - private void collectMetricKind( - MetricSnapshots.Builder builder, - Map metric, - BiFunction toSnapshot) { - for (Map.Entry entry : metric.entrySet()) { - String metricName = entry.getKey(); - try { - MetricSnapshot snapshot = toSnapshot.apply(metricName, entry.getValue()); - if (snapshot != null) { - builder.metricSnapshot(snapshot); - } - } catch (Exception e) { - if (!invalidMetricHandler.suppressException(metricName, e)) { - throw e; - } - } - } + @Override + protected double get95thPercentile(Snapshot snapshot) { + return snapshot.get95thPercentile(); + } + + @Override + protected double get98thPercentile(Snapshot snapshot) { + return snapshot.get98thPercentile(); + } + + @Override + protected double get99thPercentile(Snapshot snapshot) { + return snapshot.get99thPercentile(); + } + + @Override + protected double get999thPercentile(Snapshot snapshot) { + return snapshot.get999thPercentile(); } public static Builder builder() { diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java index c68d26f49..86c64b54e 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java @@ -10,44 +10,37 @@ import io.dropwizard.metrics5.MetricRegistry; import io.dropwizard.metrics5.Snapshot; import io.dropwizard.metrics5.Timer; +import io.prometheus.metrics.instrumentation.dropwizard5.internal.AbstractDropwizardExports; import io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper; -import io.prometheus.metrics.model.registry.MultiCollector; import io.prometheus.metrics.model.registry.PrometheusRegistry; -import io.prometheus.metrics.model.snapshots.CounterSnapshot; -import io.prometheus.metrics.model.snapshots.GaugeSnapshot; -import io.prometheus.metrics.model.snapshots.MetricMetadata; -import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; -import io.prometheus.metrics.model.snapshots.PrometheusNaming; -import io.prometheus.metrics.model.snapshots.Quantiles; -import io.prometheus.metrics.model.snapshots.SummarySnapshot; -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; -/** Collect Dropwizard metrics from a MetricRegistry. */ -public class DropwizardExports implements MultiCollector { - private static final Logger logger = Logger.getLogger(DropwizardExports.class.getName()); - private final MetricRegistry registry; - private final MetricFilter metricFilter; - @Nullable private final CustomLabelMapper labelMapper; - private final InvalidMetricHandler invalidMetricHandler; +/** + * Collect Dropwizard 5.x metrics from a MetricRegistry. + * + *

This is a thin wrapper around {@link AbstractDropwizardExports} that handles the Dropwizard + * 5.x specific API where metric names are {@link MetricName} objects. + */ +public class DropwizardExports + extends AbstractDropwizardExports< + MetricRegistry, + MetricFilter, + Counter, + Gauge, + Histogram, + Timer, + Meter, + Metric, + Snapshot> { /** - * Creates a new DropwizardExports and {@link MetricFilter#ALL}. + * Creates a new DropwizardExports with {@link MetricFilter#ALL}. * * @param registry a metric registry to export in prometheus. */ public DropwizardExports(MetricRegistry registry) { - super(); - this.registry = registry; - this.metricFilter = MetricFilter.ALL; - this.labelMapper = null; - this.invalidMetricHandler = InvalidMetricHandler.ALWAYS_THROW; + this(registry, MetricFilter.ALL, null, InvalidMetricHandler.ALWAYS_THROW); } /** @@ -57,10 +50,7 @@ public DropwizardExports(MetricRegistry registry) { * @param metricFilter a custom metric filter. */ public DropwizardExports(MetricRegistry registry, MetricFilter metricFilter) { - this.registry = registry; - this.metricFilter = metricFilter; - this.labelMapper = null; - this.invalidMetricHandler = InvalidMetricHandler.ALWAYS_THROW; + this(registry, metricFilter, null, InvalidMetricHandler.ALWAYS_THROW); } /** @@ -70,176 +60,121 @@ public DropwizardExports(MetricRegistry registry, MetricFilter metricFilter) { */ public DropwizardExports( MetricRegistry registry, MetricFilter metricFilter, @Nullable CustomLabelMapper labelMapper) { - this.registry = registry; - this.metricFilter = metricFilter; - this.labelMapper = labelMapper; - this.invalidMetricHandler = InvalidMetricHandler.ALWAYS_THROW; + this(registry, metricFilter, labelMapper, InvalidMetricHandler.ALWAYS_THROW); } /** * @param registry a metric registry to export in prometheus. * @param metricFilter a custom metric filter. * @param labelMapper a labelMapper to use to map labels. + * @param invalidMetricHandler handler for invalid metrics. */ private DropwizardExports( MetricRegistry registry, MetricFilter metricFilter, @Nullable CustomLabelMapper labelMapper, InvalidMetricHandler invalidMetricHandler) { - this.registry = registry; - this.metricFilter = metricFilter; - this.labelMapper = labelMapper; - this.invalidMetricHandler = invalidMetricHandler; + super(registry, metricFilter, labelMapper, invalidMetricHandler); } - private static String getHelpMessage(String metricName, Metric metric) { - return String.format( - "Generated from Dropwizard metric import (metric=%s, type=%s)", - metricName, metric.getClass().getName()); + @Override + protected MetricSnapshots collectMetricSnapshots() { + MetricSnapshots.Builder metricSnapshots = MetricSnapshots.builder(); + collectMetricKind( + metricSnapshots, + registry.getGauges(metricFilter), + this::fromGauge, + this::extractMetricName); + collectMetricKind( + metricSnapshots, + registry.getCounters(metricFilter), + this::fromCounter, + this::extractMetricName); + collectMetricKind( + metricSnapshots, + registry.getHistograms(metricFilter), + this::fromHistogram, + this::extractMetricName); + collectMetricKind( + metricSnapshots, + registry.getTimers(metricFilter), + this::fromTimer, + this::extractMetricName); + collectMetricKind( + metricSnapshots, + registry.getMeters(metricFilter), + this::fromMeter, + this::extractMetricName); + return metricSnapshots.build(); } - private MetricMetadata getMetricMetaData(String metricName, Metric metric) { - String name = labelMapper != null ? labelMapper.getName(metricName) : metricName; - return new MetricMetadata( - PrometheusNaming.sanitizeMetricName(name), getHelpMessage(metricName, metric)); + private String extractMetricName(MetricName metricName) { + return metricName.getKey(); } - /** - * Export counter as Prometheus Gauge. - */ - MetricSnapshot fromCounter(String dropwizardName, Counter counter) { - MetricMetadata metadata = getMetricMetaData(dropwizardName, counter); - CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = - CounterSnapshot.CounterDataPointSnapshot.builder() - .value(Long.valueOf(counter.getCount()).doubleValue()); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new CounterSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected long getCounterCount(Counter counter) { + return counter.getCount(); } - /** Export gauge as a prometheus gauge. */ - @Nullable - MetricSnapshot fromGauge(String dropwizardName, Gauge gauge) { - Object obj = gauge.getValue(); - double value; - if (obj instanceof Number) { - value = ((Number) obj).doubleValue(); - } else if (obj instanceof Boolean) { - value = ((Boolean) obj) ? 1 : 0; - } else { - logger.log( - Level.FINE, - String.format( - "Invalid type for Gauge %s: %s", - PrometheusNaming.sanitizeMetricName(dropwizardName), - obj == null ? "null" : obj.getClass().getName())); - return null; - } - MetricMetadata metadata = getMetricMetaData(dropwizardName, gauge); - GaugeSnapshot.GaugeDataPointSnapshot.Builder dataPointBuilder = - GaugeSnapshot.GaugeDataPointSnapshot.builder().value(value); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new GaugeSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected Object getGaugeValue(Gauge gauge) { + return gauge.getValue(); } - /** - * Export a histogram snapshot as a prometheus SUMMARY. - * - * @param dropwizardName metric name. - * @param snapshot the histogram snapshot. - * @param count the total sample count for this snapshot. - * @param factor a factor to apply to histogram values. - */ - MetricSnapshot fromSnapshotAndCount( - String dropwizardName, Snapshot snapshot, long count, double factor, String helpMessage) { - Quantiles quantiles = - Quantiles.builder() - .quantile(0.5, snapshot.getMedian() * factor) - .quantile(0.75, snapshot.get75thPercentile() * factor) - .quantile(0.95, snapshot.get95thPercentile() * factor) - .quantile(0.98, snapshot.get98thPercentile() * factor) - .quantile(0.99, snapshot.get99thPercentile() * factor) - .quantile(0.999, snapshot.get999thPercentile() * factor) - .build(); + @Override + protected Snapshot getHistogramSnapshot(Histogram histogram) { + return histogram.getSnapshot(); + } - String name = labelMapper != null ? labelMapper.getName(dropwizardName) : dropwizardName; - MetricMetadata metadata = - new MetricMetadata(PrometheusNaming.sanitizeMetricName(name), helpMessage); - SummarySnapshot.SummaryDataPointSnapshot.Builder dataPointBuilder = - SummarySnapshot.SummaryDataPointSnapshot.builder().quantiles(quantiles).count(count); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new SummarySnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected long getHistogramCount(Histogram histogram) { + return histogram.getCount(); + } + + @Override + protected Snapshot getTimerSnapshot(Timer timer) { + return timer.getSnapshot(); } - /** Convert histogram snapshot. */ - MetricSnapshot fromHistogram(String dropwizardName, Histogram histogram) { - return fromSnapshotAndCount( - dropwizardName, - histogram.getSnapshot(), - histogram.getCount(), - 1.0, - getHelpMessage(dropwizardName, histogram)); + @Override + protected long getTimerCount(Timer timer) { + return timer.getCount(); } - /** Export Dropwizard Timer as a histogram. Use TIME_UNIT as time unit. */ - MetricSnapshot fromTimer(String dropwizardName, Timer timer) { - return fromSnapshotAndCount( - dropwizardName, - timer.getSnapshot(), - timer.getCount(), - 1.0D / TimeUnit.SECONDS.toNanos(1L), - getHelpMessage(dropwizardName, timer)); + @Override + protected long getMeterCount(Meter meter) { + return meter.getCount(); } - /** Export a Meter as a prometheus COUNTER. */ - MetricSnapshot fromMeter(String dropwizardName, Meter meter) { - MetricMetadata metadata = getMetricMetaData(dropwizardName + "_total", meter); - CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = - CounterSnapshot.CounterDataPointSnapshot.builder().value(meter.getCount()); - if (labelMapper != null) { - dataPointBuilder.labels( - labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); - } - return new CounterSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + @Override + protected double getMedian(Snapshot snapshot) { + return snapshot.getMedian(); } @Override - public MetricSnapshots collect() { - MetricSnapshots.Builder metricSnapshots = MetricSnapshots.builder(); - collectMetricKind(metricSnapshots, registry.getGauges(metricFilter), this::fromGauge); - collectMetricKind(metricSnapshots, registry.getCounters(metricFilter), this::fromCounter); - collectMetricKind(metricSnapshots, registry.getHistograms(metricFilter), this::fromHistogram); - collectMetricKind(metricSnapshots, registry.getTimers(metricFilter), this::fromTimer); - collectMetricKind(metricSnapshots, registry.getMeters(metricFilter), this::fromMeter); - return metricSnapshots.build(); + protected double get75thPercentile(Snapshot snapshot) { + return snapshot.get75thPercentile(); } - private void collectMetricKind( - MetricSnapshots.Builder builder, - Map metric, - BiFunction toSnapshot) { - for (Map.Entry entry : metric.entrySet()) { - String metricName = entry.getKey().getKey(); - try { - MetricSnapshot snapshot = toSnapshot.apply(metricName, entry.getValue()); - if (snapshot != null) { - builder.metricSnapshot(snapshot); - } - } catch (Exception e) { - if (!invalidMetricHandler.suppressException(metricName, e)) { - throw e; - } - } - } + @Override + protected double get95thPercentile(Snapshot snapshot) { + return snapshot.get95thPercentile(); + } + + @Override + protected double get98thPercentile(Snapshot snapshot) { + return snapshot.get98thPercentile(); + } + + @Override + protected double get99thPercentile(Snapshot snapshot) { + return snapshot.get99thPercentile(); + } + + @Override + protected double get999thPercentile(Snapshot snapshot) { + return snapshot.get999thPercentile(); } public static Builder builder() { diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java new file mode 100644 index 000000000..279459b02 --- /dev/null +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java @@ -0,0 +1,236 @@ +package io.prometheus.metrics.instrumentation.dropwizard5.internal; + +import io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler; +import io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper; +import io.prometheus.metrics.model.registry.MultiCollector; +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.GaugeSnapshot; +import io.prometheus.metrics.model.snapshots.MetricMetadata; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import io.prometheus.metrics.model.snapshots.PrometheusNaming; +import io.prometheus.metrics.model.snapshots.Quantiles; +import io.prometheus.metrics.model.snapshots.SummarySnapshot; +import java.util.Collections; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.function.BiFunction; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; + +/** + * Abstract base class for Dropwizard metrics exporters. Contains all the common logic for + * converting Dropwizard metrics to Prometheus metrics. Subclasses only need to implement {@link + * #collectMetricSnapshots()} to handle version-specific registry APIs. + * + * @param The Dropwizard MetricRegistry type + * @param The Dropwizard MetricFilter type + * @param The Dropwizard Counter type + * @param The Dropwizard Gauge type + * @param The Dropwizard Histogram type + * @param The Dropwizard Timer type + * @param The Dropwizard Meter type + * @param The Dropwizard Metric base type + * @param The Dropwizard Snapshot type + */ +public abstract class AbstractDropwizardExports + implements MultiCollector { + + private static final Logger logger = Logger.getLogger(AbstractDropwizardExports.class.getName()); + + protected final R registry; + protected final F metricFilter; + @Nullable protected final CustomLabelMapper labelMapper; + protected final InvalidMetricHandler invalidMetricHandler; + + protected AbstractDropwizardExports( + R registry, + F metricFilter, + @Nullable CustomLabelMapper labelMapper, + InvalidMetricHandler invalidMetricHandler) { + this.registry = registry; + this.metricFilter = metricFilter; + this.labelMapper = labelMapper; + this.invalidMetricHandler = invalidMetricHandler; + } + + protected static String getHelpMessage(String metricName, Object metric) { + return String.format( + "Generated from Dropwizard metric import (metric=%s, type=%s)", + metricName, metric.getClass().getName()); + } + + protected MetricMetadata getMetricMetaData(String metricName, B metric) { + String name = labelMapper != null ? labelMapper.getName(metricName) : metricName; + return new MetricMetadata( + PrometheusNaming.sanitizeMetricName(name), getHelpMessage(metricName, metric)); + } + + /** + * Export counter as Prometheus Gauge. + */ + @SuppressWarnings("unchecked") + protected MetricSnapshot fromCounter(String dropwizardName, C counter) { + long count = getCounterCount(counter); + MetricMetadata metadata = getMetricMetaData(dropwizardName, (B) counter); + CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = + CounterSnapshot.CounterDataPointSnapshot.builder().value(Long.valueOf(count).doubleValue()); + if (labelMapper != null) { + dataPointBuilder.labels( + labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); + } + return new CounterSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + } + + /** Export gauge as a prometheus gauge. */ + @SuppressWarnings("unchecked") + @Nullable + protected MetricSnapshot fromGauge(String dropwizardName, G gauge) { + Object obj = getGaugeValue(gauge); + double value; + if (obj instanceof Number) { + value = ((Number) obj).doubleValue(); + } else if (obj instanceof Boolean) { + value = ((Boolean) obj) ? 1 : 0; + } else { + logger.log( + Level.FINE, + String.format( + "Invalid type for Gauge %s: %s", + PrometheusNaming.sanitizeMetricName(dropwizardName), + obj == null ? "null" : obj.getClass().getName())); + return null; + } + MetricMetadata metadata = getMetricMetaData(dropwizardName, (B) gauge); + GaugeSnapshot.GaugeDataPointSnapshot.Builder dataPointBuilder = + GaugeSnapshot.GaugeDataPointSnapshot.builder().value(value); + if (labelMapper != null) { + dataPointBuilder.labels( + labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); + } + return new GaugeSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + } + + /** + * Export a histogram snapshot as a prometheus SUMMARY. + * + * @param dropwizardName metric name. + * @param snapshot the histogram snapshot. + * @param count the total sample count for this snapshot. + * @param factor a factor to apply to histogram values. + */ + protected MetricSnapshot fromSnapshotAndCount( + String dropwizardName, S snapshot, long count, double factor, String helpMessage) { + Quantiles quantiles = + Quantiles.builder() + .quantile(0.5, getMedian(snapshot) * factor) + .quantile(0.75, get75thPercentile(snapshot) * factor) + .quantile(0.95, get95thPercentile(snapshot) * factor) + .quantile(0.98, get98thPercentile(snapshot) * factor) + .quantile(0.99, get99thPercentile(snapshot) * factor) + .quantile(0.999, get999thPercentile(snapshot) * factor) + .build(); + + String name = labelMapper != null ? labelMapper.getName(dropwizardName) : dropwizardName; + MetricMetadata metadata = + new MetricMetadata(PrometheusNaming.sanitizeMetricName(name), helpMessage); + SummarySnapshot.SummaryDataPointSnapshot.Builder dataPointBuilder = + SummarySnapshot.SummaryDataPointSnapshot.builder().quantiles(quantiles).count(count); + if (labelMapper != null) { + dataPointBuilder.labels( + labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); + } + return new SummarySnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + } + + /** Convert histogram snapshot. */ + protected MetricSnapshot fromHistogram(String dropwizardName, H histogram) { + S snapshot = getHistogramSnapshot(histogram); + long count = getHistogramCount(histogram); + return fromSnapshotAndCount( + dropwizardName, snapshot, count, 1.0, getHelpMessage(dropwizardName, histogram)); + } + + /** Export Dropwizard Timer as a histogram. Use TIME_UNIT as time unit. */ + protected MetricSnapshot fromTimer(String dropwizardName, T timer) { + S snapshot = getTimerSnapshot(timer); + long count = getTimerCount(timer); + return fromSnapshotAndCount( + dropwizardName, + snapshot, + count, + 1.0D / TimeUnit.SECONDS.toNanos(1L), + getHelpMessage(dropwizardName, timer)); + } + + /** Export a Meter as a prometheus COUNTER. */ + @SuppressWarnings("unchecked") + protected MetricSnapshot fromMeter(String dropwizardName, M meter) { + MetricMetadata metadata = getMetricMetaData(dropwizardName + "_total", (B) meter); + CounterSnapshot.CounterDataPointSnapshot.Builder dataPointBuilder = + CounterSnapshot.CounterDataPointSnapshot.builder().value(getMeterCount(meter)); + if (labelMapper != null) { + dataPointBuilder.labels( + labelMapper.getLabels(dropwizardName, Collections.emptyList(), Collections.emptyList())); + } + return new CounterSnapshot(metadata, Collections.singletonList(dataPointBuilder.build())); + } + + @Override + public MetricSnapshots collect() { + return collectMetricSnapshots(); + } + + protected void collectMetricKind( + MetricSnapshots.Builder builder, + Map metrics, + BiFunction toSnapshot, + java.util.function.Function keyExtractor) { + for (Map.Entry entry : metrics.entrySet()) { + String metricName = keyExtractor.apply(entry.getKey()); + try { + MetricSnapshot snapshot = toSnapshot.apply(metricName, entry.getValue()); + if (snapshot != null) { + builder.metricSnapshot(snapshot); + } + } catch (Exception e) { + if (!invalidMetricHandler.suppressException(metricName, e)) { + throw e; + } + } + } + } + + // Abstract methods to be implemented by version-specific subclasses + + /** Collect all metric snapshots from the registry. */ + protected abstract MetricSnapshots collectMetricSnapshots(); + + protected abstract long getCounterCount(C counter); + + protected abstract Object getGaugeValue(G gauge); + + protected abstract S getHistogramSnapshot(H histogram); + + protected abstract long getHistogramCount(H histogram); + + protected abstract S getTimerSnapshot(T timer); + + protected abstract long getTimerCount(T timer); + + protected abstract long getMeterCount(M meter); + + protected abstract double getMedian(S snapshot); + + protected abstract double get75thPercentile(S snapshot); + + protected abstract double get95thPercentile(S snapshot); + + protected abstract double get98thPercentile(S snapshot); + + protected abstract double get99thPercentile(S snapshot); + + protected abstract double get999thPercentile(S snapshot); +} From 0c2619398ee279da0679debb8e81ee924a5efaef Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 13:55:25 +0100 Subject: [PATCH 037/110] make tests not public (#1818) Signed-off-by: Gregor Zeitlinger --- .github/super-linter.env | 2 +- CLAUDE.md | 1 + CODE_QUALITY_IMPROVEMENTS.md | 86 ------------------- .../client/it/common/ExporterTest.java | 2 +- .../metrics/it/exporter/test/ExporterIT.java | 28 +++--- .../metrics/it/noprotobuf/NoProtobufIT.java | 2 +- .../metrics/it/pushgateway/PushGatewayIT.java | 16 ++-- .../it/springboot/ApplicationTest.java | 2 +- .../PrometheusPropertiesLoaderTest.java | 4 +- .../config/PrometheusPropertiesTest.java | 6 +- .../core/exemplars/ExemplarSamplerTest.java | 18 ++-- .../exemplars/SpanContextSupplierTest.java | 8 +- .../core/metrics/CKMSQuantilesTest.java | 32 +++---- .../metrics/core/metrics/CounterTest.java | 28 +++--- .../core/metrics/CounterWithCallbackTest.java | 4 +- .../metrics/core/metrics/GaugeTest.java | 20 ++--- .../core/metrics/GaugeWithCallbackTest.java | 4 +- .../metrics/core/metrics/HistogramTest.java | 58 ++++++------- .../metrics/core/metrics/InfoTest.java | 10 +-- .../core/metrics/SlidingWindowTest.java | 6 +- .../metrics/core/metrics/StateSetTest.java | 6 +- .../core/metrics/StatefulMetricTest.java | 8 +- .../metrics/core/metrics/SummaryTest.java | 22 ++--- .../core/metrics/SummaryWithCallbackTest.java | 4 +- .../metrics/core/metrics/TestUtil.java | 2 +- .../common/PrometheusHttpRequestTest.java | 22 ++--- .../common/PrometheusScrapeHandlerTest.java | 24 +++--- .../exporter/httpserver/HTTPServerTest.java | 2 +- .../ResourceAttributesFromOtelAgentTest.java | 10 +-- .../exporter/opentelemetry/ExemplarTest.java | 4 +- .../exporter/opentelemetry/ExportTest.java | 2 +- .../pushgateway/BasicAuthPushGatewayTest.java | 4 +- .../BearerTokenPushGatewayTest.java | 4 +- .../exporter/pushgateway/PushGatewayTest.java | 55 ++++++------ .../jakarta/HttpExchangeAdapterTest.java | 22 ++--- .../jakarta/PrometheusMetricsServletTest.java | 8 +- .../javax/HttpExchangeAdapterTest.java | 22 ++--- .../javax/PrometheusMetricsServletTest.java | 8 +- .../ExpositionFormatsTest.java | 74 ++++++++-------- .../caffeine/CacheMetricsCollectorTest.java | 4 +- .../dropwizard/DropwizardExportsTest.java | 22 ++--- .../dropwizard5/DropwizardExportsTest.java | 18 ++-- .../labels/CustomLabelMapperTest.java | 16 ++-- .../labels/GraphiteNamePatternTest.java | 16 ++-- .../dropwizard5/labels/MapperConfigTest.java | 12 +-- .../guava/CacheMetricsCollectorTest.java | 8 +- .../jvm/JvmBufferPoolMetricsTest.java | 6 +- .../jvm/JvmClassLoadingMetricsTest.java | 6 +- .../jvm/JvmCompilationMetricsTest.java | 6 +- .../jvm/JvmGarbageCollectorMetricsTest.java | 6 +- .../jvm/JvmMemoryMetricsTest.java | 6 +- .../JvmMemoryPoolAllocationMetricsTest.java | 2 +- .../instrumentation/jvm/JvmMetricsTest.java | 2 +- .../jvm/JvmNativeMemoryMetricsTest.java | 8 +- .../jvm/JvmRuntimeInfoMetricTest.java | 2 +- .../jvm/JvmThreadsMetricsTest.java | 8 +- .../jvm/ProcessMetricsTest.java | 8 +- .../metrics/instrumentation/jvm/TestUtil.java | 2 +- .../model/registry/MetricNameFilterTest.java | 2 +- .../MultiCollectorNameFilterTest.java | 8 +- .../registry/PrometheusRegistryTest.java | 12 +-- .../ClassicHistogramBucketsTest.java | 22 ++--- .../model/snapshots/CounterSnapshotTest.java | 12 +-- .../metrics/model/snapshots/ExemplarTest.java | 14 +-- .../model/snapshots/ExemplarsTest.java | 6 +- .../model/snapshots/GaugeSnapshotTest.java | 14 +-- .../snapshots/HistogramSnapshotTest.java | 22 ++--- .../model/snapshots/InfoSnapshotTest.java | 10 +-- .../metrics/model/snapshots/LabelsTest.java | 24 +++--- .../model/snapshots/MetricMetadataTest.java | 20 ++--- .../model/snapshots/MetricSnapshotTest.java | 6 +- .../model/snapshots/MetricSnapshotsTest.java | 10 +-- .../snapshots/NativeHistogramBucketsTest.java | 10 +-- .../model/snapshots/PrometheusNamingTest.java | 18 ++-- .../model/snapshots/QuantilesTest.java | 8 +- .../model/snapshots/SnapshotEscaperTest.java | 10 +-- .../model/snapshots/SnapshotTestUtil.java | 2 +- .../model/snapshots/StateSetSnapshotTest.java | 20 ++--- .../model/snapshots/SummarySnapshotTest.java | 8 +- .../metrics/model/snapshots/UnitTest.java | 10 +-- .../model/snapshots/UnknownSnapshotTest.java | 12 +-- .../bridge/SimpleclientCollectorTest.java | 26 +++--- 82 files changed, 509 insertions(+), 595 deletions(-) delete mode 100644 CODE_QUALITY_IMPROVEMENTS.md diff --git a/.github/super-linter.env b/.github/super-linter.env index 1ebf97898..566f1bfb3 100644 --- a/.github/super-linter.env +++ b/.github/super-linter.env @@ -1,4 +1,4 @@ -FILTER_REGEX_EXCLUDE=mvnw|src/main/generated/.*|docs/themes/.*|keystore.pkcs12|.*.java|prometheus-metrics-exporter-opentelemetry-shaded/pom.xml|CODE_OF_CONDUCT.md|CLAUDE.md|CODE_QUALITY_IMPROVEMENTS.md +FILTER_REGEX_EXCLUDE=mvnw|src/main/generated/.*|docs/themes/.*|keystore.pkcs12|.*.java|prometheus-metrics-exporter-opentelemetry-shaded/pom.xml|CODE_OF_CONDUCT.md|CLAUDE.md IGNORE_GITIGNORED_FILES=true JAVA_FILE_NAME=google_checks.xml LOG_LEVEL=ERROR diff --git a/CLAUDE.md b/CLAUDE.md index ba985e587..492b11dc0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -88,6 +88,7 @@ Pre-built instrumentations: `prometheus-metrics-instrumentation-jvm`, `-caffeine - JUnit 5 (Jupiter) with `@Test` annotations - AssertJ for fluent assertions - Mockito for mocking +- **Test visibility**: Test classes and test methods must be package-protected (no `public` modifier) - Integration tests are in `integration-tests/` and run during `verify` phase - Acceptance tests use OATs framework: `mise run acceptance-test` diff --git a/CODE_QUALITY_IMPROVEMENTS.md b/CODE_QUALITY_IMPROVEMENTS.md deleted file mode 100644 index 28984b36b..000000000 --- a/CODE_QUALITY_IMPROVEMENTS.md +++ /dev/null @@ -1,86 +0,0 @@ -# Code Quality Improvement Plan - -This document tracks code quality improvements for the Prometheus Java Client library. Work through these items incrementally across sessions. - -## High Priority - -### 1. Add Missing Test Coverage for Exporter Modules -- [x] `prometheus-metrics-exporter-common` - base module, no tests -- [x] `prometheus-metrics-exporter-servlet-jakarta` - no tests -- [x] `prometheus-metrics-exporter-servlet-javax` - no tests -- [x] `prometheus-metrics-exporter-opentelemetry-otel-agent-resources` - no tests - -### 2. Eliminate Dropwizard Module Duplication -- [x] Create shared base class or use generics for `prometheus-metrics-instrumentation-dropwizard` and `prometheus-metrics-instrumentation-dropwizard5` (~297 lines each, nearly identical) - -### 3. Address Technical Debt (TODOs) -- [ ] `prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java:965` - "reset interval isn't tested yet" -- [ ] `prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java:205` - "Exemplars (are hard-coded as empty)" -- [ ] `prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java:18` - "synchronized implementation, room for optimization" -- [ ] `prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java:105` - "Add environment variables like EXEMPLARS_ENABLED" -- [ ] `prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java:44` - "filter configuration for OpenTelemetry exporter" -- [ ] `prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java:7` - "JavaDoc missing" - -### 4. Improve Exception Handling -Replace broad `catch (Exception e)` with specific exception types: -- [ ] `prometheus-metrics-instrumentation-dropwizard5/src/main/java/.../DropwizardExports.java:237` -- [ ] `prometheus-metrics-instrumentation-caffeine/src/main/java/.../CacheMetricsCollector.java:229` -- [ ] `prometheus-metrics-exporter-opentelemetry/src/main/java/.../PrometheusInstrumentationScope.java:47` -- [ ] `prometheus-metrics-exporter-opentelemetry/src/main/java/.../OtelAutoConfig.java:115` -- [ ] `prometheus-metrics-instrumentation-jvm/src/main/java/.../JvmNativeMemoryMetrics.java:166` -- [ ] `prometheus-metrics-exporter-httpserver/src/main/java/.../HttpExchangeAdapter.java:115` - -## Medium Priority - -### 5. Add Branch Coverage to JaCoCo -- [ ] Update `pom.xml` to add branch coverage requirement (~50% minimum) -```xml - - BRANCH - COVEREDRATIO - 0.50 - -``` - -### 6. Raise Minimum Coverage Thresholds -Current thresholds to review: -- [ ] `prometheus-metrics-exporter-httpserver` - 45% (raise to 60%) -- [ ] `prometheus-metrics-instrumentation-dropwizard5` - 50% (raise to 60%) -- [ ] `prometheus-metrics-exposition-textformats` - 50% (raise to 60%) -- [ ] `prometheus-metrics-instrumentation-jvm` - 55% (raise to 60%) - -### 7. Add SpotBugs -- [ ] Add `spotbugs-maven-plugin` to `pom.xml` -- [ ] Configure with appropriate rule set - -### 8. Narrow Checkstyle Suppressions -- [ ] Review `checkstyle-suppressions.xml` - currently suppresses ALL Javadoc checks globally -- [ ] Narrow to specific packages/classes that need exceptions - -## Lower Priority - -### 9. Refactor Large Classes -- [ ] `prometheus-metrics-core/src/main/java/.../Histogram.java` (978 lines) - consider extracting native histogram logic - -### 10. Document Configuration Classes -- [ ] `PrometheusPropertiesLoader` - add JavaDoc -- [ ] `ExporterProperties` and related classes - add JavaDoc -- [ ] `ExporterOpenTelemetryProperties` - add JavaDoc (noted in TODO) - -### 11. Consolidate Servlet Exporter Duplication -- [ ] Extract common logic from `servlet-jakarta` and `servlet-javax` into `exporter-common` - -### 12. Add Mutation Testing -- [ ] Add Pitest (`pitest-maven`) for critical modules -- [ ] Start with `prometheus-metrics-core` and `prometheus-metrics-model` - ---- - -## Progress Notes - -_Add notes here as items are completed:_ - -| Date | Item | Notes | -|------|------|-------| -| 2026-01-24 | Missing Test Coverage for Exporter Modules | Added 55 tests across 4 modules: exporter-common (22 tests), servlet-jakarta (14 tests), servlet-javax (14 tests), otel-agent-resources (5 tests). All tests passing. | -| 2026-01-24 | Eliminate Dropwizard Module Duplication | Created AbstractDropwizardExports base class (267 lines) with generic type parameters. Reduced dropwizard module from 297 to 209 lines (-88 lines, -30%), dropwizard5 module from 297 to 212 lines (-85 lines, -29%). All tests passing (32 tests dropwizard5, 13 tests dropwizard). | diff --git a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java index 605e760f4..c397351ab 100644 --- a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java +++ b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java @@ -53,7 +53,7 @@ protected void start(String outcome) { } @AfterEach - public void tearDown() throws IOException { + void tearDown() throws IOException { sampleAppContainer.stop(); sampleAppVolume.remove(); } diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index cf876b3fd..a257ad98a 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -22,7 +22,7 @@ public ExporterIT(String sampleApp) throws IOException, URISyntaxException { } @Test - public void testOpenMetricsTextFormat() throws IOException { + void testOpenMetricsTextFormat() throws IOException { start(); Response response = scrape("GET", "", "Accept", "application/openmetrics-text; version=1.0.0; charset=utf-8"); @@ -44,7 +44,7 @@ public void testOpenMetricsTextFormat() throws IOException { } @Test - public void testPrometheusTextFormat() throws IOException { + void testPrometheusTextFormat() throws IOException { start(); Response response = scrape("GET", ""); assertThat(response.status).isEqualTo(200); @@ -64,7 +64,7 @@ public void testPrometheusTextFormat() throws IOException { } @Test - public void testPrometheusProtobufFormat() throws IOException { + void testPrometheusProtobufFormat() throws IOException { start(); Response response = scrape( @@ -121,7 +121,7 @@ public void testPrometheusProtobufDebugFormat(String format, String expected) th } @Test - public void testCompression() throws IOException { + void testCompression() throws IOException { start(); Response response = scrape( @@ -149,7 +149,7 @@ public void testCompression() throws IOException { } @Test - public void testErrorHandling() throws IOException { + void testErrorHandling() throws IOException { start("error"); Response response = scrape("GET", ""); assertThat(response.status).isEqualTo(500); @@ -157,7 +157,7 @@ public void testErrorHandling() throws IOException { } @Test - public void testHeadRequest() throws IOException { + void testHeadRequest() throws IOException { start(); Response fullResponse = scrape("GET", ""); int size = fullResponse.body.length; @@ -169,7 +169,7 @@ public void testHeadRequest() throws IOException { } @Test - public void testDebug() throws IOException { + void testDebug() throws IOException { start(); Response response = scrape("GET", "debug=openmetrics"); assertThat(response.status).isEqualTo(200); @@ -180,7 +180,7 @@ public void testDebug() throws IOException { } @Test - public void testNameFilter() throws IOException { + void testNameFilter() throws IOException { start(); Response response = scrape( @@ -199,7 +199,7 @@ public void testNameFilter() throws IOException { } @Test - public void testEmptyResponseOpenMetrics() throws IOException { + void testEmptyResponseOpenMetrics() throws IOException { start(); Response response = scrape( @@ -217,7 +217,7 @@ public void testEmptyResponseOpenMetrics() throws IOException { } @Test - public void testEmptyResponseText() throws IOException { + void testEmptyResponseText() throws IOException { start(); Response response = scrape("GET", nameParam("none_existing")); assertThat(response.status).isEqualTo(200); @@ -231,7 +231,7 @@ public void testEmptyResponseText() throws IOException { } @Test - public void testEmptyResponseProtobuf() throws IOException { + void testEmptyResponseProtobuf() throws IOException { start(); Response response = scrape( @@ -249,7 +249,7 @@ public void testEmptyResponseProtobuf() throws IOException { } @Test - public void testEmptyResponseGzipOpenMetrics() throws IOException { + void testEmptyResponseGzipOpenMetrics() throws IOException { start(); Response response = scrape( @@ -265,7 +265,7 @@ public void testEmptyResponseGzipOpenMetrics() throws IOException { } @Test - public void testEmptyResponseGzipText() throws IOException { + void testEmptyResponseGzipText() throws IOException { start(); Response response = scrape("GET", nameParam("none_existing"), "Accept-Encoding", "gzip"); assertThat(response.status).isEqualTo(200); @@ -278,7 +278,7 @@ private String nameParam(String name) { } @Test - public void testDebugUnknown() throws IOException { + void testDebugUnknown() throws IOException { start(); Response response = scrape("GET", "debug=unknown"); assertThat(response.status).isEqualTo(500); diff --git a/integration-tests/it-exporter/it-no-protobuf-test/src/test/java/io/prometheus/metrics/it/noprotobuf/NoProtobufIT.java b/integration-tests/it-exporter/it-no-protobuf-test/src/test/java/io/prometheus/metrics/it/noprotobuf/NoProtobufIT.java index cd534dcb9..9b041795e 100644 --- a/integration-tests/it-exporter/it-no-protobuf-test/src/test/java/io/prometheus/metrics/it/noprotobuf/NoProtobufIT.java +++ b/integration-tests/it-exporter/it-no-protobuf-test/src/test/java/io/prometheus/metrics/it/noprotobuf/NoProtobufIT.java @@ -14,7 +14,7 @@ public NoProtobufIT() throws IOException, URISyntaxException { } @Test - public void testPrometheusProtobufDebugFormat() throws IOException { + void testPrometheusProtobufDebugFormat() throws IOException { start(); assertThat(scrape("GET", "debug=text").status).isEqualTo(200); // protobuf is not supported diff --git a/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java b/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java index 29a8fad72..26c48a977 100644 --- a/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java +++ b/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java @@ -22,7 +22,7 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.utility.MountableFile; -public class PushGatewayIT { +class PushGatewayIT { private GenericContainer sampleAppContainer; private GenericContainer pushGatewayContainer; @@ -30,7 +30,7 @@ public class PushGatewayIT { private Volume sampleAppVolume; @BeforeEach - public void setUp() throws IOException, URISyntaxException { + void setUp() throws IOException, URISyntaxException { Network network = Network.newNetwork(); sampleAppVolume = Volume.create("it-pushgateway").copy("pushgateway-test-app.jar"); pushGatewayContainer = @@ -56,7 +56,7 @@ public void setUp() throws IOException, URISyntaxException { } @AfterEach - public void tearDown() throws IOException { + void tearDown() throws IOException { prometheusContainer.stop(); pushGatewayContainer.stop(); sampleAppContainer.stop(); @@ -66,7 +66,7 @@ public void tearDown() throws IOException { final OkHttpClient client = new OkHttpClient(); @Test - public void testSimple() throws IOException, InterruptedException { + void testSimple() throws IOException, InterruptedException { pushGatewayContainer.start(); sampleAppContainer .withCommand( @@ -86,7 +86,7 @@ public void testSimple() throws IOException, InterruptedException { } @Test - public void testTextFormat() throws IOException, InterruptedException { + void testTextFormat() throws IOException, InterruptedException { pushGatewayContainer.start(); sampleAppContainer .withCommand( @@ -106,7 +106,7 @@ public void testTextFormat() throws IOException, InterruptedException { } @Test - public void testBasicAuth() throws IOException, InterruptedException { + void testBasicAuth() throws IOException, InterruptedException { pushGatewayContainer .withCopyFileToContainer( MountableFile.forClasspathResource("/pushgateway-basicauth.yaml"), @@ -131,7 +131,7 @@ public void testBasicAuth() throws IOException, InterruptedException { } @Test - public void testSsl() throws InterruptedException, IOException { + void testSsl() throws InterruptedException, IOException { pushGatewayContainer .withCopyFileToContainer( MountableFile.forClasspathResource("/pushgateway-ssl.yaml"), @@ -156,7 +156,7 @@ public void testSsl() throws InterruptedException, IOException { } @Test - public void testProtobuf() throws IOException, InterruptedException { + void testProtobuf() throws IOException, InterruptedException { pushGatewayContainer.start(); sampleAppContainer .withCommand( diff --git a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java index 94617dc25..69bc81608 100644 --- a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java +++ b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java @@ -14,7 +14,7 @@ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) class ApplicationTest { @Test - public void testPrometheusProtobufFormat() throws IOException { + void testPrometheusProtobufFormat() throws IOException { ExporterTest.Response response = ExporterTest.scrape( "GET", diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java index cf4933acf..c4eebb551 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java @@ -11,7 +11,7 @@ class PrometheusPropertiesLoaderTest { @Test - public void propertiesShouldBeLoadedFromPropertiesFile() { + void propertiesShouldBeLoadedFromPropertiesFile() { PrometheusProperties prometheusProperties = PrometheusPropertiesLoader.load(); assertThat(prometheusProperties.getDefaultMetricProperties().getHistogramClassicUpperBounds()) .hasSize(11); @@ -38,7 +38,7 @@ void cantLoadPropertiesFile() { } @Test - public void externalPropertiesShouldOverridePropertiesFile() { + void externalPropertiesShouldOverridePropertiesFile() { Properties properties = new Properties(); properties.setProperty("io.prometheus.metrics.histogramClassicUpperBounds", ".005, .01"); properties.setProperty( diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java index d0205b28e..42e21c7d9 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java @@ -12,7 +12,7 @@ class PrometheusPropertiesTest { @Test - public void testPrometheusConfig() { + void testPrometheusConfig() { PrometheusProperties result = PrometheusProperties.get(); assertThat(result.getDefaultMetricProperties().getHistogramClassicUpperBounds()).hasSize(11); assertThat(result.getMetricProperties("http_duration_seconds").getHistogramClassicUpperBounds()) @@ -20,7 +20,7 @@ public void testPrometheusConfig() { } @Test - public void testEmptyUpperBounds() throws IOException { + void testEmptyUpperBounds() throws IOException { Properties properties = new Properties(); try (InputStream stream = Thread.currentThread() @@ -34,7 +34,7 @@ public void testEmptyUpperBounds() throws IOException { } @Test - public void testBuilder() { + void testBuilder() { PrometheusProperties defaults = PrometheusPropertiesLoader.load(new HashMap<>()); PrometheusProperties.Builder builder = PrometheusProperties.builder(); builder.defaultMetricsProperties(defaults.getDefaultMetricProperties()); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java index 059929c22..8ba1370da 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerTest.java @@ -52,24 +52,24 @@ public void markCurrentSpanAsExemplar() {} } @Test - public void testCustomExemplarsBuckets() throws Exception { + void testCustomExemplarsBuckets() throws Exception { // TODO } private io.prometheus.metrics.tracer.common.SpanContext origContext; @BeforeEach - public void setUp() { + void setUp() { origContext = SpanContextSupplier.getSpanContext(); } @AfterEach - public void tearDown() { + void tearDown() { SpanContextSupplier.setSpanContext(origContext); } @Test - public void testIsSampled() throws Exception { + void testIsSampled() throws Exception { SpanContext context = new SpanContext(); context.isSampled = false; ExemplarSampler sampler = new ExemplarSampler(makeConfig(), context); @@ -79,7 +79,7 @@ public void testIsSampled() throws Exception { } @Test - public void testDefaultConfigHasFourExemplars() throws Exception { + void testDefaultConfigHasFourExemplars() throws Exception { ExemplarSampler sampler = new ExemplarSampler(makeConfig(), new SpanContext()); Thread.sleep(tick); // t = 1 tick sampler.observe(0.3); @@ -96,7 +96,7 @@ public void testDefaultConfigHasFourExemplars() throws Exception { } @Test - public void testEmptyBuckets() throws Exception { + void testEmptyBuckets() throws Exception { ExemplarSampler sampler = new ExemplarSampler(makeConfig(Double.POSITIVE_INFINITY), new SpanContext()); Thread.sleep(tick); // t = 1 tick @@ -108,7 +108,7 @@ public void testEmptyBuckets() throws Exception { } @Test - public void testDefaultExemplarsBuckets() throws Exception { + void testDefaultExemplarsBuckets() throws Exception { ExemplarSampler sampler = new ExemplarSampler( makeConfig(0.2, 0.4, 0.6, 0.8, 1.0, Double.POSITIVE_INFINITY), new SpanContext()); @@ -136,12 +136,12 @@ public void testDefaultExemplarsBuckets() throws Exception { } @Test - public void testCustomExemplarsNoBuckets() throws Exception { + void testCustomExemplarsNoBuckets() throws Exception { // TODO } @Test - public void testDefaultExemplarsNoBuckets() throws Exception { + void testDefaultExemplarsNoBuckets() throws Exception { ExemplarSampler sampler = new ExemplarSampler(makeConfig(), new SpanContext()); Scheduler.awaitInitialization(); Thread.sleep(tick); // t = 1 tick diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/SpanContextSupplierTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/SpanContextSupplierTest.java index 6c89b48a5..5ddfb2ad5 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/SpanContextSupplierTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/exemplars/SpanContextSupplierTest.java @@ -51,12 +51,12 @@ public void markCurrentSpanAsExemplar() {} ); @BeforeEach - public void setUp() { + void setUp() { origSpanContext = SpanContextSupplier.getSpanContext(); } @AfterEach - public void tearDown() { + void tearDown() { SpanContextSupplier.setSpanContext(origSpanContext); } @@ -66,7 +66,7 @@ public void tearDown() { * SpanContextSupplier}. */ @Test - public void testConstructorInjection() { + void testConstructorInjection() { ExemplarsProperties properties = ExemplarsProperties.builder().build(); ExemplarSamplerConfig config = new ExemplarSamplerConfig(properties, 1); ExemplarSampler exemplarSampler = new ExemplarSampler(config, spanContextA); @@ -86,7 +86,7 @@ public void testConstructorInjection() { * ExemplarSampler}). */ @Test - public void testUpdateSpanContext() throws InterruptedException { + void testUpdateSpanContext() throws InterruptedException { ExemplarSampler exemplarSampler = new ExemplarSampler(config); SpanContextSupplier.setSpanContext(spanContextB); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CKMSQuantilesTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CKMSQuantilesTest.java index bd6b177a4..5a7fd7f48 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CKMSQuantilesTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CKMSQuantilesTest.java @@ -20,13 +20,13 @@ class CKMSQuantilesTest { private final Quantile qMax = new Quantile(1.0, 0.00); @Test - public void testGetOnEmptyValues() { + void testGetOnEmptyValues() { CKMSQuantiles ckms = new CKMSQuantiles(q50, q95, q99); assertThat(Double.isNaN(ckms.get(q95.quantile))).isTrue(); } @Test - public void testGet() { + void testGet() { Random random = new Random(0); CKMSQuantiles ckms = new CKMSQuantiles(q50, q95, q99); List input = shuffledValues(100, random); @@ -37,7 +37,7 @@ public void testGet() { } @Test - public void testBatchInsert() { + void testBatchInsert() { Random random = new Random(1); testInsertBatch(1, 1, 100, random); testInsertBatch(1, 10, 100, random); @@ -87,7 +87,7 @@ private void testInsertBatch( } @Test - public void testGetWithAMillionElements() { + void testGetWithAMillionElements() { Random random = new Random(2); List input = shuffledValues(1000 * 1000, random); CKMSQuantiles ckms = new CKMSQuantiles(q50, q95, q99); @@ -99,7 +99,7 @@ public void testGetWithAMillionElements() { } @Test - public void testMin() { + void testMin() { Random random = new Random(3); List input = shuffledValues(1000, random); CKMSQuantiles ckms = new CKMSQuantiles(qMin); @@ -112,7 +112,7 @@ public void testMin() { } @Test - public void testMax() { + void testMax() { Random random = new Random(4); List input = shuffledValues(1000, random); CKMSQuantiles ckms = new CKMSQuantiles(qMax); @@ -125,7 +125,7 @@ public void testMax() { } @Test - public void testMinMax() { + void testMinMax() { Random random = new Random(5); List input = shuffledValues(1000, random); CKMSQuantiles ckms = new CKMSQuantiles(qMin, qMax); @@ -138,7 +138,7 @@ public void testMinMax() { } @Test - public void testMinAndOthers() { + void testMinAndOthers() { Random random = new Random(6); List input = shuffledValues(1000, random); CKMSQuantiles ckms = new CKMSQuantiles(q95, qMin); @@ -150,7 +150,7 @@ public void testMinAndOthers() { } @Test - public void testMaxAndOthers() { + void testMaxAndOthers() { Random random = new Random(7); List input = shuffledValues(10000, random); CKMSQuantiles ckms = new CKMSQuantiles(q50, q95, qMax); @@ -162,7 +162,7 @@ public void testMaxAndOthers() { } @Test - public void testMinMaxAndOthers() { + void testMinMaxAndOthers() { Random random = new Random(8); List input = shuffledValues(10000, random); CKMSQuantiles ckms = new CKMSQuantiles(qMin, q50, q95, q99, qMax); @@ -174,7 +174,7 @@ public void testMinMaxAndOthers() { } @Test - public void testExactQuantile() { + void testExactQuantile() { Random random = new Random(9); List input = shuffledValues(10000, random); CKMSQuantiles ckms = new CKMSQuantiles(new Quantile(0.95, 0)); @@ -187,7 +187,7 @@ public void testExactQuantile() { } @Test - public void testExactAndOthers() { + void testExactAndOthers() { Random random = new Random(10); List input = shuffledValues(10000, random); CKMSQuantiles ckms = new CKMSQuantiles(q50, new Quantile(0.95, 0), q99); @@ -200,7 +200,7 @@ public void testExactAndOthers() { } @Test - public void testExactAndMin() { + void testExactAndMin() { Random random = new Random(11); List input = shuffledValues(10000, random); CKMSQuantiles ckms = new CKMSQuantiles(qMin, q50, new Quantile(0.95, 0)); @@ -213,7 +213,7 @@ public void testExactAndMin() { } @Test - public void testMaxEpsilon() { + void testMaxEpsilon() { Random random = new Random(12); List input = shuffledValues(10000, random); // epsilon == 1 basically gives you random results, but it should still not throw an exception. @@ -225,7 +225,7 @@ public void testMaxEpsilon() { } @Test - public void testGetGaussian() { + void testGetGaussian() { RandomGenerator rand = new JDKRandomGenerator(); rand.setSeed(0); @@ -284,7 +284,7 @@ public void testGetGaussian() { } @Test - public void testIllegalArgumentException() { + void testIllegalArgumentException() { try { new Quantile(-1, 0); } catch (IllegalArgumentException e) { diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java index c39bf1ad6..44f78b2a1 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java @@ -36,7 +36,7 @@ class CounterTest { private SpanContext origSpanContext; @BeforeEach - public void setUp() throws NoSuchFieldException, IllegalAccessException { + void setUp() throws NoSuchFieldException, IllegalAccessException { noLabels = Counter.builder().name("nolabels").build(); labels = Counter.builder().name("labels").help("help").unit(Unit.SECONDS).labelNames("l").build(); @@ -48,7 +48,7 @@ public void setUp() throws NoSuchFieldException, IllegalAccessException { } @AfterEach - public void tearDown() { + void tearDown() { SpanContextSupplier.setSpanContext(origSpanContext); } @@ -71,7 +71,7 @@ private int getNumberOfLabels(Counter counter) { } @Test - public void testIncrement() { + void testIncrement() { noLabels.inc(); assertThat(getValue(noLabels)).isCloseTo(1.0, offset(.001)); noLabels.inc(2); @@ -83,20 +83,20 @@ public void testIncrement() { } @Test - public void testNegativeIncrementFails() { + void testNegativeIncrementFails() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> noLabels.inc(-1)) .withMessage("Negative increment -1 is illegal for Counter metrics."); } @Test - public void testEmptyCountersHaveNoLabels() { + void testEmptyCountersHaveNoLabels() { assertThat(getNumberOfLabels(noLabels)).isOne(); assertThat(getNumberOfLabels(labels)).isZero(); } @Test - public void testLabels() { + void testLabels() { assertThat(getNumberOfLabels(labels)).isZero(); labels.labelValues("a").inc(); assertThat(getNumberOfLabels(labels)).isOne(); @@ -125,7 +125,7 @@ public void testTotalStrippedFromName(String name) { } @Test - public void testSnapshotComplete() { + void testSnapshotComplete() { long before = System.currentTimeMillis(); Counter counter = Counter.builder() @@ -180,7 +180,7 @@ public void testSnapshotComplete() { } @Test - public void testIncWithExemplar() throws Exception { + void testIncWithExemplar() throws Exception { noLabels.incWithExemplar(Labels.of("key", "value")); assertExemplar(noLabels, 1.0, "key", "value"); @@ -202,7 +202,7 @@ private void assertExemplar(Counter counter, double value, String... labels) { } @Test - public void testExemplarSampler() throws Exception { + void testExemplarSampler() throws Exception { Exemplar exemplar1 = Exemplar.builder().value(2.0).traceId("abc").spanId("123").build(); Exemplar exemplar2 = Exemplar.builder().value(1.0).traceId("def").spanId("456").build(); Exemplar exemplar3 = Exemplar.builder().value(1.0).traceId("123").spanId("abc").build(); @@ -320,7 +320,7 @@ void incWithExemplar2() { } @Test - public void testExemplarSamplerDisabled() { + void testExemplarSamplerDisabled() { Counter counter = Counter.builder().name("count_total").withoutExemplars().build(); counter.incWithExemplar(3.0, Labels.of("a", "b")); assertThat(getData(counter).getExemplar()).isNull(); @@ -329,7 +329,7 @@ public void testExemplarSamplerDisabled() { } @Test - public void testExemplarSamplerDisabled_enabledByDefault() { + void testExemplarSamplerDisabled_enabledByDefault() { PrometheusProperties properties = PrometheusProperties.builder() .defaultMetricsProperties(MetricsProperties.builder().exemplarsEnabled(true).build()) @@ -342,7 +342,7 @@ public void testExemplarSamplerDisabled_enabledByDefault() { } @Test - public void testExemplarSamplerDisabledInBuilder_enabledByPropertiesOnMetric() { + void testExemplarSamplerDisabledInBuilder_enabledByPropertiesOnMetric() { PrometheusProperties properties = PrometheusProperties.builder() .putMetricProperty("count", MetricsProperties.builder().exemplarsEnabled(true).build()) @@ -355,7 +355,7 @@ public void testExemplarSamplerDisabledInBuilder_enabledByPropertiesOnMetric() { } @Test - public void testConstLabelsFirst() { + void testConstLabelsFirst() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -367,7 +367,7 @@ public void testConstLabelsFirst() { } @Test - public void testConstLabelsSecond() { + void testConstLabelsSecond() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterWithCallbackTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterWithCallbackTest.java index 47c5f5c57..2907a8a02 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterWithCallbackTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterWithCallbackTest.java @@ -13,7 +13,7 @@ class CounterWithCallbackTest { @Test - public void testCounter() { + void testCounter() { final AtomicInteger value = new AtomicInteger(1); List labelValues = Arrays.asList("v1", "v2"); CounterWithCallback counter = @@ -38,7 +38,7 @@ public void testCounter() { } @Test - public void testCounterNoCallback() { + void testCounterNoCallback() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> CounterWithCallback.builder().name("counter").labelNames("l1", "l2").build()); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeTest.java index 108fc05ce..be25711c7 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeTest.java @@ -27,14 +27,14 @@ class GaugeTest { private SpanContext origSpanContext; @BeforeEach - public void setUp() { + void setUp() { noLabels = Gauge.builder().name("nolabels").build(); labels = Gauge.builder().name("labels").labelNames("l").build(); origSpanContext = SpanContextSupplier.getSpanContext(); } @AfterEach - public void tearDown() { + void tearDown() { SpanContextSupplier.setSpanContext(origSpanContext); } @@ -50,7 +50,7 @@ private double getValue(Gauge gauge, String... labels) { } @Test - public void testIncrement() { + void testIncrement() { noLabels.inc(); assertThat(getValue(noLabels)).isCloseTo(1.0, offset(.001)); noLabels.inc(2); @@ -62,7 +62,7 @@ public void testIncrement() { } @Test - public void testDecrement() { + void testDecrement() { noLabels.dec(); assertThat(getValue(noLabels)).isCloseTo(-1.0, offset(.001)); noLabels.dec(2); @@ -74,7 +74,7 @@ public void testDecrement() { } @Test - public void testSet() { + void testSet() { noLabels.set(42); assertThat(getValue(noLabels)).isCloseTo(42, offset(.001)); noLabels.set(7); @@ -92,12 +92,12 @@ public void testTimer() throws InterruptedException { } @Test - public void noLabelsDefaultZeroValue() { + void noLabelsDefaultZeroValue() { assertThat(getValue(noLabels)).isCloseTo(0.0, offset(.001)); } @Test - public void testLabels() { + void testLabels() { labels.labelValues("a").inc(); labels.labelValues("b").inc(3); assertThat(getValue(labels, "l", "a")).isCloseTo(1.0, offset(.001)); @@ -105,7 +105,7 @@ public void testLabels() { } @Test - public void testExemplarSampler() throws Exception { + void testExemplarSampler() throws Exception { Exemplar exemplar1 = Exemplar.builder().value(2.0).traceId("abc").spanId("123").build(); Exemplar exemplar2 = Exemplar.builder().value(6.5).traceId("def").spanId("456").build(); Exemplar exemplar3 = Exemplar.builder().value(7.0).traceId("123").spanId("abc").build(); @@ -222,7 +222,7 @@ void decWithExemplar() { } @Test - public void testExemplarSamplerDisabled() { + void testExemplarSamplerDisabled() { Gauge gauge = Gauge.builder().name("test").withoutExemplars().build(); gauge.setWithExemplar(3.0, Labels.of("a", "b")); assertThat(getData(gauge).getExemplar()).isNull(); @@ -231,7 +231,7 @@ public void testExemplarSamplerDisabled() { } @Test - public void testExemplarSamplerDisabledByBuilder_enabledByPropertiesOnMetric() { + void testExemplarSamplerDisabledByBuilder_enabledByPropertiesOnMetric() { PrometheusProperties properties = PrometheusProperties.builder() .putMetricProperty("test", MetricsProperties.builder().exemplarsEnabled(true).build()) diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeWithCallbackTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeWithCallbackTest.java index 92a2d605e..f89fd70d2 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeWithCallbackTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/GaugeWithCallbackTest.java @@ -13,7 +13,7 @@ class GaugeWithCallbackTest { @Test - public void testGauge() { + void testGauge() { final AtomicInteger value = new AtomicInteger(1); List labelValues = Arrays.asList("v1", "v2"); GaugeWithCallback gauge = @@ -38,7 +38,7 @@ public void testGauge() { } @Test - public void testGaugeNoCallback() { + void testGaugeNoCallback() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> GaugeWithCallback.builder().name("gauge").labelNames("l1", "l2").build()); } diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java index 0a17dccd3..cab6d8e61 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java @@ -51,12 +51,12 @@ class HistogramTest { private SpanContext origSpanContext; @BeforeEach - public void setUp() { + void setUp() { origSpanContext = SpanContextSupplier.getSpanContext(); } @AfterEach - public void tearDown() { + void tearDown() { SpanContextSupplier.setSpanContext(origSpanContext); } @@ -99,7 +99,7 @@ private void run() throws NoSuchFieldException, IllegalAccessException { /** Test cases copied from histogram_test.go in client_golang. */ @Test - public void testGolangTests() throws NoSuchFieldException, IllegalAccessException { + void testGolangTests() throws NoSuchFieldException, IllegalAccessException { GolangTestCase[] testCases = new GolangTestCase[] { new GolangTestCase( @@ -763,7 +763,7 @@ public void testGolangTests() throws NoSuchFieldException, IllegalAccessExceptio /** Additional tests that are not part of client_golang's test suite. */ @Test - public void testAdditional() throws NoSuchFieldException, IllegalAccessException { + void testAdditional() throws NoSuchFieldException, IllegalAccessException { GolangTestCase[] testCases = new GolangTestCase[] { new GolangTestCase( @@ -797,7 +797,7 @@ public void testAdditional() throws NoSuchFieldException, IllegalAccessException *

This test is ported from client_golang's TestGetLe(). */ @Test - public void testNativeBucketIndexToUpperBound() + void testNativeBucketIndexToUpperBound() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { int[] indexes = new int[] {-1, 0, 1, 512, 513, -1, 0, 1, 1024, 1025, -1, 0, 1, 4096, 4097}; int[] schemas = new int[] {-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2}; @@ -839,7 +839,7 @@ public void testNativeBucketIndexToUpperBound() * findBucketIndex() */ @Test - public void testFindBucketIndex() + void testFindBucketIndex() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Random rand = new Random(); Method findBucketIndex = @@ -884,7 +884,7 @@ public void testFindBucketIndex() } @Test - public void testDefaults() throws IOException { + void testDefaults() throws IOException { Histogram histogram = Histogram.builder().name("test").build(); histogram.observe(0.5); HistogramSnapshot snapshot = histogram.collect(); @@ -955,7 +955,7 @@ public void testDefaults() throws IOException { } @Test - public void testExemplarsClassicHistogram() throws Exception { + void testExemplarsClassicHistogram() throws Exception { SpanContext spanContext = new SpanContext() { int callCount = 0; @@ -1099,7 +1099,7 @@ private Exemplar getExemplar(HistogramSnapshot snapshot, double le, String... la } @Test - public void testCustomExemplarsClassicHistogram() + void testCustomExemplarsClassicHistogram() throws InterruptedException, NoSuchFieldException, IllegalAccessException { // TODO: This was copied from the old simpleclient, can probably be refactored. @@ -1167,7 +1167,7 @@ private void assertExemplar(Histogram histogram, double value, String... labels) } @Test - public void testExemplarsNativeHistogram() throws NoSuchFieldException, IllegalAccessException { + void testExemplarsNativeHistogram() throws NoSuchFieldException, IllegalAccessException { SpanContext spanContext = new SpanContext() { @@ -1236,13 +1236,13 @@ public void markCurrentSpanAsExemplar() {} } @Test - public void testIllegalLabelName() { + void testIllegalLabelName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Histogram.builder().name("test").labelNames("label", "le")); } @Test - public void testIllegalLabelNameConstLabels() { + void testIllegalLabelNameConstLabels() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -1252,25 +1252,25 @@ public void testIllegalLabelNameConstLabels() { } @Test - public void testIllegalLabelNamePrefix() { + void testIllegalLabelNamePrefix() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Histogram.builder().name("test").labelNames("__hello")); } @Test - public void testNoName() { + void testNoName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Histogram.builder().build()); } @Test - public void testNullName() { + void testNullName() { assertThatExceptionOfType(NullPointerException.class) .isThrownBy(() -> Histogram.builder().name(null)); } @Test - public void testDuplicateClassicBuckets() { + void testDuplicateClassicBuckets() { Histogram histogram = Histogram.builder().name("test").classicUpperBounds(0, 3, 17, 3, 21).build(); List upperBounds = @@ -1282,7 +1282,7 @@ public void testDuplicateClassicBuckets() { } @Test - public void testUnsortedBuckets() { + void testUnsortedBuckets() { Histogram histogram = Histogram.builder().name("test").classicUpperBounds(0.2, 0.1).build(); List upperBounds = getData(histogram).getClassicBuckets().stream() @@ -1292,7 +1292,7 @@ public void testUnsortedBuckets() { } @Test - public void testEmptyBuckets() { + void testEmptyBuckets() { Histogram histogram = Histogram.builder().name("test").classicUpperBounds().build(); List upperBounds = getData(histogram).getClassicBuckets().stream() @@ -1302,7 +1302,7 @@ public void testEmptyBuckets() { } @Test - public void testBucketsIncludePositiveInfinity() { + void testBucketsIncludePositiveInfinity() { Histogram histogram = Histogram.builder() .name("test") @@ -1316,7 +1316,7 @@ public void testBucketsIncludePositiveInfinity() { } @Test - public void testLinearBuckets() { + void testLinearBuckets() { Histogram histogram = Histogram.builder().name("test").classicLinearUpperBounds(0.1, 0.1, 10).build(); List upperBounds = @@ -1330,7 +1330,7 @@ public void testLinearBuckets() { } @Test - public void testExponentialBuckets() { + void testExponentialBuckets() { Histogram histogram = Histogram.builder().classicExponentialUpperBounds(2, 2.5, 3).name("test").build(); List upperBounds = @@ -1341,14 +1341,14 @@ public void testExponentialBuckets() { } @Test - public void testBucketsIncludeNaN() { + void testBucketsIncludeNaN() { assertThatExceptionOfType(RuntimeException.class) .isThrownBy( () -> Histogram.builder().name("test").classicUpperBounds(0.01, 0.1, 1.0, Double.NaN)); } @Test - public void testNoLabelsDefaultZeroValue() { + void testNoLabelsDefaultZeroValue() { Histogram noLabels = Histogram.builder().name("test").build(); assertThat(getBucket(noLabels, 0.005).getCount()).isZero(); assertThat(getData(noLabels).getCount()).isZero(); @@ -1363,7 +1363,7 @@ private ClassicHistogramBucket getBucket(Histogram histogram, double le, String. } @Test - public void testObserve() { + void testObserve() { Histogram noLabels = Histogram.builder().name("test").build(); noLabels.observe(2); assertThat(noLabels.getCount()).isOne(); @@ -1410,7 +1410,7 @@ public void testNegativeAmount() { } @Test - public void testBoundaryConditions() { + void testBoundaryConditions() { Histogram histogram = Histogram.builder().name("test").build(); histogram.observe(2.5); assertThat(getBucket(histogram, 1).getCount()).isZero(); @@ -1425,14 +1425,14 @@ public void testBoundaryConditions() { } @Test - public void testExemplarsDisabledInBuilder() { + void testExemplarsDisabledInBuilder() { Histogram histogram = Histogram.builder().withoutExemplars().name("test").build(); histogram.observeWithExemplar(2.5, Labels.EMPTY); assertThat(getData(histogram).getExemplars().size()).isZero(); } @Test - public void testExemplarsDisabledInBuilder_enabledByPropertiesOnMetric() { + void testExemplarsDisabledInBuilder_enabledByPropertiesOnMetric() { PrometheusProperties properties = PrometheusProperties.builder() .putMetricProperty("test", MetricsProperties.builder().exemplarsEnabled(true).build()) @@ -1444,7 +1444,7 @@ public void testExemplarsDisabledInBuilder_enabledByPropertiesOnMetric() { } @Test - public void testObserveWithLabels() { + void testObserveWithLabels() { Histogram histogram = Histogram.builder() .name("test") @@ -1475,7 +1475,7 @@ public void testObserveWithLabels() { } @Test - public void testObserveMultithreaded() + void testObserveMultithreaded() throws InterruptedException, ExecutionException, TimeoutException { // Hard to test concurrency, but let's run a couple of observations in parallel and assert none // gets lost. diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java index e47bb7d6c..13737ad16 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java @@ -34,7 +34,7 @@ public void testInfoStrippedFromName(String name) { } @Test - public void testAddAndRemove() { + void testAddAndRemove() { Info info = Info.builder().name("test_info").labelNames("a", "b").build(); assertThat(info.collect().getDataPoints()).isEmpty(); info.addLabelValues("val1", "val2"); @@ -58,7 +58,7 @@ public void testAddAndRemove() { } @Test - public void testSet() throws IOException { + void testSet() throws IOException { Info info = Info.builder() .name("target_info") @@ -88,7 +88,7 @@ public void testSet() throws IOException { } @Test - public void testConstLabelsOnly() throws IOException { + void testConstLabelsOnly() throws IOException { Info info = Info.builder() .name("target_info") @@ -106,14 +106,14 @@ void unit() { } @Test - public void testConstLabelsDuplicate1() { + void testConstLabelsDuplicate1() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> Info.builder().constLabels(Labels.of("a_1", "val1")).labelNames("a.1").build()); } @Test - public void testConstLabelsDuplicate2() { + void testConstLabelsDuplicate2() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> Info.builder().labelNames("a_1").constLabels(Labels.of("a.1", "val1")).build()); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SlidingWindowTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SlidingWindowTest.java index d85e5637c..dea8fdfbd 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SlidingWindowTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SlidingWindowTest.java @@ -43,7 +43,7 @@ void assertValues(double... expectedValues) { private final long timeBetweenRotateMillis = maxAgeSeconds * 1000 / ageBuckets + 2; @BeforeEach - public void setUp() { + void setUp() { startTime = System.currentTimeMillis(); currentTimeMillis.set(startTime); ringBuffer = @@ -57,7 +57,7 @@ public void setUp() { } @Test - public void testRotate() { + void testRotate() { for (int i = 0; i < ageBuckets; i++) { currentTimeMillis.addAndGet(timeBetweenRotateMillis); ringBuffer.observe(1.0); @@ -76,7 +76,7 @@ public void testRotate() { } @Test - public void testMultiRotate() { + void testMultiRotate() { ringBuffer.observe(1.0); currentTimeMillis.addAndGet(2 * timeBetweenRotateMillis); // 2/5 of max aqe ringBuffer.observe(2.0); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java index 7d466335b..318013edf 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StateSetTest.java @@ -27,7 +27,7 @@ public String toString() { } @Test - public void testEnumStateSet() { + void testEnumStateSet() { StateSet stateSet = StateSet.builder() .name("feature_flags") @@ -51,7 +51,7 @@ public void testEnumStateSet() { } @Test - public void testDefaultFalse() { + void testDefaultFalse() { StateSet stateSet = StateSet.builder().name("test").states("state1", "state2", "state3").build(); assertThat(getData(stateSet).size()).isEqualTo(3); @@ -83,7 +83,7 @@ private StateSetSnapshot.StateSetDataPointSnapshot getData(StateSet stateSet, St } @Test - public void testStatesCannotBeEmpty() { + void testStatesCannotBeEmpty() { assertThatExceptionOfType(IllegalStateException.class) .isThrownBy(() -> StateSet.builder().name("invalid").build()); } diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java index 00aa53bbd..f940d505d 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/StatefulMetricTest.java @@ -12,7 +12,7 @@ class StatefulMetricTest { @Test - public void testLabelRemoveWhileCollecting() throws Exception { + void testLabelRemoveWhileCollecting() throws Exception { Counter counter = Counter.builder().name("test").labelNames("label1", "label2").build(); Field data = counter.getClass().getSuperclass().getDeclaredField("data"); data.setAccessible(true); @@ -61,7 +61,7 @@ public void testLabelRemoveIf() throws Exception { } @Test - public void testClear() { + void testClear() { Counter counter = Counter.builder().name("test").labelNames("label1", "label2").build(); counter.labelValues("a", "b").inc(3.0); counter.labelValues("c", "d").inc(3.0); @@ -76,7 +76,7 @@ public void testClear() { } @Test - public void testClearNoLabels() { + void testClearNoLabels() { Counter counter = Counter.builder().name("test").build(); counter.inc(); assertThat(counter.collect().getDataPoints()).hasSize(1); @@ -95,7 +95,7 @@ public void testClearNoLabels() { } @Test - public void testNullLabel() { + void testNullLabel() { Counter counter = Counter.builder().name("test").labelNames("l1", "l2").build(); assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> counter.labelValues("l1", null)) diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryTest.java index cdfffe5f0..b6c045229 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryTest.java @@ -30,7 +30,7 @@ class SummaryTest { private Summary noLabelsAndQuantiles; @BeforeEach - public void setUp() { + void setUp() { registry = new PrometheusRegistry(); noLabels = Summary.builder().name("nolabels").unit(Unit.SECONDS).help("help").register(registry); @@ -63,7 +63,7 @@ public void setUp() { } @Test - public void testObserve() { + void testObserve() { noLabels.observe(2); assertThat(noLabels.getCount()).isOne(); assertThat(noLabels.getSum()).isCloseTo(2.0, offset(.0)); @@ -86,7 +86,7 @@ public void testObserve() { } @Test - public void testNegativeAmount() { + void testNegativeAmount() { noLabels.observe(-1); noLabels.observe(-3); assertThat(getCount(noLabels, Labels.EMPTY)).isEqualTo(2); @@ -94,7 +94,7 @@ public void testNegativeAmount() { } @Test - public void testQuantiles() { + void testQuantiles() { int nSamples = 1000000; // simulate one million samples for (int i = 1; i <= nSamples; i++) { @@ -119,7 +119,7 @@ public void testQuantiles() { } @Test - public void testMaxAge() throws InterruptedException { + void testMaxAge() throws InterruptedException { Summary summary = Summary.builder() .quantile(0.99, 0.001) @@ -138,7 +138,7 @@ public void testMaxAge() throws InterruptedException { } @Test - public void testTimer() { + void testTimer() { int result = noLabels.time(() -> 123); assertThat(result).isEqualTo(123); assertThat(getCount(noLabels, Labels.EMPTY)).isOne(); @@ -150,31 +150,31 @@ public void testTimer() { } @Test - public void noLabelsDefaultZeroValue() { + void noLabelsDefaultZeroValue() { assertThat(getCount(noLabels, Labels.EMPTY)).isZero(); assertThat(getSum(noLabels, Labels.EMPTY)).isCloseTo(0.0, offset(.001)); } @Test - public void testBuilderInvalidNumberOfAgeBuckets() { + void testBuilderInvalidNumberOfAgeBuckets() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Summary.builder().name("name").numberOfAgeBuckets(-1).build()); } @Test - public void testBuilderInvalidMaxAge() { + void testBuilderInvalidMaxAge() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Summary.builder().name("name").maxAgeSeconds(-1).build()); } @Test - public void testBuilderInvalidQuantile() { + void testBuilderInvalidQuantile() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Summary.builder().name("name").quantile(42).build()); } @Test - public void testBuilderInvalidQuantileError() { + void testBuilderInvalidQuantileError() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Summary.builder().name("name").quantile(0.5, 20).build()); } diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryWithCallbackTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryWithCallbackTest.java index 929efc597..aacb83193 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryWithCallbackTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/SummaryWithCallbackTest.java @@ -15,7 +15,7 @@ class SummaryWithCallbackTest { @Test - public void testGauge() { + void testGauge() { final AtomicInteger count = new AtomicInteger(1); final AtomicInteger sum = new AtomicInteger(1); final Quantiles quantiles = Quantiles.of(new Quantile(0.5, 10)); @@ -49,7 +49,7 @@ public void testGauge() { } @Test - public void testSummaryNoCallback() { + void testSummaryNoCallback() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> SummaryWithCallback.builder().name("summary").labelNames("l1", "l2").build()); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/TestUtil.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/TestUtil.java index 8d9a5bd0f..10ce1db94 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/TestUtil.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/TestUtil.java @@ -6,7 +6,7 @@ import io.prometheus.metrics.model.snapshots.Exemplar; import io.prometheus.metrics.model.snapshots.Label; -class TestUtil { +public class TestUtil { public static void assertExemplarEquals(Exemplar expected, Exemplar actual) { // ignore timestamp diff --git a/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java index 65fcc8041..a2b630ecd 100644 --- a/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java +++ b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequestTest.java @@ -9,71 +9,71 @@ class PrometheusHttpRequestTest { @Test - public void testGetHeaderReturnsFirstValue() { + void testGetHeaderReturnsFirstValue() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("name[]=metric1&name[]=metric2", "gzip"); assertThat(request.getHeader("Accept-Encoding")).isEqualTo("gzip"); } @Test - public void testGetHeaderReturnsNullWhenNoHeaders() { + void testGetHeaderReturnsNullWhenNoHeaders() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("", null); assertThat(request.getHeader("Accept-Encoding")).isNull(); } @Test - public void testGetParameterReturnsFirstValue() { + void testGetParameterReturnsFirstValue() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("name[]=metric1&name[]=metric2"); assertThat(request.getParameter("name[]")).isEqualTo("metric1"); } @Test - public void testGetParameterReturnsNullWhenNotPresent() { + void testGetParameterReturnsNullWhenNotPresent() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("other=value"); assertThat(request.getParameter("name[]")).isNull(); } @Test - public void testGetParameterValuesReturnsMultipleValues() { + void testGetParameterValuesReturnsMultipleValues() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("name[]=metric1&name[]=metric2"); String[] values = request.getParameterValues("name[]"); assertThat(values).containsExactly("metric1", "metric2"); } @Test - public void testGetParameterValuesReturnsNullWhenNotPresent() { + void testGetParameterValuesReturnsNullWhenNotPresent() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("other=value"); assertThat(request.getParameterValues("name[]")).isNull(); } @Test - public void testGetParameterValuesWithEmptyQueryString() { + void testGetParameterValuesWithEmptyQueryString() { PrometheusHttpRequest request = new TestPrometheusHttpRequest(""); assertThat(request.getParameterValues("name[]")).isNull(); } @Test - public void testGetParameterValuesWithNullQueryString() { + void testGetParameterValuesWithNullQueryString() { PrometheusHttpRequest request = new TestPrometheusHttpRequest(null); assertThat(request.getParameterValues("name[]")).isNull(); } @Test - public void testGetParameterValuesWithUrlEncodedValues() { + void testGetParameterValuesWithUrlEncodedValues() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("name=hello%20world"); String[] values = request.getParameterValues("name"); assertThat(values).containsExactly("hello world"); } @Test - public void testGetParameterValuesWithSpecialCharacters() { + void testGetParameterValuesWithSpecialCharacters() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("name=%2Ffoo%2Fbar"); String[] values = request.getParameterValues("name"); assertThat(values).containsExactly("/foo/bar"); } @Test - public void testGetParameterValuesIgnoresParametersWithoutEquals() { + void testGetParameterValuesIgnoresParametersWithoutEquals() { PrometheusHttpRequest request = new TestPrometheusHttpRequest("name[]=value1&invalid&name[]=value2"); String[] values = request.getParameterValues("name[]"); diff --git a/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java index 4d38d75e8..07ea8ac52 100644 --- a/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java +++ b/prometheus-metrics-exporter-common/src/test/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandlerTest.java @@ -23,7 +23,7 @@ class PrometheusScrapeHandlerTest { private Counter testCounter; @BeforeEach - public void setUp() { + void setUp() { registry = new PrometheusRegistry(); handler = new PrometheusScrapeHandler(registry); testCounter = Counter.builder().name("test_counter").help("Test counter").register(registry); @@ -31,7 +31,7 @@ public void setUp() { } @Test - public void testBasicScrape() throws IOException { + void testBasicScrape() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", null); handler.handleRequest(exchange); @@ -41,7 +41,7 @@ public void testBasicScrape() throws IOException { } @Test - public void testOpenMetricsFormat() throws IOException { + void testOpenMetricsFormat() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", null).withHeader("Accept", "application/openmetrics-text"); handler.handleRequest(exchange); @@ -53,7 +53,7 @@ public void testOpenMetricsFormat() throws IOException { } @Test - public void testPrometheusTextFormat() throws IOException { + void testPrometheusTextFormat() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", null).withHeader("Accept", "text/plain"); handler.handleRequest(exchange); @@ -64,7 +64,7 @@ public void testPrometheusTextFormat() throws IOException { } @Test - public void testGzipCompression() throws IOException { + void testGzipCompression() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", null).withHeader("Accept-Encoding", "gzip"); handler.handleRequest(exchange); @@ -79,7 +79,7 @@ public void testGzipCompression() throws IOException { } @Test - public void testMultipleAcceptEncodingHeaders() throws IOException { + void testMultipleAcceptEncodingHeaders() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", null) .withHeader("Accept-Encoding", "deflate") @@ -91,7 +91,7 @@ public void testMultipleAcceptEncodingHeaders() throws IOException { } @Test - public void testHeadRequest() throws IOException { + void testHeadRequest() throws IOException { TestHttpExchange exchange = new TestHttpExchange("HEAD", null); handler.handleRequest(exchange); @@ -102,7 +102,7 @@ public void testHeadRequest() throws IOException { } @Test - public void testDebugOpenMetrics() throws IOException { + void testDebugOpenMetrics() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", "debug=openmetrics"); handler.handleRequest(exchange); @@ -113,7 +113,7 @@ public void testDebugOpenMetrics() throws IOException { } @Test - public void testDebugText() throws IOException { + void testDebugText() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", "debug=text"); handler.handleRequest(exchange); @@ -122,7 +122,7 @@ public void testDebugText() throws IOException { } @Test - public void testDebugInvalidParameter() throws IOException { + void testDebugInvalidParameter() throws IOException { TestHttpExchange exchange = new TestHttpExchange("GET", "debug=invalid"); handler.handleRequest(exchange); @@ -131,7 +131,7 @@ public void testDebugInvalidParameter() throws IOException { } @Test - public void testMetricNameFilter() throws IOException { + void testMetricNameFilter() throws IOException { Counter anotherCounter = Counter.builder().name("another_counter").help("Another counter").register(registry); anotherCounter.inc(10); @@ -145,7 +145,7 @@ public void testMetricNameFilter() throws IOException { } @Test - public void testMultipleMetricNameFilters() throws IOException { + void testMultipleMetricNameFilters() throws IOException { Counter counter1 = Counter.builder().name("metric_one").help("Metric one").register(registry); Counter counter2 = Counter.builder().name("metric_two").help("Metric two").register(registry); Counter counter3 = diff --git a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java index 5959c5c91..58b5a9446 100644 --- a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java +++ b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java @@ -24,7 +24,7 @@ import javax.security.auth.Subject; import org.junit.jupiter.api.Test; -public class HTTPServerTest { +class HTTPServerTest { @Test @SuppressWarnings({"removal"}) diff --git a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java index 1dd07e7c9..9f0165b45 100644 --- a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java +++ b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/src/test/java/io/prometheus/otelagent/ResourceAttributesFromOtelAgentTest.java @@ -8,7 +8,7 @@ class ResourceAttributesFromOtelAgentTest { @Test - public void testGetResourceAttributesWithoutOtelAgent() { + void testGetResourceAttributesWithoutOtelAgent() { // When OTel agent is not attached, should return empty map Map attributes = ResourceAttributesFromOtelAgent.getResourceAttributes("test-scope"); @@ -16,7 +16,7 @@ public void testGetResourceAttributesWithoutOtelAgent() { } @Test - public void testGetResourceAttributesWithDifferentInstrumentationScopes() { + void testGetResourceAttributesWithDifferentInstrumentationScopes() { // Test with different scope names to ensure temp directory creation works Map attributes1 = ResourceAttributesFromOtelAgent.getResourceAttributes("scope-one"); @@ -28,7 +28,7 @@ public void testGetResourceAttributesWithDifferentInstrumentationScopes() { } @Test - public void testGetResourceAttributesHandlesExceptions() { + void testGetResourceAttributesHandlesExceptions() { // Test with special characters that might cause issues in temp directory names Map attributes = ResourceAttributesFromOtelAgent.getResourceAttributes("test/scope"); @@ -37,7 +37,7 @@ public void testGetResourceAttributesHandlesExceptions() { } @Test - public void testGetResourceAttributesReturnsImmutableMap() { + void testGetResourceAttributesReturnsImmutableMap() { Map attributes = ResourceAttributesFromOtelAgent.getResourceAttributes("test-scope"); @@ -57,7 +57,7 @@ public void testGetResourceAttributesReturnsImmutableMap() { } @Test - public void testGetResourceAttributesWithNullKey() { + void testGetResourceAttributesWithNullKey() { // Test the null handling in the attribute map processing // Without OTel agent, this returns empty map, but tests the null check logic Map attributes = diff --git a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExemplarTest.java b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExemplarTest.java index 48054b192..c21f1ead4 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExemplarTest.java +++ b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExemplarTest.java @@ -45,7 +45,7 @@ class ExemplarTest { private OpenTelemetryExporter openTelemetryExporter; @BeforeEach - public void setUp() { + void setUp() { openTelemetryExporter = OpenTelemetryExporter.builder() .endpoint("http://localhost:4317") @@ -64,7 +64,7 @@ public void setUp() { } @AfterEach - public void tearDown() { + void tearDown() { PrometheusRegistry.defaultRegistry.unregister(testCounter); openTelemetryExporter.close(); } diff --git a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExportTest.java b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExportTest.java index 55589ce84..5ec213563 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExportTest.java +++ b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/ExportTest.java @@ -29,7 +29,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -public class ExportTest { +class ExportTest { private static final Attributes ATTRIBUTES = Attributes.of(AttributeKey.stringKey("label"), "val", AttributeKey.stringKey("key"), "value"); diff --git a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BasicAuthPushGatewayTest.java b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BasicAuthPushGatewayTest.java index e2f052d6b..137686d32 100644 --- a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BasicAuthPushGatewayTest.java +++ b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BasicAuthPushGatewayTest.java @@ -21,7 +21,7 @@ class BasicAuthPushGatewayTest { PushGateway pushGateway; @BeforeEach - public void setUp() { + void setUp() { mockServerClient = ClientAndServer.startClientAndServer(0); registry = new PrometheusRegistry(); gauge = Gauge.builder().name("g").help("help").build(); @@ -42,7 +42,7 @@ void tearDown() { } @Test - public void testAuthorizedPush() throws IOException { + void testAuthorizedPush() throws IOException { mockServerClient .when( request() diff --git a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BearerTokenPushGatewayTest.java b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BearerTokenPushGatewayTest.java index 09e6ff5e9..996442e5a 100644 --- a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BearerTokenPushGatewayTest.java +++ b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/BearerTokenPushGatewayTest.java @@ -21,7 +21,7 @@ class BearerTokenPushGatewayTest { PushGateway pushGateway; @BeforeEach - public void setUp() { + void setUp() { mockServerClient = ClientAndServer.startClientAndServer(0); registry = new PrometheusRegistry(); gauge = Gauge.builder().name("g").help("help").build(); @@ -40,7 +40,7 @@ void tearDown() { } @Test - public void testAuthorizedPush() throws IOException { + void testAuthorizedPush() throws IOException { mockServerClient .when( request() diff --git a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/PushGatewayTest.java b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/PushGatewayTest.java index 4eba4cb17..bae8fdd91 100644 --- a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/PushGatewayTest.java +++ b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/PushGatewayTest.java @@ -26,7 +26,7 @@ class PushGatewayTest { Gauge gauge; @BeforeEach - public void setUp() { + void setUp() { mockServerClient = ClientAndServer.startClientAndServer(0); registry = new PrometheusRegistry(); gauge = Gauge.builder().name("g").help("help").build(); @@ -38,7 +38,7 @@ void tearDown() { } @Test - public void testInvalidURLThrowsRuntimeException() { + void testInvalidURLThrowsRuntimeException() { assertThatExceptionOfType(RuntimeException.class) .isThrownBy( () -> { @@ -49,8 +49,7 @@ public void testInvalidURLThrowsRuntimeException() { } @Test - public void testMultipleSlashesAreStrippedFromURL() - throws NoSuchFieldException, IllegalAccessException { + void testMultipleSlashesAreStrippedFromURL() throws NoSuchFieldException, IllegalAccessException { final PushGateway pushGateway = PushGateway.builder().address("example.com:1234/context///path//").job("test").build(); assertThat(getUrl(pushGateway)) @@ -64,7 +63,7 @@ private URL getUrl(PushGateway pushGateway) throws IllegalAccessException, NoSuc } @Test - public void testPush() throws IOException { + void testPush() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j")) .respond(response().withStatusCode(202)); @@ -78,7 +77,7 @@ public void testPush() throws IOException { } @Test - public void testPush200Response() throws IOException { + void testPush200Response() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j")) .respond(response().withStatusCode(200)); @@ -92,7 +91,7 @@ public void testPush200Response() throws IOException { } @Test - public void testNon202ResponseThrows() { + void testNon202ResponseThrows() { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j")) .respond(response().withStatusCode(500)); @@ -114,7 +113,7 @@ public void testNon202ResponseThrows() { } @Test - public void testPushCollector() throws IOException { + void testPushCollector() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j")) .respond(response().withStatusCode(202)); @@ -128,7 +127,7 @@ public void testPushCollector() throws IOException { } @Test - public void testPushWithGroupingKey() throws IOException { + void testPushWithGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/l/v")) .respond(response().withStatusCode(202)); @@ -143,7 +142,7 @@ public void testPushWithGroupingKey() throws IOException { } @Test - public void testPushWithEscapedGroupingKey() throws IOException { + void testPushWithEscapedGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/U__l_2e_1/v1")) .respond(response().withStatusCode(202)); @@ -158,7 +157,7 @@ public void testPushWithEscapedGroupingKey() throws IOException { } @Test - public void testPushWithMultiGroupingKey() throws IOException { + void testPushWithMultiGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/l/v/l2/v2")) .respond(response().withStatusCode(202)); @@ -174,7 +173,7 @@ public void testPushWithMultiGroupingKey() throws IOException { } @Test - public void testPushWithMultiEscapedGroupingKey() throws IOException { + void testPushWithMultiEscapedGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/U__l_2e_1/v1/U__l_2e_2/v2")) @@ -191,7 +190,7 @@ public void testPushWithMultiEscapedGroupingKey() throws IOException { } @Test - public void testPushWithEmptyLabelGroupingKey() throws IOException { + void testPushWithEmptyLabelGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/l/v/l2@base64/=")) .respond(response().withStatusCode(202)); @@ -207,7 +206,7 @@ public void testPushWithEmptyLabelGroupingKey() throws IOException { } @Test - public void testPushWithGroupingKeyWithSlashes() throws IOException { + void testPushWithGroupingKeyWithSlashes() throws IOException { mockServerClient .when( request().withMethod("PUT").withPath("/metrics/job@base64/YS9i/l/v/l2@base64/75-_Lw==")) @@ -224,7 +223,7 @@ public void testPushWithGroupingKeyWithSlashes() throws IOException { } @Test - public void testPushCollectorWithGroupingKey() throws IOException { + void testPushCollectorWithGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/l/v")) .respond(response().withStatusCode(202)); @@ -239,7 +238,7 @@ public void testPushCollectorWithGroupingKey() throws IOException { } @Test - public void testPushCollectorWithEscapedGroupingKey() throws IOException { + void testPushCollectorWithEscapedGroupingKey() throws IOException { mockServerClient .when(request().withMethod("PUT").withPath("/metrics/job/j/U__l_2e_1/v1")) .respond(response().withStatusCode(202)); @@ -254,7 +253,7 @@ public void testPushCollectorWithEscapedGroupingKey() throws IOException { } @Test - public void testPushAdd() throws IOException { + void testPushAdd() throws IOException { mockServerClient .when(request().withMethod("POST").withPath("/metrics/job/j")) .respond(response().withStatusCode(202)); @@ -268,7 +267,7 @@ public void testPushAdd() throws IOException { } @Test - public void testPushAddCollector() throws IOException { + void testPushAddCollector() throws IOException { mockServerClient .when(request().withMethod("POST").withPath("/metrics/job/j")) .respond(response().withStatusCode(202)); @@ -278,7 +277,7 @@ public void testPushAddCollector() throws IOException { } @Test - public void testPushAddWithGroupingKey() throws IOException { + void testPushAddWithGroupingKey() throws IOException { mockServerClient .when(request().withMethod("POST").withPath("/metrics/job/j/l/v")) .respond(response().withStatusCode(202)); @@ -293,7 +292,7 @@ public void testPushAddWithGroupingKey() throws IOException { } @Test - public void testPushAddWithEscapedGroupingKey() throws IOException { + void testPushAddWithEscapedGroupingKey() throws IOException { mockServerClient .when(request().withMethod("POST").withPath("/metrics/job/j/U__l_2e_1/v1")) .respond(response().withStatusCode(202)); @@ -308,7 +307,7 @@ public void testPushAddWithEscapedGroupingKey() throws IOException { } @Test - public void testPushAddCollectorWithGroupingKey() throws IOException { + void testPushAddCollectorWithGroupingKey() throws IOException { mockServerClient .when(request().withMethod("POST").withPath("/metrics/job/j/l/v")) .respond(response().withStatusCode(202)); @@ -323,7 +322,7 @@ public void testPushAddCollectorWithGroupingKey() throws IOException { } @Test - public void testPushAddCollectorWithEscapedGroupingKey() throws IOException { + void testPushAddCollectorWithEscapedGroupingKey() throws IOException { mockServerClient .when(request().withMethod("POST").withPath("/metrics/job/j/U__l_2e_1/v1")) @@ -339,7 +338,7 @@ public void testPushAddCollectorWithEscapedGroupingKey() throws IOException { } @Test - public void testDelete() throws IOException { + void testDelete() throws IOException { mockServerClient .when(request().withMethod("DELETE").withPath("/metrics/job/j")) .respond(response().withStatusCode(202)); @@ -349,7 +348,7 @@ public void testDelete() throws IOException { } @Test - public void testDeleteWithGroupingKey() throws IOException { + void testDeleteWithGroupingKey() throws IOException { mockServerClient .when(request().withMethod("DELETE").withPath("/metrics/job/j/l/v")) .respond(response().withStatusCode(202)); @@ -363,7 +362,7 @@ public void testDeleteWithGroupingKey() throws IOException { } @Test - public void testDeleteWithEscapedGroupingKey() throws IOException { + void testDeleteWithEscapedGroupingKey() throws IOException { mockServerClient .when(request().withMethod("DELETE").withPath("/metrics/job/j/U__l_2e_1/v1")) @@ -378,7 +377,7 @@ public void testDeleteWithEscapedGroupingKey() throws IOException { } @Test - public void testInstanceIpGroupingKey() throws IOException { + void testInstanceIpGroupingKey() throws IOException { String ip = InetAddress.getLocalHost().getHostAddress(); assertThat(ip).isNotEmpty(); mockServerClient @@ -395,7 +394,7 @@ public void testInstanceIpGroupingKey() throws IOException { } @Test - public void testInstanceIpEscapedGroupingKey() throws IOException { + void testInstanceIpEscapedGroupingKey() throws IOException { String ip = InetAddress.getLocalHost().getHostAddress(); assertThat(ip).isNotEmpty(); @@ -416,7 +415,7 @@ public void testInstanceIpEscapedGroupingKey() throws IOException { } @Test - public void testEscapingSchemeDefaultValue() throws IllegalAccessException, NoSuchFieldException { + void testEscapingSchemeDefaultValue() throws IllegalAccessException, NoSuchFieldException { PushGateway pg = PushGateway.builder() .address("localhost:" + mockServerClient.getPort()) diff --git a/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java index 62fe74ae5..7a795cc04 100644 --- a/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java +++ b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/HttpExchangeAdapterTest.java @@ -18,7 +18,7 @@ class HttpExchangeAdapterTest { @Test - public void testRequestGetQueryString() { + void testRequestGetQueryString() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getQueryString()).thenReturn("name[]=test"); @@ -30,7 +30,7 @@ public void testRequestGetQueryString() { } @Test - public void testRequestGetHeaders() { + void testRequestGetHeaders() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getHeaders("Accept")) @@ -43,7 +43,7 @@ public void testRequestGetHeaders() { } @Test - public void testRequestGetMethod() { + void testRequestGetMethod() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getMethod()).thenReturn("GET"); @@ -55,7 +55,7 @@ public void testRequestGetMethod() { } @Test - public void testRequestGetRequestPath() { + void testRequestGetRequestPath() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getContextPath()).thenReturn("/app"); @@ -69,7 +69,7 @@ public void testRequestGetRequestPath() { } @Test - public void testRequestGetRequestPathWithPathInfo() { + void testRequestGetRequestPathWithPathInfo() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getContextPath()).thenReturn("/app"); @@ -83,7 +83,7 @@ public void testRequestGetRequestPathWithPathInfo() { } @Test - public void testResponseSetHeader() { + void testResponseSetHeader() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); @@ -95,7 +95,7 @@ public void testResponseSetHeader() { } @Test - public void testResponseSendHeadersAndGetBody() throws IOException { + void testResponseSendHeadersAndGetBody() throws IOException { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); ServletOutputStream outputStream = mock(ServletOutputStream.class); @@ -112,7 +112,7 @@ public void testResponseSendHeadersAndGetBody() throws IOException { } @Test - public void testResponseSendHeadersWithContentLengthAlreadySet() throws IOException { + void testResponseSendHeadersWithContentLengthAlreadySet() throws IOException { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); ServletOutputStream outputStream = mock(ServletOutputStream.class); @@ -129,7 +129,7 @@ public void testResponseSendHeadersWithContentLengthAlreadySet() throws IOExcept } @Test - public void testHandleIOException() { + void testHandleIOException() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); @@ -142,7 +142,7 @@ public void testHandleIOException() { } @Test - public void testHandleRuntimeException() { + void testHandleRuntimeException() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); @@ -155,7 +155,7 @@ public void testHandleRuntimeException() { } @Test - public void testClose() { + void testClose() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); diff --git a/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java index 6d5e03a71..5d0d66bfd 100644 --- a/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java +++ b/prometheus-metrics-exporter-servlet-jakarta/src/test/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServletTest.java @@ -23,14 +23,14 @@ class PrometheusMetricsServletTest { private Counter testCounter; @BeforeEach - public void setUp() { + void setUp() { registry = new PrometheusRegistry(); testCounter = Counter.builder().name("test_counter").help("Test counter").register(registry); testCounter.inc(42); } @Test - public void testDoGetWritesMetrics() throws IOException { + void testDoGetWritesMetrics() throws IOException { HttpServletRequest request = mock(HttpServletRequest.class); HttpServletResponse response = mock(HttpServletResponse.class); @@ -69,13 +69,13 @@ public void setWriteListener(WriteListener writeListener) {} } @Test - public void testServletUsesDefaultRegistry() { + void testServletUsesDefaultRegistry() { PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(); assertThat(servlet).isNotNull(); } @Test - public void testServletWithCustomRegistry() { + void testServletWithCustomRegistry() { PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(registry); assertThat(servlet).isNotNull(); } diff --git a/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java index 144019f0d..f4f1f0f3f 100644 --- a/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java +++ b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/HttpExchangeAdapterTest.java @@ -19,7 +19,7 @@ class HttpExchangeAdapterTest { @Test - public void testRequestGetQueryString() { + void testRequestGetQueryString() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getQueryString()).thenReturn("name[]=test"); @@ -31,7 +31,7 @@ public void testRequestGetQueryString() { } @Test - public void testRequestGetHeaders() { + void testRequestGetHeaders() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getHeaders("Accept")) @@ -44,7 +44,7 @@ public void testRequestGetHeaders() { } @Test - public void testRequestGetMethod() { + void testRequestGetMethod() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getMethod()).thenReturn("GET"); @@ -56,7 +56,7 @@ public void testRequestGetMethod() { } @Test - public void testRequestGetRequestPath() { + void testRequestGetRequestPath() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getContextPath()).thenReturn("/app"); @@ -70,7 +70,7 @@ public void testRequestGetRequestPath() { } @Test - public void testRequestGetRequestPathWithPathInfo() { + void testRequestGetRequestPathWithPathInfo() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); when(servletRequest.getContextPath()).thenReturn("/app"); @@ -84,7 +84,7 @@ public void testRequestGetRequestPathWithPathInfo() { } @Test - public void testResponseSetHeader() { + void testResponseSetHeader() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); @@ -96,7 +96,7 @@ public void testResponseSetHeader() { } @Test - public void testResponseSendHeadersAndGetBody() throws IOException { + void testResponseSendHeadersAndGetBody() throws IOException { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); ServletOutputStream outputStream = @@ -125,7 +125,7 @@ public void setWriteListener(WriteListener writeListener) {} } @Test - public void testResponseSendHeadersWithContentLengthAlreadySet() throws IOException { + void testResponseSendHeadersWithContentLengthAlreadySet() throws IOException { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); ServletOutputStream outputStream = @@ -154,7 +154,7 @@ public void setWriteListener(WriteListener writeListener) {} } @Test - public void testHandleIOException() { + void testHandleIOException() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); @@ -167,7 +167,7 @@ public void testHandleIOException() { } @Test - public void testHandleRuntimeException() { + void testHandleRuntimeException() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); @@ -180,7 +180,7 @@ public void testHandleRuntimeException() { } @Test - public void testClose() { + void testClose() { HttpServletRequest servletRequest = mock(HttpServletRequest.class); HttpServletResponse servletResponse = mock(HttpServletResponse.class); diff --git a/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java index f847ca60c..0b3c5e5f6 100644 --- a/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java +++ b/prometheus-metrics-exporter-servlet-javax/src/test/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServletTest.java @@ -23,14 +23,14 @@ class PrometheusMetricsServletTest { private Counter testCounter; @BeforeEach - public void setUp() { + void setUp() { registry = new PrometheusRegistry(); testCounter = Counter.builder().name("test_counter").help("Test counter").register(registry); testCounter.inc(42); } @Test - public void testDoGetWritesMetrics() throws IOException { + void testDoGetWritesMetrics() throws IOException { HttpServletRequest request = mock(HttpServletRequest.class); HttpServletResponse response = mock(HttpServletResponse.class); @@ -69,13 +69,13 @@ public void setWriteListener(WriteListener writeListener) {} } @Test - public void testServletUsesDefaultRegistry() { + void testServletUsesDefaultRegistry() { PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(); assertThat(servlet).isNotNull(); } @Test - public void testServletWithCustomRegistry() { + void testServletWithCustomRegistry() { PrometheusMetricsServlet servlet = new PrometheusMetricsServlet(registry); assertThat(servlet).isNotNull(); } diff --git a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java index 8a31e41b1..b43688bbb 100644 --- a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java +++ b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java @@ -109,7 +109,7 @@ void init() { } @Test - public void testCounterComplete() throws IOException { + void testCounterComplete() throws IOException { String openMetricsText = "# TYPE service:time_seconds counter\n" + "# UNIT service:time_seconds seconds\n" @@ -239,7 +239,7 @@ public void testCounterComplete() throws IOException { } @Test - public void testCounterMinimal() throws IOException { + void testCounterMinimal() throws IOException { String openMetricsText = """ # TYPE my_counter counter @@ -266,7 +266,7 @@ public void testCounterMinimal() throws IOException { } @Test - public void testCounterWithDots() throws IOException { + void testCounterWithDots() throws IOException { String openMetricsText = """ # TYPE U__my_2e_request_2e_count counter @@ -308,7 +308,7 @@ public void testCounterWithDots() throws IOException { } @Test - public void testGaugeComplete() throws IOException { + void testGaugeComplete() throws IOException { String openMetricsText = "# TYPE disk_usage_ratio gauge\n" + "# UNIT disk_usage_ratio ratio\n" @@ -389,7 +389,7 @@ public void testGaugeComplete() throws IOException { } @Test - public void testGaugeMinimal() throws IOException { + void testGaugeMinimal() throws IOException { String openMetricsText = """ # TYPE temperature_centigrade gauge @@ -416,7 +416,7 @@ public void testGaugeMinimal() throws IOException { } @Test - public void testGaugeWithDots() throws IOException { + void testGaugeWithDots() throws IOException { String openMetricsText = """ # TYPE U__my_2e_temperature_2e_celsius gauge @@ -472,7 +472,7 @@ public void testGaugeWithDots() throws IOException { } @Test - public void testGaugeUTF8() throws IOException { + void testGaugeUTF8() throws IOException { String prometheusText = """ # HELP "gauge.name" gauge\\ndoc\\nstr"ing @@ -506,7 +506,7 @@ public void testGaugeUTF8() throws IOException { } @Test - public void testSummaryComplete() throws IOException { + void testSummaryComplete() throws IOException { String openMetricsText = "# TYPE http_request_duration_seconds summary\n" + "# UNIT http_request_duration_seconds seconds\n" @@ -799,7 +799,7 @@ public void testSummaryComplete() throws IOException { } @Test - public void testSummaryWithoutQuantiles() throws IOException { + void testSummaryWithoutQuantiles() throws IOException { String openMetricsText = """ # TYPE latency_seconds summary @@ -843,7 +843,7 @@ public void testSummaryWithoutQuantiles() throws IOException { } @Test - public void testSummaryNoCountAndSum() throws IOException { + void testSummaryNoCountAndSum() throws IOException { String openMetricsText = """ # TYPE latency_seconds summary @@ -881,7 +881,7 @@ public void testSummaryNoCountAndSum() throws IOException { } @Test - public void testSummaryJustCount() throws IOException { + void testSummaryJustCount() throws IOException { String openMetricsText = """ # TYPE latency_seconds summary @@ -916,7 +916,7 @@ public void testSummaryJustCount() throws IOException { } @Test - public void testSummaryJustSum() throws IOException { + void testSummaryJustSum() throws IOException { String openMetricsText = """ # TYPE latency_seconds summary @@ -951,7 +951,7 @@ public void testSummaryJustSum() throws IOException { } @Test - public void testSummaryEmptyData() throws IOException { + void testSummaryEmptyData() throws IOException { // SummaryData can be present but empty (no count, no sum, no quantiles). // This should be treated like no data is present. SummarySnapshot summary = @@ -969,7 +969,7 @@ public void testSummaryEmptyData() throws IOException { } @Test - public void testSummaryEmptyAndNonEmpty() throws IOException { + void testSummaryEmptyAndNonEmpty() throws IOException { String openMetricsText = """ # TYPE latency_seconds summary @@ -1015,7 +1015,7 @@ public void testSummaryEmptyAndNonEmpty() throws IOException { } @Test - public void testSummaryWithDots() throws IOException { + void testSummaryWithDots() throws IOException { String openMetricsText = """ # TYPE U__my_2e_request_2e_duration_2e_seconds summary @@ -1073,7 +1073,7 @@ public void testSummaryWithDots() throws IOException { } @Test - public void testClassicHistogramComplete() throws Exception { + void testClassicHistogramComplete() throws Exception { String openMetricsText = "# TYPE response_size_bytes histogram\n" + "# UNIT response_size_bytes bytes\n" @@ -1379,7 +1379,7 @@ public void testClassicHistogramComplete() throws Exception { } @Test - public void testClassicHistogramMinimal() throws Exception { + void testClassicHistogramMinimal() throws Exception { // In OpenMetrics a histogram can have a _count if and only if it has a _sum. // In Prometheus format, a histogram can have a _count without a _sum. String openMetricsText = @@ -1427,7 +1427,7 @@ public void testClassicHistogramMinimal() throws Exception { } @Test - public void testClassicHistogramMinimalWithDots() throws Exception { + void testClassicHistogramMinimalWithDots() throws Exception { String openMetricsText = """ # TYPE "request.latency_seconds" histogram @@ -1458,7 +1458,7 @@ public void testClassicHistogramMinimalWithDots() throws Exception { } @Test - public void testClassicHistogramCountAndSum() throws Exception { + void testClassicHistogramCountAndSum() throws Exception { String openMetricsText = """ # TYPE request_latency_seconds histogram @@ -1509,7 +1509,7 @@ public void testClassicHistogramCountAndSum() throws Exception { } @Test - public void testClassicGaugeHistogramComplete() throws IOException { + void testClassicGaugeHistogramComplete() throws IOException { String openMetricsText = "# TYPE cache_size_bytes gaugehistogram\n" + "# UNIT cache_size_bytes bytes\n" @@ -1805,7 +1805,7 @@ public void testClassicGaugeHistogramComplete() throws IOException { } @Test - public void testClassicGaugeHistogramMinimal() throws IOException { + void testClassicGaugeHistogramMinimal() throws IOException { // In OpenMetrics a histogram can have a _count if and only if it has a _sum. // In Prometheus format, a histogram can have a _count without a _sum. String openMetricsText = @@ -1855,7 +1855,7 @@ public void testClassicGaugeHistogramMinimal() throws IOException { } @Test - public void testClassicGaugeHistogramCountAndSum() throws IOException { + void testClassicGaugeHistogramCountAndSum() throws IOException { String openMetricsText = """ # TYPE queue_size_bytes gaugehistogram @@ -1909,7 +1909,7 @@ public void testClassicGaugeHistogramCountAndSum() throws IOException { } @Test - public void testClassicHistogramWithDots() throws IOException { + void testClassicHistogramWithDots() throws IOException { String openMetricsText = """ # TYPE U__my_2e_request_2e_duration_2e_seconds histogram @@ -1981,7 +1981,7 @@ public void testClassicHistogramWithDots() throws IOException { } @Test - public void testNativeHistogramComplete() throws IOException { + void testNativeHistogramComplete() throws IOException { String openMetricsText = "# TYPE response_size_bytes histogram\n" + "# UNIT response_size_bytes bytes\n" @@ -2292,7 +2292,7 @@ public void testNativeHistogramComplete() throws IOException { } @Test - public void testNativeHistogramMinimal() throws IOException { + void testNativeHistogramMinimal() throws IOException { String openMetricsText = """ # TYPE latency_seconds histogram @@ -2330,7 +2330,7 @@ public void testNativeHistogramMinimal() throws IOException { } @Test - public void testNativeHistogramWithDots() throws IOException { + void testNativeHistogramWithDots() throws IOException { String openMetricsText = """ # TYPE U__my_2e_request_2e_duration_2e_seconds histogram @@ -2409,7 +2409,7 @@ public void testNativeHistogramWithDots() throws IOException { // TODO: Gauge Native Histogram @Test - public void testInfo() throws IOException { + void testInfo() throws IOException { String openMetrics = """ # TYPE version info @@ -2439,7 +2439,7 @@ public void testInfo() throws IOException { } @Test - public void testInfoWithDots() throws IOException { + void testInfoWithDots() throws IOException { String openMetricsText = """ # TYPE U__jvm_2e_status info @@ -2478,7 +2478,7 @@ public void testInfoWithDots() throws IOException { } @Test - public void testStateSetComplete() throws IOException { + void testStateSetComplete() throws IOException { String openMetrics = "# TYPE state stateset\n" + "# HELP state complete state set example\n" @@ -2536,7 +2536,7 @@ public void testStateSetComplete() throws IOException { } @Test - public void testStateSetMinimal() throws IOException { + void testStateSetMinimal() throws IOException { String openMetrics = """ # TYPE state stateset @@ -2566,7 +2566,7 @@ public void testStateSetMinimal() throws IOException { } @Test - public void testStateSetWithDots() throws IOException { + void testStateSetWithDots() throws IOException { String openMetricsText = """ # TYPE U__my_2e_application_2e_state stateset @@ -2614,7 +2614,7 @@ public void testStateSetWithDots() throws IOException { } @Test - public void testUnknownComplete() throws IOException { + void testUnknownComplete() throws IOException { String openMetrics = "# TYPE my_special_thing_bytes unknown\n" + "# UNIT my_special_thing_bytes bytes\n" @@ -2679,7 +2679,7 @@ public void testUnknownComplete() throws IOException { } @Test - public void testUnknownMinimal() throws IOException { + void testUnknownMinimal() throws IOException { String openMetrics = """ # TYPE other unknown @@ -2703,7 +2703,7 @@ public void testUnknownMinimal() throws IOException { } @Test - public void testUnknownWithDots() throws IOException { + void testUnknownWithDots() throws IOException { String openMetrics = """ # TYPE U__some_2e_unknown_2e_metric__bytes unknown @@ -2756,7 +2756,7 @@ public void testUnknownWithDots() throws IOException { } @Test - public void testHelpEscape() throws IOException { + void testHelpEscape() throws IOException { String openMetrics = """ # TYPE test counter @@ -2783,7 +2783,7 @@ public void testHelpEscape() throws IOException { } @Test - public void testLabelValueEscape() throws IOException { + void testLabelValueEscape() throws IOException { String openMetrics = """ # TYPE test counter @@ -2826,7 +2826,7 @@ public void testFindWriter(String acceptHeaderValue, String expectedFmt) { } @Test - public void testWrite() throws IOException { + void testWrite() throws IOException { ByteArrayOutputStream buff = new ByteArrayOutputStream(new AtomicInteger(2 << 9).get() + 1024); ExpositionFormats expositionFormats = ExpositionFormats.init(); UnknownSnapshot unknown = diff --git a/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java b/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java index 3a7b634a7..d2d12aa11 100644 --- a/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java +++ b/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java @@ -25,7 +25,7 @@ @SuppressWarnings("CheckReturnValue") class CacheMetricsCollectorTest { // This enum was added to simplify test parametrization on argument options. - public enum Options { + enum Options { LEGACY(false, false), COLLECT_EVICTION_WEIGHT_AS_COUNTER(true, false), COLLECT_WEIGHTED_SIZE(false, true), @@ -205,7 +205,7 @@ public void weightedCacheExposesMetricsForHitMissAndEvictionWeightedSize(Options @SuppressWarnings("unchecked") @Test - public void loadingCacheExposesMetricsForLoadsAndExceptions() throws Exception { + void loadingCacheExposesMetricsForLoadsAndExceptions() throws Exception { final CacheLoader loader = mock(CacheLoader.class); when(loader.load(anyString())) .thenReturn("First User") diff --git a/prometheus-metrics-instrumentation-dropwizard/src/test/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExportsTest.java b/prometheus-metrics-instrumentation-dropwizard/src/test/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExportsTest.java index ba5407942..c4c0b6241 100644 --- a/prometheus-metrics-instrumentation-dropwizard/src/test/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExportsTest.java +++ b/prometheus-metrics-instrumentation-dropwizard/src/test/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExportsTest.java @@ -23,7 +23,7 @@ class DropwizardExportsTest { private MetricRegistry metricRegistry; @BeforeEach - public void setUp() { + void setUp() { metricRegistry = new MetricRegistry(); DropwizardExports.builder() .dropwizardRegistry(metricRegistry) @@ -32,21 +32,21 @@ public void setUp() { } @Test - public void testBuilderThrowsErrorOnNullRegistry() { + void testBuilderThrowsErrorOnNullRegistry() { assertThatThrownBy( () -> DropwizardExports.builder().dropwizardRegistry(null).register(registry)) .isInstanceOf(IllegalArgumentException.class); } @Test - public void testBuilderCreatesOkay() { + void testBuilderCreatesOkay() { assertThatCode( () -> DropwizardExports.builder().dropwizardRegistry(metricRegistry).register(registry)) .doesNotThrowAnyException(); } @Test - public void testCounter() { + void testCounter() { metricRegistry.counter("foo.bar").inc(1); String expected = """ @@ -60,7 +60,7 @@ public void testCounter() { } @Test - public void testGauge() { + void testGauge() { // don't convert to lambda, as we need to test the type Gauge integerGauge = new Gauge() { @@ -128,7 +128,7 @@ public Boolean getValue() { } @Test - public void testInvalidGaugeType() { + void testInvalidGaugeType() { Gauge invalidGauge = () -> "foobar"; metricRegistry.register("invalid_gauge", invalidGauge); @@ -138,7 +138,7 @@ public void testInvalidGaugeType() { } @Test - public void testGaugeReturningNullValue() { + void testGaugeReturningNullValue() { Gauge invalidGauge = () -> null; metricRegistry.register("invalid_gauge", invalidGauge); String expected = "# EOF\n"; @@ -146,7 +146,7 @@ public void testGaugeReturningNullValue() { } @Test - public void testHistogram() { + void testHistogram() { // just test the standard mapper final MetricRegistry metricRegistry = new MetricRegistry(); PrometheusRegistry pmRegistry = new PrometheusRegistry(); @@ -199,7 +199,7 @@ public void testHistogram() { } @Test - public void testMeter() { + void testMeter() { Meter meter = metricRegistry.meter("meter"); meter.mark(); meter.mark(); @@ -215,7 +215,7 @@ public void testMeter() { } @Test - public void testTimer() throws InterruptedException { + void testTimer() throws InterruptedException { final MetricRegistry metricRegistry = new MetricRegistry(); DropwizardExports exports = new DropwizardExports(metricRegistry); Timer t = metricRegistry.timer("timer"); @@ -239,7 +239,7 @@ public void testTimer() throws InterruptedException { } @Test - public void testThatMetricHelpUsesOriginalDropwizardName() { + void testThatMetricHelpUsesOriginalDropwizardName() { metricRegistry.timer("my.application.namedTimer1"); metricRegistry.counter("my.application.namedCounter1"); metricRegistry.meter("my.application.namedMeter1"); diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExportsTest.java b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExportsTest.java index ff76438d1..7a7dcdf31 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExportsTest.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExportsTest.java @@ -24,13 +24,13 @@ class DropwizardExportsTest { private MetricRegistry metricRegistry; @BeforeEach - public void setUp() { + void setUp() { metricRegistry = new MetricRegistry(); DropwizardExports.builder().dropwizardRegistry(metricRegistry).register(registry); } @Test - public void testCounter() { + void testCounter() { metricRegistry.counter("foo.bar").inc(1); String expected = """ @@ -44,7 +44,7 @@ public void testCounter() { } @Test - public void testGauge() { + void testGauge() { // don't convert to lambda, as we need to test the type Gauge integerGauge = new Gauge() { @@ -112,7 +112,7 @@ public Boolean getValue() { } @Test - public void testInvalidGaugeType() { + void testInvalidGaugeType() { Gauge invalidGauge = () -> "foobar"; metricRegistry.register(MetricName.parse("invalid_gauge"), invalidGauge); @@ -122,7 +122,7 @@ public void testInvalidGaugeType() { } @Test - public void testGaugeReturningNullValue() { + void testGaugeReturningNullValue() { Gauge invalidGauge = () -> null; metricRegistry.register(MetricName.parse("invalid_gauge"), invalidGauge); String expected = "# EOF\n"; @@ -130,7 +130,7 @@ public void testGaugeReturningNullValue() { } @Test - public void testHistogram() { + void testHistogram() { // just test the standard mapper final MetricRegistry metricRegistry = new MetricRegistry(); PrometheusRegistry pmRegistry = new PrometheusRegistry(); @@ -204,7 +204,7 @@ public void testHistogram() { } @Test - public void testMeter() { + void testMeter() { Meter meter = metricRegistry.meter("meter"); meter.mark(); meter.mark(); @@ -220,7 +220,7 @@ public void testMeter() { } @Test - public void testTimer() throws InterruptedException { + void testTimer() throws InterruptedException { final MetricRegistry metricRegistry = new MetricRegistry(); DropwizardExports exports = new DropwizardExports(metricRegistry); Timer t = metricRegistry.timer("timer"); @@ -246,7 +246,7 @@ public void testTimer() throws InterruptedException { } @Test - public void testThatMetricHelpUsesOriginalDropwizardName() { + void testThatMetricHelpUsesOriginalDropwizardName() { metricRegistry.timer("my.application.namedTimer1"); metricRegistry.counter("my.application.namedCounter1"); diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapperTest.java b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapperTest.java index 44c365898..8c61e1a01 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapperTest.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapperTest.java @@ -20,18 +20,18 @@ class CustomLabelMapperTest { private MetricRegistry metricRegistry; @BeforeEach - public void setUp() { + void setUp() { metricRegistry = new MetricRegistry(); } @Test - public void test_WHEN_EmptyConfig_THEN_Fail() { + void test_WHEN_EmptyConfig_THEN_Fail() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> new CustomLabelMapper(Collections.emptyList())); } @Test - public void test_WHEN_NoMatches_THEN_ShouldReturnDefaultSample() { + void test_WHEN_NoMatches_THEN_ShouldReturnDefaultSample() { final List mapperConfigs = Arrays.asList( new MapperConfig("client-nope.*.*.*"), @@ -56,7 +56,7 @@ public void test_WHEN_NoMatches_THEN_ShouldReturnDefaultSample() { } @Test - public void test_WHEN_OneMatch_THEN_ShouldReturnConverted() { + void test_WHEN_OneMatch_THEN_ShouldReturnConverted() { final Map labels = new HashMap(); labels.put("service", "${0}"); final MapperConfig mapperConfig = @@ -86,7 +86,7 @@ public void test_WHEN_OneMatch_THEN_ShouldReturnConverted() { } @Test - public void test_WHEN_MoreMatches_THEN_ShouldReturnFirstOne() { + void test_WHEN_MoreMatches_THEN_ShouldReturnFirstOne() { final Map labels = new HashMap<>(); labels.put("service", "${0}"); final MapperConfig mapperConfig = @@ -117,7 +117,7 @@ public void test_WHEN_MoreMatches_THEN_ShouldReturnFirstOne() { } @Test - public void test_WHEN_MoreMatchesReverseOrder_THEN_ShouldReturnFirstOne() { + void test_WHEN_MoreMatchesReverseOrder_THEN_ShouldReturnFirstOne() { final Map labels = new LinkedHashMap<>(); labels.put("service", "${0}"); labels.put("status", "${1}"); @@ -154,7 +154,7 @@ public void test_WHEN_MoreMatchesReverseOrder_THEN_ShouldReturnFirstOne() { } @Test - public void test_WHEN_MoreToFormatInLabelsAndName_THEN_ShouldReturnCorrectSample() { + void test_WHEN_MoreToFormatInLabelsAndName_THEN_ShouldReturnCorrectSample() { final Map labels = new LinkedHashMap<>(); labels.put("service", "${0}_${1}"); labels.put("status", "s_${1}"); @@ -187,7 +187,7 @@ public void test_WHEN_MoreToFormatInLabelsAndName_THEN_ShouldReturnCorrectSample } @Test - public void test_WHEN_AdditionalLabels_THEN_ShouldReturnCorrectSample() { + void test_WHEN_AdditionalLabels_THEN_ShouldReturnCorrectSample() { final Map labels = new LinkedHashMap<>(); labels.put("service", "${0}"); labels.put("status", "s_${1}"); diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/GraphiteNamePatternTest.java b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/GraphiteNamePatternTest.java index ed27d7f22..100703d94 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/GraphiteNamePatternTest.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/GraphiteNamePatternTest.java @@ -13,7 +13,7 @@ class GraphiteNamePatternTest { @Test - public void createNew_WHEN_InvalidPattern_THEN_ShouldThrowException() { + void createNew_WHEN_InvalidPattern_THEN_ShouldThrowException() { List invalidPatterns = Arrays.asList( "", @@ -39,7 +39,7 @@ public void createNew_WHEN_InvalidPattern_THEN_ShouldThrowException() { } @Test - public void createNew_WHEN_ValidPattern_THEN_ShouldCreateThePatternSuccessfully() { + void createNew_WHEN_ValidPattern_THEN_ShouldCreateThePatternSuccessfully() { final List validPatterns = Arrays.asList( "org.test.controller.gather.status.400", @@ -54,7 +54,7 @@ public void createNew_WHEN_ValidPattern_THEN_ShouldCreateThePatternSuccessfully( } @Test - public void createNew_WHEN_ValidPattern_THEN_ShouldInitInternalPatternSuccessfully() { + void createNew_WHEN_ValidPattern_THEN_ShouldInitInternalPatternSuccessfully() { final Map validPatterns = new HashMap(); validPatterns.put( "org.test.controller.gather.status.400", "^\\Qorg.test.controller.gather.status.400\\E$"); @@ -74,7 +74,7 @@ public void createNew_WHEN_ValidPattern_THEN_ShouldInitInternalPatternSuccessful } @Test - public void match_WHEN_NotMatchingMetricNameProvided_THEN_ShouldNotMatch() { + void match_WHEN_NotMatchingMetricNameProvided_THEN_ShouldNotMatch() { final GraphiteNamePattern pattern = new GraphiteNamePattern("org.test.controller.*.status.*"); final List notMatchingMetricNamed = Arrays.asList("org.test.controller.status.400", "", null); @@ -87,7 +87,7 @@ public void match_WHEN_NotMatchingMetricNameProvided_THEN_ShouldNotMatch() { } @Test - public void match_WHEN_MatchingMetricNameProvided_THEN_ShouldMatch() { + void match_WHEN_MatchingMetricNameProvided_THEN_ShouldMatch() { final GraphiteNamePattern pattern = new GraphiteNamePattern("org.test.controller.*.status.*"); final List matchingMetricNamed = Arrays.asList( @@ -105,7 +105,7 @@ public void match_WHEN_MatchingMetricNameProvided_THEN_ShouldMatch() { } @Test - public void extractParameters() { + void extractParameters() { GraphiteNamePattern pattern; Map expected = new HashMap(); expected.put("${0}", "gather"); @@ -124,7 +124,7 @@ public void extractParameters() { } @Test - public void extractParameters_WHEN_emptyStringInDottedMetricsName_THEN_ShouldReturnEmptyString() { + void extractParameters_WHEN_emptyStringInDottedMetricsName_THEN_ShouldReturnEmptyString() { GraphiteNamePattern pattern; Map expected = new HashMap(); expected.put("${0}", ""); @@ -135,7 +135,7 @@ public void extractParameters_WHEN_emptyStringInDottedMetricsName_THEN_ShouldRet } @Test - public void extractParameters_WHEN_moreDots_THEN_ShouldReturnNoMatches() { + void extractParameters_WHEN_moreDots_THEN_ShouldReturnNoMatches() { GraphiteNamePattern pattern; pattern = new GraphiteNamePattern("org.test.controller.*.status.*"); Assertions.assertThat(pattern.extractParameters("org.test.controller...status.400")) diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfigTest.java b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfigTest.java index a17963e0d..982e8f24e 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfigTest.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/test/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfigTest.java @@ -10,20 +10,20 @@ class MapperConfigTest { @Test - public void setMatch_WHEN_ExpressionMatchesPattern_AllGood() { + void setMatch_WHEN_ExpressionMatchesPattern_AllGood() { final MapperConfig mapperConfig = new MapperConfig(); mapperConfig.setMatch("com.company.meter.*"); assertThat(mapperConfig.getMatch()).isEqualTo("com.company.meter.*"); } @Test - public void setMatch_WHEN_ExpressionDoesnNotMatchPattern_ThrowException() { + void setMatch_WHEN_ExpressionDoesnNotMatchPattern_ThrowException() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> new MapperConfig().setMatch("com.company.meter.**.yay")); } @Test - public void setLabels_WHEN_ExpressionMatchesPattern_AllGood() { + void setLabels_WHEN_ExpressionMatchesPattern_AllGood() { final MapperConfig mapperConfig = new MapperConfig(); final Map labels = new HashMap<>(); labels.put("valid", "${0}"); @@ -32,7 +32,7 @@ public void setLabels_WHEN_ExpressionMatchesPattern_AllGood() { } @Test - public void setLabels_WHEN_ExpressionDoesnNotMatchPattern_ThrowException() { + void setLabels_WHEN_ExpressionDoesnNotMatchPattern_ThrowException() { final MapperConfig mapperConfig = new MapperConfig(); final Map labels = new HashMap<>(); labels.put("valid", "${0}"); @@ -42,13 +42,13 @@ public void setLabels_WHEN_ExpressionDoesnNotMatchPattern_ThrowException() { } @Test - public void toString_WHEN_EmptyConfig_AllGood() { + void toString_WHEN_EmptyConfig_AllGood() { final MapperConfig mapperConfig = new MapperConfig(); assertThat(mapperConfig).hasToString("MapperConfig{match=null, name=null, labels={}}"); } @Test - public void toString_WHEN_FullyConfigured_AllGood() { + void toString_WHEN_FullyConfigured_AllGood() { final MapperConfig mapperConfig = new MapperConfig(); mapperConfig.setMatch("com.company.meter.*.foo"); mapperConfig.setName("foo"); diff --git a/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java b/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java index 31da91f20..3373afaed 100644 --- a/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java +++ b/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java @@ -23,7 +23,7 @@ class CacheMetricsCollectorTest { @Test - public void cacheExposesMetricsForHitMissAndEviction() { + void cacheExposesMetricsForHitMissAndEviction() { final Cache cache = CacheBuilder.newBuilder().maximumSize(2).recordStats().build(); @@ -73,7 +73,7 @@ public void cacheExposesMetricsForHitMissAndEviction() { @SuppressWarnings("unchecked") @Test - public void loadingCacheExposesMetricsForLoadsAndExceptions() throws Exception { + void loadingCacheExposesMetricsForLoadsAndExceptions() throws Exception { final CacheLoader loader = mock(CacheLoader.class); when(loader.load(anyString())) .thenReturn("First User") @@ -112,7 +112,7 @@ public void loadingCacheExposesMetricsForLoadsAndExceptions() throws Exception { } @Test - public void getPrometheusNamesHasSameSizeAsMetricSizeWhenScraping() { + void getPrometheusNamesHasSameSizeAsMetricSizeWhenScraping() { final CacheMetricsCollector collector = new CacheMetricsCollector(); final PrometheusRegistry registry = new PrometheusRegistry(); @@ -125,7 +125,7 @@ public void getPrometheusNamesHasSameSizeAsMetricSizeWhenScraping() { } @Test - public void collectedMetricNamesAreKnownPrometheusNames() { + void collectedMetricNamesAreKnownPrometheusNames() { final CacheMetricsCollector collector = new CacheMetricsCollector(); final PrometheusRegistry registry = new PrometheusRegistry(); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetricsTest.java index e3bf55fb4..5b320c678 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetricsTest.java @@ -22,7 +22,7 @@ class JvmBufferPoolMetricsTest { private final BufferPoolMXBean mappedBuffer = Mockito.mock(BufferPoolMXBean.class); @BeforeEach - public void setUp() { + void setUp() { when(directBuffer.getName()).thenReturn("direct"); when(directBuffer.getCount()).thenReturn(2L); when(directBuffer.getMemoryUsed()).thenReturn(1234L); @@ -34,7 +34,7 @@ public void setUp() { } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmBufferPoolMetrics.builder() .bufferPoolBeans(Arrays.asList(mappedBuffer, directBuffer)) @@ -64,7 +64,7 @@ public void testGoodCase() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder().nameMustNotBeEqualTo("jvm_buffer_pool_used_bytes").build(); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetricsTest.java index ac13ab382..7fe86c753 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetricsTest.java @@ -20,14 +20,14 @@ class JvmClassLoadingMetricsTest { private final ClassLoadingMXBean mockClassLoadingBean = Mockito.mock(ClassLoadingMXBean.class); @BeforeEach - public void setUp() { + void setUp() { when(mockClassLoadingBean.getLoadedClassCount()).thenReturn(1000); when(mockClassLoadingBean.getTotalLoadedClassCount()).thenReturn(2000L); when(mockClassLoadingBean.getUnloadedClassCount()).thenReturn(500L); } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmClassLoadingMetrics.builder().classLoadingBean(mockClassLoadingBean).register(registry); MetricSnapshots snapshots = registry.scrape(); @@ -50,7 +50,7 @@ public void testGoodCase() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder().nameMustNotBeEqualTo("jvm_classes_currently_loaded").build(); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetricsTest.java index 73d1a39df..e961d9394 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetricsTest.java @@ -20,13 +20,13 @@ class JvmCompilationMetricsTest { private final CompilationMXBean mockCompilationBean = Mockito.mock(CompilationMXBean.class); @BeforeEach - public void setUp() { + void setUp() { when(mockCompilationBean.getTotalCompilationTime()).thenReturn(10000L); when(mockCompilationBean.isCompilationTimeMonitoringSupported()).thenReturn(true); } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmCompilationMetrics.builder().compilationBean(mockCompilationBean).register(registry); MetricSnapshots snapshots = registry.scrape(); @@ -44,7 +44,7 @@ public void testGoodCase() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder() .nameMustNotBeEqualTo("jvm_compilation_time_seconds_total") diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetricsTest.java index 177f29d2e..0f928ef34 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetricsTest.java @@ -23,7 +23,7 @@ class JvmGarbageCollectorMetricsTest { private final GarbageCollectorMXBean mockGcBean2 = Mockito.mock(GarbageCollectorMXBean.class); @BeforeEach - public void setUp() { + void setUp() { when(mockGcBean1.getName()).thenReturn("MyGC1"); when(mockGcBean1.getCollectionCount()).thenReturn(100L); when(mockGcBean1.getCollectionTime()).thenReturn(TimeUnit.SECONDS.toMillis(10)); @@ -33,7 +33,7 @@ public void setUp() { } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmGarbageCollectorMetrics.builder() .garbageCollectorBeans(Arrays.asList(mockGcBean1, mockGcBean2)) @@ -56,7 +56,7 @@ public void testGoodCase() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder().nameMustNotBeEqualTo("jvm_gc_collection_seconds").build(); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetricsTest.java index a79ec3b3b..b1916c064 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetricsTest.java @@ -32,7 +32,7 @@ class JvmMemoryMetricsTest { @SuppressWarnings("deprecation") @BeforeEach - public void setUp() { + void setUp() { when(mockMemoryBean.getHeapMemoryUsage()).thenReturn(memoryUsageHeap); when(mockMemoryBean.getNonHeapMemoryUsage()).thenReturn(memoryUsageNonHeap); @@ -80,7 +80,7 @@ public void setUp() { } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmMemoryMetrics.builder() .withMemoryBean(mockMemoryBean) @@ -160,7 +160,7 @@ public void testGoodCase() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder().nameMustNotBeEqualTo("jvm_memory_pool_used_bytes").build(); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java index 67dd6f2e6..3a8138baf 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java @@ -14,7 +14,7 @@ class JvmMemoryPoolAllocationMetricsTest { @Test - public void testListenerLogic() { + void testListenerLogic() { PrometheusRegistry registry = new PrometheusRegistry(); Counter counter = Counter.builder().name("test").labelNames("pool").register(registry); AllocationCountingNotificationListener listener = diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java index 551ed35c7..c0553703d 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMetricsTest.java @@ -20,7 +20,7 @@ void setUp() { } @Test - public void testRegisterIdempotent() { + void testRegisterIdempotent() { PrometheusRegistry registry = new PrometheusRegistry(); assertThat(registry.scrape().size()).isZero(); JvmMetrics.builder().register(registry); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetricsTest.java index bbf42ecc7..e2f2dcdca 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetricsTest.java @@ -14,7 +14,7 @@ class JvmNativeMemoryMetricsTest { @Test - public void testNativeMemoryTrackingFail() throws IOException { + void testNativeMemoryTrackingFail() throws IOException { JvmNativeMemoryMetrics.isEnabled.set(true); JvmNativeMemoryMetrics.PlatformMBeanServerAdapter adapter = @@ -39,7 +39,7 @@ void nativeMemoryTrackingNotEnabled() { } @Test - public void testNativeMemoryTrackingEmpty() throws IOException { + void testNativeMemoryTrackingEmpty() throws IOException { JvmNativeMemoryMetrics.isEnabled.set(true); JvmNativeMemoryMetrics.PlatformMBeanServerAdapter adapter = @@ -56,7 +56,7 @@ public void testNativeMemoryTrackingEmpty() throws IOException { } @Test - public void testNativeMemoryTrackingDisabled() throws IOException { + void testNativeMemoryTrackingDisabled() throws IOException { JvmNativeMemoryMetrics.isEnabled.set(true); JvmNativeMemoryMetrics.PlatformMBeanServerAdapter adapter = @@ -74,7 +74,7 @@ public void testNativeMemoryTrackingDisabled() throws IOException { } @Test - public void testNativeMemoryTrackingEnabled() throws IOException { + void testNativeMemoryTrackingEnabled() throws IOException { JvmNativeMemoryMetrics.isEnabled.set(true); JvmNativeMemoryMetrics.PlatformMBeanServerAdapter adapter = diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetricTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetricTest.java index a477065c9..2c6a2773f 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetricTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetricTest.java @@ -11,7 +11,7 @@ class JvmRuntimeInfoMetricTest { @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmRuntimeInfoMetric.builder() .version("1.8.0_382-b05") diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java index cd651cc7f..f001fad37 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetricsTest.java @@ -30,7 +30,7 @@ class JvmThreadsMetricsTest { private final ThreadInfo mockThreadInfoRunnable2 = Mockito.mock(ThreadInfo.class); @BeforeEach - public void setUp() { + void setUp() { when(mockThreadsBean.getThreadCount()).thenReturn(300); when(mockThreadsBean.getDaemonThreadCount()).thenReturn(200); when(mockThreadsBean.getPeakThreadCount()).thenReturn(301); @@ -49,7 +49,7 @@ public void setUp() { } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); JvmThreadsMetrics.builder().threadBean(mockThreadsBean).isNativeImage(false).register(registry); MetricSnapshots snapshots = registry.scrape(); @@ -90,7 +90,7 @@ public void testGoodCase() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder().nameMustNotBeEqualTo("jvm_threads_deadlocked").build(); @@ -103,7 +103,7 @@ public void testIgnoredMetricNotScraped() { } @Test - public void testInvalidThreadIds() { + void testInvalidThreadIds() { try { String javaVersion = System.getProperty("java.version"); // Example: "21.0.2" String majorJavaVersion = javaVersion.replaceAll("\\..*", ""); // Example: "21" diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetricsTest.java index f5804ad7f..9c2efd301 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetricsTest.java @@ -30,7 +30,7 @@ class ProcessMetricsTest { private final RuntimeMXBean runtimeBean = Mockito.mock(RuntimeMXBean.class); @BeforeEach - public void setUp() throws IOException { + void setUp() throws IOException { when(sunOsBean.getProcessCpuTime()).thenReturn(TimeUnit.MILLISECONDS.toNanos(72)); when(sunOsBean.getOpenFileDescriptorCount()).thenReturn(127L); when(sunOsBean.getMaxFileDescriptorCount()).thenReturn(244L); @@ -42,7 +42,7 @@ public void setUp() throws IOException { } @Test - public void testGoodCase() throws IOException { + void testGoodCase() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); ProcessMetrics.builder() .osBean(sunOsBean) @@ -97,7 +97,7 @@ public void testGoodCase() throws IOException { } @Test - public void testMinimal() throws IOException { + void testMinimal() throws IOException { PrometheusRegistry registry = new PrometheusRegistry(); ProcessMetrics.builder() .osBean(javaOsBean) @@ -119,7 +119,7 @@ public void testMinimal() throws IOException { } @Test - public void testIgnoredMetricNotScraped() { + void testIgnoredMetricNotScraped() { MetricNameFilter filter = MetricNameFilter.builder().nameMustNotBeEqualTo("process_max_fds").build(); diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/TestUtil.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/TestUtil.java index 64e15590c..8cdd6b1ae 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/TestUtil.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/TestUtil.java @@ -7,7 +7,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; -class TestUtil { +public class TestUtil { static String convertToOpenMetricsFormat(MetricSnapshots snapshots) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MetricNameFilterTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MetricNameFilterTest.java index 0dc9cdee1..8f554bdc5 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MetricNameFilterTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MetricNameFilterTest.java @@ -13,7 +13,7 @@ class MetricNameFilterTest { private final PrometheusRegistry registry = new PrometheusRegistry(); @Test - public void testCounter() { + void testCounter() { registry.register( () -> CounterSnapshot.builder() diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java index d2a38c3cf..48be456a6 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java @@ -51,7 +51,7 @@ private boolean collectCalled() { } @Test - public void testPartialFilter() { + void testPartialFilter() { Registry registry = new Registry(Collections.emptyList()); MetricSnapshots snapshots = registry.scrape(name -> name.equals("counter_1")); assertThat(registry.collectCalled()).isTrue(); @@ -60,7 +60,7 @@ public void testPartialFilter() { } @Test - public void testPartialFilterWithPrometheusNames() { + void testPartialFilterWithPrometheusNames() { Registry registry = new Registry(Arrays.asList("counter_1", "gauge_2")); MetricSnapshots snapshots = registry.scrape(name -> name.equals("counter_1")); @@ -70,7 +70,7 @@ public void testPartialFilterWithPrometheusNames() { } @Test - public void testCompleteFilter_CollectCalled() { + void testCompleteFilter_CollectCalled() { Registry registry = new Registry(Collections.emptyList()); MetricSnapshots snapshots = registry.scrape(name -> !name.equals("counter_1") && !name.equals("gauge_2")); @@ -79,7 +79,7 @@ public void testCompleteFilter_CollectCalled() { } @Test - public void testCompleteFilter_CollectNotCalled() { + void testCompleteFilter_CollectNotCalled() { Registry registry = new Registry(Arrays.asList("counter_1", "gauge_2")); MetricSnapshots snapshots = registry.scrape(name -> !name.equals("counter_1") && !name.equals("gauge_2")); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java index 9e87f1fc9..3197dabb0 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java @@ -82,7 +82,7 @@ public List getPrometheusNames() { }; @Test - public void registerNoName() { + void registerNoName() { PrometheusRegistry registry = new PrometheusRegistry(); // If the collector does not have a name at registration time, there is no conflict during // registration. @@ -96,7 +96,7 @@ public void registerNoName() { } @Test - public void registerDuplicateName() { + void registerDuplicateName() { PrometheusRegistry registry = new PrometheusRegistry(); registry.register(counterA1); assertThatExceptionOfType(IllegalStateException.class) @@ -104,7 +104,7 @@ public void registerDuplicateName() { } @Test - public void registerOk() { + void registerOk() { PrometheusRegistry registry = new PrometheusRegistry(); registry.register(counterA1); registry.register(counterB); @@ -122,7 +122,7 @@ public void registerOk() { } @Test - public void registerDuplicateMultiCollector() { + void registerDuplicateMultiCollector() { PrometheusRegistry registry = new PrometheusRegistry(); registry.register(multiCollector); assertThatExceptionOfType(IllegalStateException.class) @@ -130,7 +130,7 @@ public void registerDuplicateMultiCollector() { } @Test - public void registerOkMultiCollector() { + void registerOkMultiCollector() { PrometheusRegistry registry = new PrometheusRegistry(); registry.register(multiCollector); MetricSnapshots snapshots = registry.scrape(); @@ -142,7 +142,7 @@ public void registerOkMultiCollector() { } @Test - public void clearOk() { + void clearOk() { PrometheusRegistry registry = new PrometheusRegistry(); registry.register(counterA1); registry.register(counterB); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java index d39b32436..d06c2ac70 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java @@ -11,7 +11,7 @@ class ClassicHistogramBucketsTest { @Test - public void testGoodCase() { + void testGoodCase() { ClassicHistogramBuckets buckets = ClassicHistogramBuckets.builder() .bucket(Double.NEGATIVE_INFINITY, 0) @@ -23,7 +23,7 @@ public void testGoodCase() { } @Test - public void testSort() { + void testSort() { ClassicHistogramBuckets buckets = ClassicHistogramBuckets.builder() .bucket(7, 2) @@ -40,21 +40,21 @@ public void testSort() { } @Test - public void testMinimalBuckets() { + void testMinimalBuckets() { ClassicHistogramBuckets buckets = ClassicHistogramBuckets.builder().bucket(Double.POSITIVE_INFINITY, 0).build(); assertThat(buckets.size()).isOne(); } @Test - public void testInfBucketMissing() { + void testInfBucketMissing() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> ClassicHistogramBuckets.builder().bucket(Double.NEGATIVE_INFINITY, 0).build()); } @Test - public void testNegativeCount() { + void testNegativeCount() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -65,7 +65,7 @@ public void testNegativeCount() { } @Test - public void testNaNBoundary() { + void testNaNBoundary() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -77,7 +77,7 @@ public void testNaNBoundary() { } @Test - public void testDuplicateBoundary() { + void testDuplicateBoundary() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -90,13 +90,13 @@ public void testDuplicateBoundary() { } @Test - public void testEmptyBuckets() { + void testEmptyBuckets() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> ClassicHistogramBuckets.builder().build()); } @Test - public void testDifferentLength() { + void testDifferentLength() { double[] upperBounds = new double[] {0.7, 1.3, Double.POSITIVE_INFINITY}; long[] counts = new long[] {13, 178, 1024, 3000}; assertThatExceptionOfType(IllegalArgumentException.class) @@ -104,7 +104,7 @@ public void testDifferentLength() { } @Test - public void testImmutable() { + void testImmutable() { ClassicHistogramBuckets buckets = ClassicHistogramBuckets.builder() .bucket(1.0, 7) @@ -117,7 +117,7 @@ public void testImmutable() { } @Test - public void compare() { + void compare() { ClassicHistogramBuckets buckets = ClassicHistogramBuckets.builder() .bucket(1.0, 7) diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java index a69ccfbab..ca4346cdb 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java @@ -11,7 +11,7 @@ class CounterSnapshotTest { @Test - public void testCompleteGoodCase() { + void testCompleteGoodCase() { long createdTimestamp1 = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1); long createdTimestamp2 = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2); long exemplarTimestamp = System.currentTimeMillis(); @@ -68,7 +68,7 @@ public void testCompleteGoodCase() { } @Test - public void testMinimalGoodCase() { + void testMinimalGoodCase() { CounterSnapshot snapshot = CounterSnapshot.builder() .name("events") @@ -85,25 +85,25 @@ public void testMinimalGoodCase() { } @Test - public void testEmptyCounter() { + void testEmptyCounter() { CounterSnapshot snapshot = CounterSnapshot.builder().name("events").build(); assertThat(snapshot.getDataPoints()).isEmpty(); } @Test - public void testTotalSuffixPresent() { + void testTotalSuffixPresent() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CounterSnapshot.builder().name("test_total").build()); } @Test - public void testValueMissing() { + void testValueMissing() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CounterDataPointSnapshot.builder().build()); } @Test - public void testDataImmutable() { + void testDataImmutable() { CounterSnapshot snapshot = CounterSnapshot.builder() .name("events") diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarTest.java index 4a40b47ef..db7ad2426 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarTest.java @@ -9,7 +9,7 @@ class ExemplarTest { @Test - public void testGoodCaseComplete() { + void testGoodCaseComplete() { long timestamp = System.currentTimeMillis(); Exemplar exemplar = Exemplar.builder() @@ -36,13 +36,13 @@ public void testGoodCaseComplete() { } @Test - public void testValueMissing() { + void testValueMissing() { assertThatExceptionOfType(IllegalStateException.class) .isThrownBy(() -> Exemplar.builder().build()); } @Test - public void testMinimal() { + void testMinimal() { Exemplar exemplar = Exemplar.builder().value(0.0).build(); assertThat(exemplar.getValue()).isEqualTo(0.0); assertLabels(exemplar.getLabels()).isEqualTo(Labels.EMPTY); @@ -50,7 +50,7 @@ public void testMinimal() { } @Test - public void testLabelsMergeTraceId() { + void testLabelsMergeTraceId() { Exemplar exemplar = Exemplar.builder().value(0.0).labels(Labels.of("a", "b")).traceId("abc").build(); assertLabels(exemplar.getLabels()).isEqualTo(Labels.of("a", "b", "trace_id", "abc")); @@ -61,14 +61,14 @@ private static IterableAssert assertLabels(Labels labels) { } @Test - public void testLabelsMergeSpanId() { + void testLabelsMergeSpanId() { Exemplar exemplar = Exemplar.builder().value(0.0).labels(Labels.of("a", "b")).spanId("abc").build(); assertLabels(exemplar.getLabels()).isEqualTo(Labels.of("a", "b", "span_id", "abc")); } @Test - public void testLabelsMergeTraceIdAndSpanId() { + void testLabelsMergeTraceIdAndSpanId() { Exemplar exemplar = Exemplar.builder() .value(0.0) @@ -81,7 +81,7 @@ public void testLabelsMergeTraceIdAndSpanId() { } @Test - public void testLabelsMergeNone() { + void testLabelsMergeNone() { Exemplar exemplar = Exemplar.builder().value(0.0).labels(Labels.of("a", "b")).build(); assertLabels(exemplar.getLabels()).isEqualTo(Labels.of("a", "b")); } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarsTest.java index cd38342cd..be69e7f16 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ExemplarsTest.java @@ -9,7 +9,7 @@ class ExemplarsTest { @Test - public void testUpperBound() { + void testUpperBound() { Exemplars exemplars = Exemplars.of( Exemplar.builder().value(1.0).build(), @@ -26,7 +26,7 @@ public void testUpperBound() { } @Test - public void testImmutable() { + void testImmutable() { Exemplars exemplars = Exemplars.of( Exemplar.builder().value(1.0).build(), @@ -38,7 +38,7 @@ public void testImmutable() { } @Test - public void testGet() { + void testGet() { Exemplar oldest = Exemplar.builder().timestampMillis(System.currentTimeMillis() - 100).value(1.8).build(); Exemplar middle = diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java index c469647e0..5154e1eb1 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java @@ -11,7 +11,7 @@ class GaugeSnapshotTest { @Test - public void testCompleteGoodCase() { + void testCompleteGoodCase() { long exemplarTimestamp = System.currentTimeMillis(); GaugeSnapshot snapshot = GaugeSnapshot.builder() @@ -63,7 +63,7 @@ public void testCompleteGoodCase() { } @Test - public void testMinimalGoodCase() { + void testMinimalGoodCase() { GaugeSnapshot snapshot = GaugeSnapshot.builder() .name("temperature") @@ -80,31 +80,31 @@ public void testMinimalGoodCase() { } @Test - public void testEmptyGauge() { + void testEmptyGauge() { GaugeSnapshot snapshot = GaugeSnapshot.builder().name("temperature").build(); assertThat(snapshot.getDataPoints().size()).isZero(); } @Test - public void testTotalSuffixPresent() { + void testTotalSuffixPresent() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CounterSnapshot.builder().name("test_total").build()); } @Test - public void testTotalSuffixPresentDot() { + void testTotalSuffixPresentDot() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CounterSnapshot.builder().name("test.total").build()); } @Test - public void testValueMissing() { + void testValueMissing() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CounterDataPointSnapshot.builder().build()); } @Test - public void testDataImmutable() { + void testDataImmutable() { GaugeSnapshot snapshot = GaugeSnapshot.builder() .name("gauge") diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/HistogramSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/HistogramSnapshotTest.java index 54eefbe66..6233481df 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/HistogramSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/HistogramSnapshotTest.java @@ -13,7 +13,7 @@ class HistogramSnapshotTest { @Test - public void testGoodCaseComplete() { + void testGoodCaseComplete() { long createdTimestamp = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1); long scrapeTimestamp = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2); long exemplarTimestamp = System.currentTimeMillis(); @@ -170,7 +170,7 @@ public void testGoodCaseComplete() { } @Test - public void testEmptyHistogram() { + void testEmptyHistogram() { assertThat(HistogramSnapshot.builder().name("empty_histogram").build().getDataPoints()) .isEmpty(); HistogramSnapshot snapshot = @@ -181,7 +181,7 @@ public void testEmptyHistogram() { } @Test - public void testMinimalClassicHistogram() { + void testMinimalClassicHistogram() { HistogramSnapshot snapshot = HistogramSnapshot.builder() .name("minimal_histogram") @@ -198,7 +198,7 @@ public void testMinimalClassicHistogram() { } @Test - public void testMinimalNativeHistogram() { + void testMinimalNativeHistogram() { HistogramSnapshot snapshot = HistogramSnapshot.builder() .name("hist") @@ -218,7 +218,7 @@ public void testMinimalNativeHistogram() { } @Test - public void testClassicCount() { + void testClassicCount() { HistogramSnapshot snapshot = HistogramSnapshot.builder() .name("test_histogram") @@ -239,21 +239,21 @@ public void testClassicCount() { } @Test - public void testEmptyData() { + void testEmptyData() { // This will fail because one of nativeSchema and classicHistogramBuckets is required assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> HistogramDataPointSnapshot.builder().build()); } @Test - public void testEmptyNativeData() { + void testEmptyNativeData() { HistogramDataPointSnapshot data = HistogramDataPointSnapshot.builder().nativeSchema(5).build(); assertThat(data.getNativeBucketsForNegativeValues().size()).isZero(); assertThat(data.getNativeBucketsForPositiveValues().size()).isZero(); } @Test - public void testDataImmutable() { + void testDataImmutable() { HistogramSnapshot snapshot = HistogramSnapshot.builder() .name("test_histogram") @@ -278,7 +278,7 @@ public void testDataImmutable() { } @Test - public void testEmptyClassicBuckets() { + void testEmptyClassicBuckets() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -287,7 +287,7 @@ public void testEmptyClassicBuckets() { } @Test - public void testMinimalNativeData() { + void testMinimalNativeData() { new HistogramDataPointSnapshot( ClassicHistogramBuckets.EMPTY, 0, @@ -302,7 +302,7 @@ public void testMinimalNativeData() { } @Test - public void testMinimalClassicData() { + void testMinimalClassicData() { ClassicHistogramBuckets buckets = ClassicHistogramBuckets.builder().bucket(Double.POSITIVE_INFINITY, 0).build(); new HistogramDataPointSnapshot( diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java index 983450181..3cf7d69af 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java @@ -9,7 +9,7 @@ class InfoSnapshotTest { @Test - public void testCompleteGoodCase() { + void testCompleteGoodCase() { InfoSnapshot snapshot = InfoSnapshot.builder() .name("target") @@ -33,13 +33,13 @@ void create() { } @Test - public void testEmptyInfo() { + void testEmptyInfo() { InfoSnapshot snapshot = InfoSnapshot.builder().name("target").build(); assertThat(snapshot.getDataPoints()).isEmpty(); } @Test - public void testDataImmutable() { + void testDataImmutable() { InfoSnapshot snapshot = InfoSnapshot.builder() .name("target") @@ -60,13 +60,13 @@ public void testDataImmutable() { } @Test - public void testNameMustNotIncludeSuffix() { + void testNameMustNotIncludeSuffix() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> InfoSnapshot.builder().name("jvm_info").build()); } @Test - public void testNameMustNotIncludeSuffixDot() { + void testNameMustNotIncludeSuffixDot() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> InfoSnapshot.builder().name("jvm.info").build()); } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java index 5bdd285e3..3dc8f639f 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java @@ -17,7 +17,7 @@ private > void assertGreaterThan(T a, T b) { } @Test - public void testCompareDifferentLabelNames() { + void testCompareDifferentLabelNames() { Labels labels1 = Labels.of("env", "prod", "status2", "200"); Labels labels2 = Labels.of("env", "prod", "status1", "200"); assertGreaterThan(labels1, labels2); @@ -31,7 +31,7 @@ private static IterableAssert assertLabels(Labels labels) { } @Test - public void testCompareSameLabelNames() { + void testCompareSameLabelNames() { // If all label names are the same, labels should be sorted by label value. Labels labels1 = Labels.of("env", "prod", "status", "200"); Labels labels2 = Labels.of("env", "prod", "status", "500"); @@ -42,7 +42,7 @@ public void testCompareSameLabelNames() { } @Test - public void testCompareDifferentNumberOfLabels() { + void testCompareDifferentNumberOfLabels() { Labels labels1 = Labels.of("env", "prod", "status", "200"); Labels labels2 = Labels.of("env", "prod", "status", "200", "x_code", "none"); assertLessThan(labels1, labels2); @@ -52,14 +52,14 @@ public void testCompareDifferentNumberOfLabels() { } @Test - public void testComparePrometheusNames() { + void testComparePrometheusNames() { Labels labels1 = Labels.of("my_a", "val"); Labels labels2 = Labels.of("my.b", "val"); assertLessThan(labels1, labels2); // this is true because it compares "my_a" to "my_b". } @Test - public void testEqualsHashcodeDots() { + void testEqualsHashcodeDots() { Labels labels1 = Labels.of("my_a", "val"); Labels labels2 = Labels.of("my.a", "val"); assertLabels(labels2).isEqualTo(labels1).hasSameHashCodeAs(labels1); @@ -67,7 +67,7 @@ public void testEqualsHashcodeDots() { @SuppressWarnings({"unchecked", "rawtypes"}) @Test - public void testCompareEquals() { + void testCompareEquals() { Labels labels1 = Labels.of("env", "prod", "status", "200"); Labels labels2 = Labels.of("env", "prod", "status", "200"); assertThat((Comparable) labels1).isEqualByComparingTo(labels2); @@ -77,19 +77,19 @@ public void testCompareEquals() { } @Test - public void testReservedLabelName() { + void testReservedLabelName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Labels.of("__name__", "requests_total")); } @Test - public void testDuplicateLabelName() { + void testDuplicateLabelName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Labels.of("name1", "value1", "name2", "value2", "name1", "value3")); } @Test - public void testMakePrometheusNames() { + void testMakePrometheusNames() { String[] names = new String[] {}; String[] prometheusNames = Labels.makePrometheusNames(names); assertThat(prometheusNames).isSameAs(names); @@ -107,7 +107,7 @@ public void testMakePrometheusNames() { } @Test - public void testMerge() { + void testMerge() { Labels labels1 = Labels.of("key.1", "value 1", "key.3", "value 3"); Labels labels2 = Labels.of("key_2", "value 2"); Labels merged = labels2.merge(labels1); @@ -117,7 +117,7 @@ public void testMerge() { } @Test - public void testMergeDuplicateName() { + void testMergeDuplicateName() { Labels labels1 = Labels.of("key_one", "v1"); Labels labels2 = Labels.of("key.one", "v2"); assertThatExceptionOfType(IllegalArgumentException.class) @@ -125,7 +125,7 @@ public void testMergeDuplicateName() { } @Test - public void testDuplicateName() { + void testDuplicateName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Labels.of("key_one", "v1", "key.one", "v2")); } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java index f2d6a6ba4..41efe043b 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java @@ -9,19 +9,19 @@ class MetricMetadataTest { @Test - public void testEmptyName() { + void testEmptyName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> new MetricMetadata("")); } @Test - public void testNullName() { + void testNullName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> new MetricMetadata(null)); } @Test - public void testSanitizationIllegalCharacters() { + void testSanitizationIllegalCharacters() { MetricMetadata metadata = new MetricMetadata( sanitizeMetricName("my_namespace/http.server.duration", Unit.SECONDS), @@ -34,42 +34,42 @@ public void testSanitizationIllegalCharacters() { } @Test - public void testSanitizationCounter() { + void testSanitizationCounter() { MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("my_events_total")); assertThat(metadata.getName()).isEqualTo("my_events"); } @Test - public void testSanitizationInfo() { + void testSanitizationInfo() { MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("target_info")); assertThat(metadata.getName()).isEqualTo("target"); } @Test - public void testSanitizationWeirdCornerCase() { + void testSanitizationWeirdCornerCase() { MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("_total_created")); assertThat(metadata.getName()).isEqualTo("total"); } @Test - public void testSanitizeEmptyString() { + void testSanitizeEmptyString() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> sanitizeMetricName("")); } @Test - public void testUnitSuffixRequired() { + void testUnitSuffixRequired() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> new MetricMetadata("my_counter", "help", Unit.SECONDS)); } @Test - public void testUnitSuffixAdded() { + void testUnitSuffixAdded() { new MetricMetadata(sanitizeMetricName("my_counter", Unit.SECONDS), "help", Unit.SECONDS); } @Test - public void testUnitNotDuplicated() { + void testUnitNotDuplicated() { assertThat(sanitizeMetricName("my_counter_bytes", Unit.BYTES)).isEqualTo("my_counter_bytes"); } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotTest.java index 2c1c04bb6..199cb8f4c 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotTest.java @@ -8,7 +8,7 @@ class MetricSnapshotTest { @Test - public void testDuplicateLabels() { + void testDuplicateLabels() { assertThatExceptionOfType(DuplicateLabelsException.class) .isThrownBy( () -> @@ -39,13 +39,13 @@ public void testDuplicateLabels() { } @Test - public void testNoData() { + void testNoData() { MetricSnapshot snapshot = CounterSnapshot.builder().name("test").build(); assertThat(snapshot.getDataPoints().size()).isEqualTo(0); } @Test - public void testNullData() { + void testNullData() { assertThatExceptionOfType(NullPointerException.class) .isThrownBy(() -> new CounterSnapshot(new MetricMetadata("test"), null)); } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java index 04a824f02..5d82a06a0 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java @@ -9,13 +9,13 @@ class MetricSnapshotsTest { @Test - public void testEmpty() { + void testEmpty() { MetricSnapshots snapshots = MetricSnapshots.builder().build(); assertThat(snapshots.stream().findAny()).isNotPresent(); } @Test - public void testSort() { + void testSort() { CounterSnapshot c1 = CounterSnapshot.builder() .name("counter1") @@ -39,7 +39,7 @@ public void testSort() { } @Test - public void testDuplicateName() { + void testDuplicateName() { // Q: What if you have a counter named "foo" and a gauge named "foo"? // A: Great question. You might think this is a valid scenario, because the counter will produce // the values "foo_total" and "foo_created" while the gauge will produce the value "foo". @@ -62,7 +62,7 @@ public void testDuplicateName() { } @Test - public void testBuilder() { + void testBuilder() { CounterSnapshot counter = CounterSnapshot.builder() .name("my_metric") @@ -75,7 +75,7 @@ public void testBuilder() { } @Test - public void testImmutable() { + void testImmutable() { CounterSnapshot c1 = CounterSnapshot.builder() .name("counter1") diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java index 32c7f3eb3..ed52a7d1a 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java @@ -9,7 +9,7 @@ class NativeHistogramBucketsTest { @Test - public void testGoodCase() { + void testGoodCase() { NativeHistogramBuckets buckets = NativeHistogramBuckets.builder().bucket(-10, 12).bucket(120, 17).build(); assertThat(buckets.size()).isEqualTo(2); @@ -20,13 +20,13 @@ public void testGoodCase() { } @Test - public void testEmpty() { + void testEmpty() { NativeHistogramBuckets buckets = NativeHistogramBuckets.builder().build(); assertThat(buckets.size()).isZero(); } @Test - public void testSort() { + void testSort() { NativeHistogramBuckets buckets = NativeHistogramBuckets.builder().bucket(7, 4).bucket(2, 0).bucket(5, 3).build(); assertThat(buckets.size()).isEqualTo(3); @@ -39,7 +39,7 @@ public void testSort() { } @Test - public void testDifferentLength() { + void testDifferentLength() { int[] bucketIndexes = new int[] {0, 1, 2}; long[] cumulativeCounts = new long[] {13, 178, 1024, 3000}; assertThatExceptionOfType(IllegalArgumentException.class) @@ -47,7 +47,7 @@ public void testDifferentLength() { } @Test - public void testImmutable() { + void testImmutable() { NativeHistogramBuckets buckets = NativeHistogramBuckets.builder().bucket(1, 1).bucket(2, 1).build(); Iterator iterator = buckets.iterator(); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java index 40c1f1bde..847bb0f38 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java @@ -21,7 +21,7 @@ class PrometheusNamingTest { @Test - public void testSanitizeMetricName() { + void testSanitizeMetricName() { assertThat(sanitizeMetricName("my_counter_total")).isEqualTo("my_counter"); assertThat(sanitizeMetricName("jvm.info")).isEqualTo("jvm"); assertThat(sanitizeMetricName("jvm_info")).isEqualTo("jvm"); @@ -32,7 +32,7 @@ public void testSanitizeMetricName() { } @Test - public void testSanitizeMetricNameWithUnit() { + void testSanitizeMetricNameWithUnit() { assertThat(prometheusName(sanitizeMetricName("def", Unit.RATIO))) .isEqualTo("def_" + Unit.RATIO); assertThat(prometheusName(sanitizeMetricName("my_counter_total", Unit.RATIO))) @@ -43,7 +43,7 @@ public void testSanitizeMetricNameWithUnit() { } @Test - public void testSanitizeLabelName() { + void testSanitizeLabelName() { assertThat(prometheusName(sanitizeLabelName("0abc.def"))).isEqualTo("_abc_def"); assertThat(prometheusName(sanitizeLabelName("_abc"))).isEqualTo("_abc"); assertThat(prometheusName(sanitizeLabelName("__abc"))).isEqualTo("_abc"); @@ -54,7 +54,7 @@ public void testSanitizeLabelName() { } @Test - public void testValidateUnitName() { + void testValidateUnitName() { assertThat(validateUnitName("secondstotal")).isNotNull(); assertThat(validateUnitName("total")).isNotNull(); assertThat(validateUnitName("seconds_total")).isNotNull(); @@ -66,7 +66,7 @@ public void testValidateUnitName() { } @Test - public void testSanitizeUnitName() { + void testSanitizeUnitName() { assertThat(sanitizeUnitName("seconds")).isEqualTo("seconds"); assertThat(sanitizeUnitName("seconds_total")).isEqualTo("seconds"); assertThat(sanitizeUnitName("seconds_total_total")).isEqualTo("seconds"); @@ -76,25 +76,25 @@ public void testSanitizeUnitName() { } @Test - public void testInvalidUnitName1() { + void testInvalidUnitName1() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> sanitizeUnitName("total")); } @Test - public void testInvalidUnitName2() { + void testInvalidUnitName2() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> sanitizeUnitName("_total")); } @Test - public void testInvalidUnitName3() { + void testInvalidUnitName3() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> sanitizeUnitName("%")); } @Test - public void testEmptyUnitName() { + void testEmptyUnitName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> sanitizeUnitName("")); } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/QuantilesTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/QuantilesTest.java index 8703657ca..4ccadddc8 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/QuantilesTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/QuantilesTest.java @@ -9,7 +9,7 @@ class QuantilesTest { @Test - public void testSort() { + void testSort() { Quantiles quantiles = Quantiles.builder().quantile(0.99, 0.23).quantile(0.5, 0.2).quantile(0.95, 0.22).build(); assertThat(quantiles.size()).isEqualTo(3); @@ -22,7 +22,7 @@ public void testSort() { } @Test - public void testImmutable() { + void testImmutable() { Quantiles quantiles = Quantiles.builder().quantile(0.99, 0.23).quantile(0.5, 0.2).quantile(0.95, 0.22).build(); Iterator iterator = quantiles.iterator(); @@ -31,12 +31,12 @@ public void testImmutable() { } @Test - public void testEmpty() { + void testEmpty() { assertThat(Quantiles.EMPTY.size()).isZero(); } @Test - public void testDuplicate() { + void testDuplicate() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotEscaperTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotEscaperTest.java index f84024e95..5c04719c0 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotEscaperTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotEscaperTest.java @@ -15,7 +15,7 @@ class SnapshotEscaperTest { @Test - public void testEscapeMetricSnapshotEmpty() { + void testEscapeMetricSnapshotEmpty() { MetricSnapshot original = CounterSnapshot.builder().name("empty").build(); MetricSnapshot got = escapeMetricSnapshot(original, EscapingScheme.VALUE_ENCODING_ESCAPING); assertThat(Objects.requireNonNull(got).getMetadata().getName()).isEqualTo("empty"); @@ -23,7 +23,7 @@ public void testEscapeMetricSnapshotEmpty() { } @Test - public void testEscapeMetricSnapshotSimpleNoEscapingNeeded() { + void testEscapeMetricSnapshotSimpleNoEscapingNeeded() { testEscapeMetricSnapshot( "my_metric", "some_label", @@ -36,7 +36,7 @@ public void testEscapeMetricSnapshotSimpleNoEscapingNeeded() { } @Test - public void testEscapeMetricSnapshotLabelNameEscapingNeeded() { + void testEscapeMetricSnapshotLabelNameEscapingNeeded() { testEscapeMetricSnapshot( "my_metric", "some.label", @@ -49,7 +49,7 @@ public void testEscapeMetricSnapshotLabelNameEscapingNeeded() { } @Test - public void testEscapeMetricSnapshotCounterEscapingNeeded() { + void testEscapeMetricSnapshotCounterEscapingNeeded() { testEscapeMetricSnapshot( "my.metric", "some?label", @@ -62,7 +62,7 @@ public void testEscapeMetricSnapshotCounterEscapingNeeded() { } @Test - public void testEscapeMetricSnapshotGaugeEscapingNeeded() { + void testEscapeMetricSnapshotGaugeEscapingNeeded() { testEscapeMetricSnapshot( "unicode.and.dots.่Šฑ็ซ", "some_label", diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java index d8e8d33e4..8a8a7f93b 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java @@ -2,7 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; -class SnapshotTestUtil { +public class SnapshotTestUtil { public static void assertMetadata( MetricSnapshot snapshot, String name, String help, String unit) { diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java index 05e102b9d..02d16e64f 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java @@ -10,7 +10,7 @@ class StateSetSnapshotTest { @Test - public void testCompleteGoodCase() { + void testCompleteGoodCase() { long scrapeTimestamp = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1); StateSetSnapshot snapshot = StateSetSnapshot.builder() @@ -49,7 +49,7 @@ public void testCompleteGoodCase() { } @Test - public void testStateSetDataSorted() { + void testStateSetDataSorted() { StateSetSnapshot.StateSetDataPointSnapshot data = StateSetSnapshot.StateSetDataPointSnapshot.builder() .state("b", true) @@ -69,14 +69,14 @@ public void testStateSetDataSorted() { } @Test - public void testMustHaveState() { + void testMustHaveState() { // Must have at least one state. assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> StateSetSnapshot.StateSetDataPointSnapshot.builder().build()); } @Test - public void testMinimal() { + void testMinimal() { StateSetSnapshot snapshot = StateSetSnapshot.builder() .name("my_flag") @@ -87,13 +87,13 @@ public void testMinimal() { } @Test - public void testEmpty() { + void testEmpty() { StateSetSnapshot snapshot = StateSetSnapshot.builder().name("my_flag").build(); assertThat(snapshot.dataPoints).isEmpty(); } @Test - public void testDataImmutable() { + void testDataImmutable() { StateSetSnapshot.StateSetDataPointSnapshot data = StateSetSnapshot.StateSetDataPointSnapshot.builder() .state("a", true) @@ -111,7 +111,7 @@ public void testDataImmutable() { } @Test - public void testDuplicateState() { + void testDuplicateState() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> @@ -123,13 +123,13 @@ public void testDuplicateState() { } @Test - public void noUnit() { + void noUnit() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> StateSetSnapshot.builder().name("flags").unit(Unit.BYTES).build()); } @Test - public void testStateSetImmutable() { + void testStateSetImmutable() { StateSetSnapshot snapshot = StateSetSnapshot.builder() .name("flags") @@ -151,7 +151,7 @@ public void testStateSetImmutable() { } @Test - public void testLabelsUnique() { + void testLabelsUnique() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SummarySnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SummarySnapshotTest.java index df423ba97..8cd9571f5 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SummarySnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SummarySnapshotTest.java @@ -9,7 +9,7 @@ class SummarySnapshotTest { @Test - public void testCompleteGoodCase() { + void testCompleteGoodCase() { long createdTimestamp = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1); long scrapeTimestamp = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2); long exemplarTimestamp = System.currentTimeMillis(); @@ -82,7 +82,7 @@ public void testCompleteGoodCase() { } @Test - public void testMinimal() { + void testMinimal() { SummarySnapshot snapshot = SummarySnapshot.builder() .name("size_bytes") @@ -95,13 +95,13 @@ public void testMinimal() { } @Test - public void testEmptySnapshot() { + void testEmptySnapshot() { SummarySnapshot snapshot = SummarySnapshot.builder().name("empty_summary").build(); assertThat(snapshot.getDataPoints()).isEmpty(); } @Test - public void testEmptyData() { + void testEmptyData() { SummarySnapshot.SummaryDataPointSnapshot data = SummarySnapshot.SummaryDataPointSnapshot.builder().build(); assertThat(data.getQuantiles().size()).isZero(); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnitTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnitTest.java index 4585e7281..e288a2375 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnitTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnitTest.java @@ -8,12 +8,12 @@ class UnitTest { @Test - public void testEmpty() { + void testEmpty() { assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> new Unit(" ")); } @Test - public void testEquals1() { + void testEquals1() { Unit unit1 = Unit.BYTES; Unit unit2 = new Unit("bytes"); @@ -21,7 +21,7 @@ public void testEquals1() { } @Test - public void testEquals2() { + void testEquals2() { Unit unit1 = new Unit("bytes "); Unit unit2 = new Unit("bytes"); @@ -29,7 +29,7 @@ public void testEquals2() { } @Test - public void testEquals3() { + void testEquals3() { Unit unit1 = new Unit(" bytes"); Unit unit2 = new Unit("bytes"); @@ -37,7 +37,7 @@ public void testEquals3() { } @Test - public void testEquals4() { + void testEquals4() { Unit unit1 = new Unit(" bytes "); Unit unit2 = new Unit("bytes"); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnknownSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnknownSnapshotTest.java index 53df0a95d..33b4ac2b4 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnknownSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/UnknownSnapshotTest.java @@ -9,7 +9,7 @@ class UnknownSnapshotTest { @Test - public void testCompleteGoodCase() { + void testCompleteGoodCase() { long exemplarTimestamp = System.currentTimeMillis(); UnknownSnapshot snapshot = UnknownSnapshot.builder() @@ -46,7 +46,7 @@ public void testCompleteGoodCase() { } @Test - public void testMinimal() { + void testMinimal() { UnknownSnapshot snapshot = UnknownSnapshot.builder() .name("test") @@ -56,25 +56,25 @@ public void testMinimal() { } @Test - public void testEmpty() { + void testEmpty() { UnknownSnapshot snapshot = UnknownSnapshot.builder().name("test").build(); assertThat(snapshot.getDataPoints()).isEmpty(); } @Test - public void testNameMissing() { + void testNameMissing() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> UnknownSnapshot.builder().build()); } @Test - public void testValueMissing() { + void testValueMissing() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> UnknownSnapshot.UnknownDataPointSnapshot.builder().build()); } @Test - public void testUnknownDataPointSnapshot() { + void testUnknownDataPointSnapshot() { Labels labels = Labels.of("k1", "v1"); Exemplar exemplar = Exemplar.builder().value(2.0).build(); diff --git a/prometheus-metrics-simpleclient-bridge/src/test/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollectorTest.java b/prometheus-metrics-simpleclient-bridge/src/test/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollectorTest.java index a17ed8bc4..3905f8f42 100644 --- a/prometheus-metrics-simpleclient-bridge/src/test/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollectorTest.java +++ b/prometheus-metrics-simpleclient-bridge/src/test/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollectorTest.java @@ -30,14 +30,14 @@ class SimpleclientCollectorTest { private PrometheusRegistry newRegistry; @BeforeEach - public void setUp() { + void setUp() { origRegistry = new CollectorRegistry(); newRegistry = new PrometheusRegistry(); SimpleclientCollector.builder().collectorRegistry(origRegistry).register(newRegistry); } @Test - public void testCounterComplete() throws IOException, InterruptedException { + void testCounterComplete() throws IOException, InterruptedException { Counter counter = Counter.build() .name("service_time_seconds_total") @@ -52,14 +52,14 @@ public void testCounterComplete() throws IOException, InterruptedException { } @Test - public void testCounterMinimal() throws IOException { + void testCounterMinimal() throws IOException { Counter.build().name("events").help("total number of events").register(origRegistry); assertThat(sort(newOpenMetrics())).isEqualTo(fixTimestamps(sort(origOpenMetrics()))); } @Test - public void testGaugeComplete() throws IOException, InterruptedException { + void testGaugeComplete() throws IOException, InterruptedException { Gauge gauge = Gauge.build() .name("disk_usage_ratio") @@ -75,7 +75,7 @@ public void testGaugeComplete() throws IOException, InterruptedException { } @Test - public void testGaugeMinimal() throws IOException { + void testGaugeMinimal() throws IOException { Gauge gauge = Gauge.build() .name("temperature_centigrade") @@ -88,7 +88,7 @@ public void testGaugeMinimal() throws IOException { } @Test - public void testHistogramComplete() throws IOException, InterruptedException { + void testHistogramComplete() throws IOException, InterruptedException { Histogram histogram = Histogram.build() .name("response_size_bytes") @@ -108,14 +108,14 @@ public void testHistogramComplete() throws IOException, InterruptedException { } @Test - public void testHistogramMinimal() throws IOException { + void testHistogramMinimal() throws IOException { Histogram.build().name("request_latency").help("request latency").register(origRegistry); assertThat(sort(newOpenMetrics())).isEqualTo(fixCounts(fixTimestamps(sort(origOpenMetrics())))); } @Test - public void testSummaryComplete() throws IOException, InterruptedException { + void testSummaryComplete() throws IOException, InterruptedException { Summary summary = Summary.build() .name("http_request_duration_seconds") @@ -139,14 +139,14 @@ public void testSummaryComplete() throws IOException, InterruptedException { } @Test - public void testSummaryMinimal() throws IOException { + void testSummaryMinimal() throws IOException { Summary.build().name("request_size").help("request size").register(origRegistry); assertThat(sort(newOpenMetrics())).isEqualTo(fixCounts(fixTimestamps(sort(origOpenMetrics())))); } @Test - public void testInfoComplete() throws IOException, InterruptedException { + void testInfoComplete() throws IOException, InterruptedException { Info info = Info.build() .name("version") @@ -161,7 +161,7 @@ public void testInfoComplete() throws IOException, InterruptedException { } @Test - public void testInfoMinimal() throws IOException { + void testInfoMinimal() throws IOException { Info info = Info.build().name("jvm").help("JVM info").register(origRegistry); info.info("version", "17"); @@ -169,7 +169,7 @@ public void testInfoMinimal() throws IOException { } @Test - public void testStateSetComplete() throws IOException { + void testStateSetComplete() throws IOException { Collector stateSet = new Collector() { @Override @@ -192,7 +192,7 @@ public List collect() { } @Test - public void testUnknownComplete() throws IOException { + void testUnknownComplete() throws IOException { Collector unknown = new Collector() { @Override From 821858e563c5241237a3bc15621f1f0e2160d5cc Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 26 Jan 2026 07:55:54 -0500 Subject: [PATCH 038/110] Make super-linter ARM friendly (#1817) Signed-off-by: Jay DeLuca --- .mise/tasks/lint/super-linter.sh | 2 ++ CONTRIBUTING.md | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/.mise/tasks/lint/super-linter.sh b/.mise/tasks/lint/super-linter.sh index 994f6f638..9ff678580 100755 --- a/.mise/tasks/lint/super-linter.sh +++ b/.mise/tasks/lint/super-linter.sh @@ -7,9 +7,11 @@ set -euo pipefail # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter SUPER_LINTER_VERSION="v8.3.2@sha256:e9d1895a1bdc1f9d9df41f688b27aa891743f23f9fae0f22a3e25eeda8f102db" +# Super-linter doesn't publish ARM64 images, so always use amd64 docker pull --platform linux/amd64 "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" docker run --rm \ + --platform linux/amd64 \ -e RUN_LOCAL=true \ -e DEFAULT_BRANCH=main \ --env-file ".github/super-linter.env" \ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5be7b073d..164879f28 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,6 +19,10 @@ the code. Run `./mvnw spotless:apply` to format the code (only changed files) before committing. +Or run all the linters: + +`mise run lint:super-linter` + ## Running Tests If you're getting errors when running tests: From a756947e29e4c00eb7fa4820daae5625f4f7b696 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:05:35 +0000 Subject: [PATCH 039/110] fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.18 (#1820) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.tomcat.embed:tomcat-embed-core](https://tomcat.apache.org/) | `11.0.15` โ†’ `11.0.18` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.tomcat.embed:tomcat-embed-core/11.0.18?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.tomcat.embed:tomcat-embed-core/11.0.15/11.0.18?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../example-greeting-service/pom.xml | 2 +- .../example-hello-world-app/pom.xml | 2 +- examples/example-exporter-servlet-tomcat/pom.xml | 2 +- .../it-exporter/it-exporter-servlet-tomcat-sample/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml index ca96b3723..b2e1006a4 100644 --- a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml @@ -41,7 +41,7 @@ org.apache.tomcat.embed tomcat-embed-core - 11.0.15 + 11.0.18 diff --git a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml index f3664d80b..bccd6cb43 100644 --- a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml @@ -41,7 +41,7 @@ org.apache.tomcat.embed tomcat-embed-core - 11.0.15 + 11.0.18 diff --git a/examples/example-exporter-servlet-tomcat/pom.xml b/examples/example-exporter-servlet-tomcat/pom.xml index b5f0d1e60..26da0ae97 100644 --- a/examples/example-exporter-servlet-tomcat/pom.xml +++ b/examples/example-exporter-servlet-tomcat/pom.xml @@ -39,7 +39,7 @@ org.apache.tomcat.embed tomcat-embed-core - 11.0.15 + 11.0.18 diff --git a/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml b/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml index 2d5c34202..b71a90b3b 100644 --- a/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml @@ -34,7 +34,7 @@ org.apache.tomcat.embed tomcat-embed-core - 11.0.15 + 11.0.18 From 121181750c24c02b131f2fe037f9430ae66bd40a Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 26 Jan 2026 12:35:22 -0500 Subject: [PATCH 040/110] Run integration tests in matrix (#1802) Signed-off-by: Jay DeLuca --- .../workflows/java-version-matrix-tests.yml | 84 +++++++++++++++++++ .../client/it/common/ExporterTest.java | 6 +- .../metrics/it/pushgateway/PushGatewayIT.java | 6 +- 3 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/java-version-matrix-tests.yml diff --git a/.github/workflows/java-version-matrix-tests.yml b/.github/workflows/java-version-matrix-tests.yml new file mode 100644 index 000000000..fbdbab48f --- /dev/null +++ b/.github/workflows/java-version-matrix-tests.yml @@ -0,0 +1,84 @@ +--- +name: Integration Tests - Java Version Compatibility Matrix + +on: + pull_request: + paths: + - 'integration-tests/**' + - 'prometheus-metrics-core/**' + - 'prometheus-metrics-exporter-*/**' + - 'prometheus-metrics-exposition-*/**' + - '.github/workflows/java-version-matrix-tests.yml' + push: + branches: + - main + workflow_dispatch: + +permissions: {} + +jobs: + integration-tests: + name: Java ${{ matrix.java-version }} + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + # Note: Java 8 runtime testing is skipped due to Spotless incompatibility + java-version: [11, 17, 21, 25] + steps: + - name: Check out + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set up mise + uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 + with: + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + + - name: Cache local Maven repository + uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Build core library artifacts + run: mise exec -- ./mvnw install -DskipTests -Dspotless.check.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn -pl '!integration-tests' + + - name: Install parent POMs + run: | + cd integration-tests + mise exec -- ../mvnw clean install -N -Dspotless.skip=true + cd it-exporter + mise exec -- ../../mvnw install -N -Dspotless.skip=true + + - name: Rebuild sample apps targeting Java ${{ matrix.java-version }} + run: | + cd integration-tests + # Note: Jetty 12 and Tomcat 11 require Java 17+, so servlet samples are skipped for Java 11 + if [ "${{ matrix.java-version }}" = "11" ]; then + MODULES="it-common,it-exporter/it-exporter-httpserver-sample,it-exporter/it-exporter-no-protobuf,it-pushgateway" + else + MODULES="it-common,it-exporter/it-exporter-httpserver-sample,it-exporter/it-exporter-servlet-tomcat-sample,it-exporter/it-exporter-servlet-jetty-sample,it-exporter/it-exporter-no-protobuf,it-pushgateway" + fi + mise exec -- ../mvnw clean install -DskipTests -Dspotless.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn \ + -Djava.version=${{ matrix.java-version }} \ + -Dmaven.compiler.release=${{ matrix.java-version }} \ + -pl $MODULES + + - name: Run integration tests + env: + TEST_JAVA_VERSION: ${{ matrix.java-version }} + run: | + cd integration-tests + # Note: Servlet tests require Java 17+ (due to Jetty 12 and Tomcat 11) + if [ "${{ matrix.java-version }}" = "11" ]; then + TEST_MODULES="it-exporter/it-no-protobuf-test,it-pushgateway" + else + TEST_MODULES="it-exporter/it-exporter-test,it-exporter/it-no-protobuf-test,it-pushgateway" + fi + mise exec -- ../mvnw verify -T 2C -Dspotless.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn \ + -pl $TEST_MODULES \ No newline at end of file diff --git a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java index c397351ab..27338ed9f 100644 --- a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java +++ b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java @@ -33,8 +33,12 @@ public ExporterTest(String sampleApp) throws IOException, URISyntaxException { this.sampleAppVolume = Volume.create("it-exporter") .copy("../../it-" + sampleApp + "/target/" + sampleApp + ".jar"); + String javaVersion = System.getenv("TEST_JAVA_VERSION"); + if (javaVersion == null || javaVersion.isEmpty()) { + javaVersion = "25"; + } this.sampleAppContainer = - new GenericContainer<>("eclipse-temurin:25") + new GenericContainer<>("eclipse-temurin:" + javaVersion) .withFileSystemBind(sampleAppVolume.getHostPath(), "/app", BindMode.READ_ONLY) .withWorkingDirectory("/app") .withLogConsumer(LogConsumer.withPrefix(sampleApp)) diff --git a/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java b/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java index 26c48a977..3d31129f1 100644 --- a/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java +++ b/integration-tests/it-pushgateway/src/test/java/io/prometheus/metrics/it/pushgateway/PushGatewayIT.java @@ -33,6 +33,10 @@ class PushGatewayIT { void setUp() throws IOException, URISyntaxException { Network network = Network.newNetwork(); sampleAppVolume = Volume.create("it-pushgateway").copy("pushgateway-test-app.jar"); + String javaVersion = System.getenv("TEST_JAVA_VERSION"); + if (javaVersion == null || javaVersion.isEmpty()) { + javaVersion = "25"; + } pushGatewayContainer = new GenericContainer<>("prom/pushgateway:v1.8.0") .withExposedPorts(9091) @@ -41,7 +45,7 @@ void setUp() throws IOException, URISyntaxException { .withLogConsumer(LogConsumer.withPrefix("pushgateway")) .waitingFor(Wait.forListeningPort()); sampleAppContainer = - new GenericContainer<>("eclipse-temurin:25") + new GenericContainer<>("eclipse-temurin:" + javaVersion) .withFileSystemBind(sampleAppVolume.getHostPath(), "/app", BindMode.READ_ONLY) .withNetwork(network) .withWorkingDirectory("/app") From 3d433355bc58cfaf3dd1669b98aca0e533d6c51f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 19:05:02 +0000 Subject: [PATCH 041/110] chore(deps): update grafana/tempo docker tag to v2.10.0 (#1821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | grafana/tempo | minor | `2.9.1` โ†’ `2.10.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index 28a657b5d..ae6f77df4 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -52,7 +52,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yaml tempo: - image: grafana/tempo:2.9.1@sha256:290414580eabd1bde91f22e4a4579242fe77377c425223f45d59b8ad1540ce3c + image: grafana/tempo:2.10.0@sha256:d7f4c72e0bad2b42b4e7263b0addaf3f5bbc105cec6b1917eba0aae3b9b70364 network_mode: host volumes: - ./config/tempo-config.yaml:/config.yaml From 663d52fef6a4acf17c0b263427d109b9400fbc5d Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 26 Jan 2026 20:20:19 +0100 Subject: [PATCH 042/110] lint only modified links (#1819) Signed-off-by: Gregor Zeitlinger --- .editorconfig | 4 +-- .github/config/lychee.toml | 35 ++++++++++++++++++ .github/workflows/lint-rest.yml | 23 +++++++++--- .mise/tasks/lint/links-in-modified-files.sh | 39 +++++++++++++++++++++ .mise/tasks/lint/links.sh | 14 ++++++++ .mise/tasks/lint/local-links.sh | 14 ++++++++ lychee.toml | 15 -------- mise.toml | 4 --- 8 files changed, 123 insertions(+), 25 deletions(-) create mode 100644 .github/config/lychee.toml create mode 100755 .mise/tasks/lint/links-in-modified-files.sh create mode 100755 .mise/tasks/lint/links.sh create mode 100755 .mise/tasks/lint/local-links.sh delete mode 100644 lychee.toml diff --git a/.editorconfig b/.editorconfig index 6aed0058b..355cca83e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,5 +18,5 @@ max_line_length = 120 indent_size = 4 max_line_length = 120 -[{.mise/tasks/build-release.sh,.mise/tasks/lint/super-linter.sh,.github/workflows/multi-version-test.yml}] -max_line_length = 200 \ No newline at end of file +[{.mise/tasks/build-release.sh,.mise/tasks/lint/super-linter.sh,.mise/tasks/lint/links-in-modified-files.sh,.github/workflows/multi-version-test.yml,.github/workflows/lint-rest.yml}] +max_line_length = 200 diff --git a/.github/config/lychee.toml b/.github/config/lychee.toml new file mode 100644 index 000000000..9ba423471 --- /dev/null +++ b/.github/config/lychee.toml @@ -0,0 +1,35 @@ +# Lychee configuration file +# See https://lychee.cli.rs/config/ + +timeout = 30 +retry_wait_time = 5 +max_retries = 6 +max_concurrency = 4 + +# Check link anchors +include_fragments = true + +base_url = "https://prometheus.github.io" +exclude_path = ["docs/themes"] + +remap = [ + # workaround for https://github.com/lycheeverse/lychee/issues/1729 + "https://github.com/(.*?)/(.*?)/blob/(.*?)/(.*#.*)$ https://raw.githubusercontent.com/$1/$2/$3/$4" +] + +exclude = [ + # excluding links to pull requests and issues is done for performance + "^https://github.com/prometheus/client_java/(issues|pull)/\\d+$", + + # exclude localhost URLs as they require running services + "^http://localhost", + "^https://localhost", + + '#', + 'CONTRIBUTING.md', + 'LICENSE', + 'MAINTAINERS.md', + + # exclude private GitHub settings pages + "^https://github.com/prometheus/client_java/settings/", +] diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index efce5cfa5..a1649a905 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -1,9 +1,14 @@ --- name: Lint What Super Linter Can't -on: [pull_request] +on: + pull_request: + push: + branches: + - main -permissions: {} +permissions: + contents: read jobs: lint: @@ -12,10 +17,20 @@ jobs: - name: Check out with: persist-credentials: false + fetch-depth: 0 # needed for merge-base used in lint:links-in-modified-files uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.1.7 sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - - name: Lint - run: mise run lint:rest + + - name: Lint for pull requests + if: github.event_name == 'pull_request' + env: + GITHUB_TOKEN: ${{ github.token }} + GITHUB_BASE_REF: ${{ github.base_ref }} + GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + run: | + mise run lint:bom + mise run lint:local-links + mise run lint:links-in-modified-files --base origin/"${GITHUB_BASE_REF}" --head "${GITHUB_HEAD_SHA}" diff --git a/.mise/tasks/lint/links-in-modified-files.sh b/.mise/tasks/lint/links-in-modified-files.sh new file mode 100755 index 000000000..3b39a133d --- /dev/null +++ b/.mise/tasks/lint/links-in-modified-files.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +#MISE description="Lint links in modified files" + +set -e + +#USAGE flag "--base " help="base branch to compare against (default: origin/main)" default="origin/main" +#USAGE flag "--head " help="head branch to compare against (empty for local changes) (default: empty)" default="" + +# shellcheck disable=SC2154 +if [ "$usage_head" = "''" ]; then + usage_head="" +fi + +# Check if lychee config was modified +# - because usage_head may be empty +# shellcheck disable=SC2086,SC2154 +config_modified=$(git diff --name-only --merge-base "$usage_base" $usage_head | + grep -E '^(\.github/config/lychee\.toml|\.mise/tasks/lint/.*|mise\.toml)$' || true) + +if [ -n "$config_modified" ]; then + echo "config changes, checking all files." + mise run lint:links +else + # Using lychee's default extension filter here to match when it runs against all files + # Note: --diff-filter=d filters out deleted files + # - because usage_head may be empty + # shellcheck disable=SC2086 + modified_files=$(git diff --name-only --diff-filter=d "$usage_base" $usage_head | + grep -E '\.(md|mkd|mdx|mdown|mdwn|mkdn|mkdown|markdown|html|htm|txt)$' | + tr '\n' ' ' || true) + + if [ -z "$modified_files" ]; then + echo "No modified files, skipping link linting." + exit 0 + fi + + # shellcheck disable=SC2086 + mise run lint:links $modified_files +fi diff --git a/.mise/tasks/lint/links.sh b/.mise/tasks/lint/links.sh new file mode 100755 index 000000000..19df7f20d --- /dev/null +++ b/.mise/tasks/lint/links.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +#MISE description="Lint links in all files" + +set -e + +#USAGE arg "" var=#true help="files to check" default="." + +# shellcheck disable=SC2154 +for f in $usage_file; do + echo "Checking links in file: $f" +done + +# shellcheck disable=SC2086 +lychee --verbose --config .github/config/lychee.toml $usage_file diff --git a/.mise/tasks/lint/local-links.sh b/.mise/tasks/lint/local-links.sh new file mode 100755 index 000000000..054bb4ab4 --- /dev/null +++ b/.mise/tasks/lint/local-links.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +#MISE description="Lint links in local files" + +set -e + +#USAGE arg "" var=#true help="files to check" default="." + +# shellcheck disable=SC2154 +for f in $usage_file; do + echo "Checking links in file: $f" +done + +# shellcheck disable=SC2086 +lychee --verbose --scheme file --include-fragments --config .github/config/lychee.toml $usage_file diff --git a/lychee.toml b/lychee.toml deleted file mode 100644 index d67acf825..000000000 --- a/lychee.toml +++ /dev/null @@ -1,15 +0,0 @@ -max_retries = 6 -exclude_loopback = true -cache = true - -base_url = "https://prometheus.github.io" -exclude_path = ["docs/themes"] -exclude = [ - '^https://github\.com/prometheus/client_java/settings', - '#', - 'CONTRIBUTING.md', - 'LICENSE', - 'MAINTAINERS.md' -] - - diff --git a/mise.toml b/mise.toml index 9e0118e33..cf6cfe694 100644 --- a/mise.toml +++ b/mise.toml @@ -43,10 +43,6 @@ run = "./mvnw verify" description = "build all modules without tests" run = "./mvnw install -DskipTests -Dcoverage.skip=true" -[tasks."lint:links"] -description = "Lint markdown links" -run = "lychee --include-fragments ." - [tasks."lint:rest"] description = "All lints not covered by super linter" depends = ["lint:links", "lint:bom"] From 0569554feaaf55473d72623d19dfffc153e8d6ea Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 26 Jan 2026 14:22:18 -0500 Subject: [PATCH 043/110] Run nightly benchmarks (#1803) Tested on my fork, results can be seen here: https://github.com/jaydeluca/client_java/tree/benchmarks --------- Signed-off-by: Jay DeLuca --- .github/workflows/nightly-benchmarks.yml | 102 ++++++ .gitignore | 4 + .mise/tasks/generate_benchmark_summary.py | 378 ++++++++++++++++++++++ benchmarks/README.md | 31 ++ mise.toml | 21 ++ 5 files changed, 536 insertions(+) create mode 100644 .github/workflows/nightly-benchmarks.yml create mode 100644 .mise/tasks/generate_benchmark_summary.py diff --git a/.github/workflows/nightly-benchmarks.yml b/.github/workflows/nightly-benchmarks.yml new file mode 100644 index 000000000..acc388546 --- /dev/null +++ b/.github/workflows/nightly-benchmarks.yml @@ -0,0 +1,102 @@ +--- +name: Nightly Benchmarks + +on: + schedule: + # Run at 2 AM UTC every day + - cron: "0 2 * * *" + workflow_dispatch: + inputs: + jmh_args: + description: "Additional JMH arguments (e.g., '-f 1 -wi 1 -i 3' for quick run)" + required: false + default: "" + +permissions: {} + +concurrency: + group: "benchmarks" + +defaults: + run: + shell: bash + +jobs: + benchmark: + runs-on: ubuntu-24.04 + permissions: + contents: write + steps: + - name: Checkout main branch + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: true + fetch-depth: 0 + + - name: Setup mise + uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 + with: + version: v2026.1.4 + sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + + - name: Cache local Maven repository + uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Run JMH benchmarks + run: mise run benchmark:ci-json + env: + JMH_ARGS: ${{ github.event.inputs.jmh_args }} + + - name: Generate benchmark summary + run: | + mise run benchmark:generate-summary \ + --input benchmark-results.json \ + --output-dir benchmark-results \ + --commit-sha "${{ github.sha }}" + env: + GITHUB_REPOSITORY: ${{ github.repository }} + + - name: Commit and push results to benchmarks branch + run: | + # Save results to a temp location + mkdir -p /tmp/benchmark-output + cp -r benchmark-results/* /tmp/benchmark-output/ + + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + # Checkout or create benchmarks branch (use -- to disambiguate from benchmarks/ directory) + if git ls-remote --heads origin benchmarks | grep -q benchmarks; then + git fetch origin benchmarks + git switch benchmarks + # Preserve existing history + if [ -d history ]; then + cp -r history /tmp/benchmark-output/ + fi + else + git switch --orphan benchmarks + fi + + # Clean working directory + git rm -rf . 2>/dev/null || true + find . -mindepth 1 -maxdepth 1 ! -name '.git' -exec rm -rf {} + + + # Copy only the benchmark results + cp -r /tmp/benchmark-output/* . + + git add README.md results.json history/ + + DATE=$(date -u +"%Y-%m-%d") + COMMIT_SHORT=$(echo "${{ github.sha }}" | cut -c1-7) + + git commit \ + -m "Benchmark results for ${DATE} (${COMMIT_SHORT})" \ + -m "From commit ${{ github.sha }}" \ + || echo "No changes to commit" + + git push origin benchmarks --force-with-lease || git push origin benchmarks diff --git a/.gitignore b/.gitignore index b727017a9..83f5595ba 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,7 @@ dependency-reduced-pom.xml **/.settings/ docs/public .lycheecache + +benchmark-results/ +benchmark-results.json +benchmark-output.log diff --git a/.mise/tasks/generate_benchmark_summary.py b/.mise/tasks/generate_benchmark_summary.py new file mode 100644 index 000000000..0b0c4fb01 --- /dev/null +++ b/.mise/tasks/generate_benchmark_summary.py @@ -0,0 +1,378 @@ +#!/usr/bin/env python3 + +# [MISE] description="Generate markdown summary from JMH benchmark JSON results" +# [MISE] alias="generate-benchmark-summary" + +""" +Generate a markdown summary from JMH benchmark JSON results. + +Usage: + python3 .mise/tasks/generate_benchmark_summary.py [--input results.json] [--output-dir ./benchmark-results] + +This script: +1. Reads JMH JSON output +2. Generates a README.md with formatted tables +3. Copies results to the output directory with historical naming +""" + +import argparse +import json +import os +import shutil +import sys +from datetime import datetime, timezone +from pathlib import Path +from typing import Dict, List, Optional + + +def parse_args(): + parser = argparse.ArgumentParser( + description="Generate benchmark summary from JMH JSON" + ) + parser.add_argument( + "--input", + default="benchmark-results.json", + help="Path to JMH JSON results file (default: benchmark-results.json)", + ) + parser.add_argument( + "--output-dir", + default="benchmark-results", + help="Output directory for results (default: benchmark-results)", + ) + parser.add_argument( + "--commit-sha", + default=None, + help="Git commit SHA (default: read from git or 'local')", + ) + return parser.parse_args() + + +def get_system_info() -> Dict[str, str]: + """Capture system hardware information.""" + import multiprocessing + import platform + + info = {} + + try: + info["cpu_cores"] = str(multiprocessing.cpu_count()) + except Exception: + pass + + try: + with open("/proc/cpuinfo", "r") as f: + for line in f: + if line.startswith("model name"): + info["cpu_model"] = line.split(":")[1].strip() + break + except FileNotFoundError: + # macOS + try: + import subprocess + + result = subprocess.run( + ["sysctl", "-n", "machdep.cpu.brand_string"], + capture_output=True, + text=True, + timeout=5, + ) + if result.returncode == 0: + info["cpu_model"] = result.stdout.strip() + except Exception: + pass + + try: + with open("/proc/meminfo", "r") as f: + for line in f: + if line.startswith("MemTotal"): + kb = int(line.split()[1]) + info["memory_gb"] = str(round(kb / 1024 / 1024)) + break + except FileNotFoundError: + # macOS + try: + import subprocess + + result = subprocess.run( + ["sysctl", "-n", "hw.memsize"], + capture_output=True, + text=True, + timeout=5, + ) + if result.returncode == 0: + bytes_mem = int(result.stdout.strip()) + info["memory_gb"] = str(round(bytes_mem / 1024 / 1024 / 1024)) + except Exception: + pass + + info["os"] = f"{platform.system()} {platform.release()}" + + return info + + +def get_commit_sha(provided_sha: Optional[str]) -> str: + """Get commit SHA from argument, git, or return 'local'.""" + if provided_sha: + return provided_sha + + try: + import subprocess + + result = subprocess.run( + ["git", "rev-parse", "HEAD"], + capture_output=True, + text=True, + timeout=5, + ) + if result.returncode == 0: + return result.stdout.strip() + except Exception: + pass + + return "local" + + +def format_score(score) -> str: + """Format score with appropriate precision.""" + try: + val = float(score) + if val >= 1_000_000: + return f"{val / 1_000_000:.2f}M" + elif val >= 1_000: + return f"{val / 1_000:.2f}K" + else: + return f"{val:.2f}" + except (ValueError, TypeError): + return str(score) + + +def format_error(error) -> str: + """Format error value, handling NaN.""" + try: + error_val = float(error) + if error_val != error_val: # NaN check + return "" + elif error_val >= 1_000: + return f"ยฑ {error_val / 1_000:.2f}K" + else: + return f"ยฑ {error_val:.2f}" + except (ValueError, TypeError): + return "" + + +def generate_markdown(results: List, commit_sha: str, repo: str) -> str: + """Generate markdown summary from JMH results.""" + commit_short = commit_sha[:7] + datetime_str = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + # Extract metadata from first result + first = results[0] if results else {} + jdk_version = first.get("jdkVersion", "unknown") + vm_name = first.get("vmName", "unknown") + threads = first.get("threads", "?") + forks = first.get("forks", "?") + warmup_iters = first.get("warmupIterations", "?") + measure_iters = first.get("measurementIterations", "?") + + sysinfo = get_system_info() + + md = [] + md.append("# Prometheus Java Client Benchmarks") + md.append("") + + md.append("## Run Information") + md.append("") + md.append(f"- **Date:** {datetime_str}") + if commit_sha != "local": + md.append( + f"- **Commit:** [`{commit_short}`](https://github.com/{repo}/commit/{commit_sha})" + ) + else: + md.append(f"- **Commit:** `{commit_short}` (local run)") + md.append(f"- **JDK:** {jdk_version} ({vm_name})") + bench_cfg = f"{forks} fork(s), {warmup_iters} warmup, {measure_iters} measurement, {threads} threads" + md.append(f"- **Benchmark config:** {bench_cfg}") + + hw_parts = [] + if sysinfo.get("cpu_model"): + hw_parts.append(sysinfo["cpu_model"]) + if sysinfo.get("cpu_cores"): + hw_parts.append(f"{sysinfo['cpu_cores']} cores") + if sysinfo.get("memory_gb"): + hw_parts.append(f"{sysinfo['memory_gb']} GB RAM") + if hw_parts: + md.append(f"- **Hardware:** {', '.join(hw_parts)}") + if sysinfo.get("os"): + md.append(f"- **OS:** {sysinfo['os']}") + + md.append("") + + # Group by benchmark class + benchmarks_by_class: Dict[str, List] = {} + for b in results: + name = b.get("benchmark", "") + parts = name.rsplit(".", 1) + if len(parts) == 2: + class_name, method = parts + class_short = class_name.split(".")[-1] + else: + class_short = "Other" + benchmarks_by_class.setdefault(class_short, []).append(b) + + md.append("## Results") + md.append("") + + # Generate table for each class + for class_name in sorted(benchmarks_by_class.keys()): + benchmarks = benchmarks_by_class[class_name] + md.append(f"### {class_name}") + md.append("") + + # Sort by score descending + sorted_benchmarks = sorted( + benchmarks, + key=lambda x: x.get("primaryMetric", {}).get("score", 0), + reverse=True, + ) + + md.append("| Benchmark | Score | Error | Units | |") + md.append("|:----------|------:|------:|:------|:---|") + + best_score = ( + sorted_benchmarks[0].get("primaryMetric", {}).get("score", 1) + if sorted_benchmarks + else 1 + ) + + for i, b in enumerate(sorted_benchmarks): + name = b.get("benchmark", "").split(".")[-1] + score = b.get("primaryMetric", {}).get("score", 0) + error = b.get("primaryMetric", {}).get("scoreError", 0) + unit = b.get("primaryMetric", {}).get("scoreUnit", "ops/s") + + score_fmt = format_score(score) + error_fmt = format_error(error) + + # Calculate relative performance as multiplier + try: + if i == 0: + relative_fmt = "**fastest**" + else: + multiplier = float(best_score) / float(score) + if multiplier >= 10: + relative_fmt = f"{multiplier:.0f}x slower" + else: + relative_fmt = f"{multiplier:.1f}x slower" + except (ValueError, TypeError, ZeroDivisionError): + relative_fmt = "" + + md.append( + f"| {name} | {score_fmt} | {error_fmt} | {unit} | {relative_fmt} |" + ) + + md.append("") + + md.append("### Raw Results") + md.append("") + md.append("```") + md.append( + f"{'Benchmark':<50} {'Mode':>6} {'Cnt':>4} {'Score':>14} {'Error':>12} Units" + ) + + for b in sorted(results, key=lambda x: x.get("benchmark", "")): + name = b.get("benchmark", "").replace("io.prometheus.metrics.benchmarks.", "") + mode = b.get("mode", "thrpt") + cnt = b.get("measurementIterations", 0) * b.get("forks", 1) + score = b.get("primaryMetric", {}).get("score", 0) + error = b.get("primaryMetric", {}).get("scoreError", 0) + unit = b.get("primaryMetric", {}).get("scoreUnit", "ops/s") + + try: + score_str = f"{float(score):.3f}" + except (ValueError, TypeError): + score_str = str(score) + + try: + error_val = float(error) + if error_val != error_val: # NaN + error_str = "" + else: + error_str = f"ยฑ {error_val:.3f}" + except (ValueError, TypeError): + error_str = "" + + md.append( + f"{name:<50} {mode:>6} {cnt:>4} {score_str:>14} {error_str:>12} {unit}" + ) + + md.append("```") + md.append("") + + md.append("## Notes") + md.append("") + md.append("- **Score** = Throughput in operations per second (higher is better)") + md.append("- **Error** = 99.9% confidence interval") + md.append("") + + md.append("## Benchmark Descriptions") + md.append("") + md.append("| Benchmark | Description |") + md.append("|:----------|:------------|") + md.append( + "| **CounterBenchmark** | Counter increment performance: " + "Prometheus, OpenTelemetry, simpleclient, Codahale |" + ) + md.append( + "| **HistogramBenchmark** | Histogram observation performance " + "(classic vs native/exponential) |" + ) + md.append( + "| **TextFormatUtilBenchmark** | Metric exposition format writing speed |" + ) + md.append("") + return "\n".join(md) + + +def main(): + args = parse_args() + + input_path = Path(args.input) + if not input_path.exists(): + print(f"Error: Input file not found: {input_path}") + sys.exit(1) + + print(f"Reading results from: {input_path}") + with open(input_path, "r") as f: + results = json.load(f) + + print(f"Found {len(results)} benchmark results") + + commit_sha = get_commit_sha(args.commit_sha) + commit_short = commit_sha[:7] + repo = os.environ.get("GITHUB_REPOSITORY", "prometheus/client_java") + + output_dir = Path(args.output_dir) + output_dir.mkdir(parents=True, exist_ok=True) + history_dir = output_dir / "history" + history_dir.mkdir(parents=True, exist_ok=True) + + results_json_path = output_dir / "results.json" + shutil.copy(input_path, results_json_path) + print(f"Copied results to: {results_json_path}") + + date_str = datetime.now(timezone.utc).strftime("%Y-%m-%d") + history_path = history_dir / f"{date_str}-{commit_short}.json" + shutil.copy(input_path, history_path) + print(f"Saved historical entry: {history_path}") + + markdown = generate_markdown(results, commit_sha, repo) + readme_path = output_dir / "README.md" + with open(readme_path, "w") as f: + f.write(markdown) + print(f"Generated summary: {readme_path}") + + print(f"\nDone! Results are in: {output_dir}/") + + +if __name__ == "__main__": + main() diff --git a/benchmarks/README.md b/benchmarks/README.md index 3bba56422..b4c824d85 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -10,6 +10,17 @@ Run benchmarks and update the results in the Javadoc of the benchmark classes: mise run update-benchmarks ``` +### Different benchmark configurations + +The full benchmark suite takes approximately 2 hours with JMH defaults. +For faster iterations, use these preset configurations: + +| Command | Duration | Use Case | +| ----------------------------- | -------- | ---------------------------------------- | +| `mise run benchmark:quick` | ~10 min | Quick smoke test during development | +| `mise run benchmark:standard` | ~60 min | CI/nightly runs with good accuracy | +| `mise run benchmark:full` | ~2 hours | Full JMH defaults for release validation | + ### Running benchmarks manually ```shell @@ -22,6 +33,26 @@ Run only one specific benchmark: java -jar ./benchmarks/target/benchmarks.jar CounterBenchmark ``` +### Custom JMH arguments + +You can pass custom JMH arguments: + +```shell +# Quick run: 1 fork, 1 warmup iteration, 3 measurement iterations +mise run update-benchmarks -- --jmh-args "-f 1 -wi 1 -i 3" + +# Standard CI: 3 forks, 3 warmup iterations, 5 measurement iterations +mise run update-benchmarks -- --jmh-args "-f 3 -wi 3 -i 5" +``` + +JMH parameter reference: + +- `-f N`: Number of forks (JVM restarts) +- `-wi N`: Number of warmup iterations +- `-i N`: Number of measurement iterations +- `-w Ns`: Warmup iteration time (default: 10s) +- `-r Ns`: Measurement iteration time (default: 10s) + ## Results See Javadoc of the benchmark classes: diff --git a/mise.toml b/mise.toml index cf6cfe694..e83a5fd0f 100644 --- a/mise.toml +++ b/mise.toml @@ -79,3 +79,24 @@ run = [ "hugo --gc --minify --baseURL ${BASE_URL}/", "echo 'ls ./public/api' && ls ./public/api" ] + +[tasks."benchmark:quick"] +description = "Run benchmarks with reduced iterations (quick smoke test, ~10 min)" +run = "python3 ./.mise/tasks/update_benchmarks.py --jmh-args '-f 1 -wi 1 -i 3'" + +[tasks."benchmark:ci"] +description = "Run benchmarks with CI configuration (3 forks, 3 warmup, 5 measurement iterations (~60 min total)" +run = "python3 ./.mise/tasks/update_benchmarks.py --jmh-args '-f 3 -wi 3 -i 5'" + +[tasks."benchmark:ci-json"] +description = "Run benchmarks with CI configuration and JSON output (for workflow/testing)" +run = """ +./mvnw -pl benchmarks -am -DskipTests clean package +JMH_ARGS="${JMH_ARGS:--f 3 -wi 3 -i 5}" +echo "Running benchmarks with args: $JMH_ARGS" +java -jar ./benchmarks/target/benchmarks.jar -rf json -rff benchmark-results.json $JMH_ARGS +""" + +[tasks."benchmark:generate-summary"] +description = "Generate summary from existing benchmark-results.json" +run = "python3 ./.mise/tasks/generate_benchmark_summary.py" From d32fd1260440996d672c2650d43af3b535a28c32 Mon Sep 17 00:00:00 2001 From: Donnerbart Date: Mon, 26 Jan 2026 20:24:59 +0100 Subject: [PATCH 044/110] Prevent exception in HttpServer exporter when using custom root metrics path (#1772) The behavior of `HttpServer.createContext()` was changed between Java 11 and 21. In the current JDKs the server doesn't allow to register multiple contexts with the same path. So if you configure ```java HTTPServer.builder() .port(0) .registry(registry) .metricsHandlerPath("/") .buildAndStart() ``` you get the following exception: ``` java.lang.IllegalArgumentException: cannot add context to list at jdk.httpserver/sun.net.httpserver.ContextList.add(ContextList.java:37) at jdk.httpserver/sun.net.httpserver.ServerImpl.createContext(ServerImpl.java:306) at jdk.httpserver/sun.net.httpserver.HttpServerImpl.createContext(HttpServerImpl.java:69) at jdk.httpserver/sun.net.httpserver.HttpServerImpl.createContext(HttpServerImpl.java:34) at io.prometheus.metrics.exporter.httpserver.HTTPServer.registerHandler(HTTPServer.java:111) ``` This PR fixes the issue by skipping the default handler registration in case the metrics are configured for the root path. I also improved the unit test so we can properly assert `expectedStatusCode` and `expectedBody`. With this improvement we can be sure that an endpoint actually returns the expected handler content, not just a matching status code. Signed-off-by: David Sondermann --- .../exporter/httpserver/HTTPServer.java | 10 ++ .../exporter/httpserver/HTTPServerTest.java | 152 +++++++++++------- 2 files changed, 107 insertions(+), 55 deletions(-) diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java index 41fdec76d..55ed6c67e 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java @@ -66,11 +66,21 @@ private HTTPServer( this.server = httpServer; this.executorService = executorService; String metricsPath = getMetricsPath(metricsHandlerPath); + try { + server.removeContext("/"); + } catch (IllegalArgumentException e) { + // context "/" not registered yet, ignore + } registerHandler( "/", defaultHandler == null ? new DefaultHandler(metricsPath) : defaultHandler, authenticator, authenticatedSubjectAttributeName); + try { + server.removeContext(metricsPath); + } catch (IllegalArgumentException e) { + // context metricsPath not registered yet, ignore + } registerHandler( metricsPath, new MetricsHandler(config, registry), diff --git a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java index 58b5a9446..83c4a2874 100644 --- a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java +++ b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java @@ -10,26 +10,42 @@ import com.sun.net.httpserver.HttpsConfigurator; import io.prometheus.metrics.model.registry.PrometheusRegistry; import io.prometheus.metrics.model.registry.PrometheusScrapeRequest; +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshots; import java.io.IOException; import java.lang.reflect.Method; import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.nio.charset.StandardCharsets; -import java.security.NoSuchAlgorithmException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.security.Principal; +import java.util.List; import java.util.concurrent.Executors; import javax.net.ssl.SSLContext; import javax.security.auth.Subject; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; class HTTPServerTest { + private PrometheusRegistry registry; + + @BeforeEach + void setUp() { + final MetricMetadata metadata = new MetricMetadata("my-counter"); + final CounterDataPointSnapshot dataPointSnapshot = + new CounterDataPointSnapshot(1.0, Labels.EMPTY, null, System.currentTimeMillis()); + + registry = new PrometheusRegistry(); + registry.register(() -> new CounterSnapshot(metadata, List.of(dataPointSnapshot))); + } + @Test - @SuppressWarnings({"removal"}) public void testSubjectDoAs() throws Exception { - final String user = "joe"; final Subject subject = new Subject(); subject.getPrincipals().add(() -> user); @@ -66,61 +82,61 @@ public Result authenticate(HttpExchange exchange) { .authenticatedSubjectAttributeName("aa") .buildAndStart(); - run(server, "204", "/"); + run(server, "/", 204, ""); } - private static void run(HTTPServer server, String expected, String path) throws IOException { - try (Socket socket = new Socket()) { - socket.connect(new InetSocketAddress("localhost", server.getPort())); - - socket - .getOutputStream() - .write(("GET " + path + " HTTP/1.1 \r\n").getBytes(StandardCharsets.UTF_8)); - socket.getOutputStream().write("HOST: localhost \r\n\r\n".getBytes(StandardCharsets.UTF_8)); - socket.getOutputStream().flush(); - - String actualResponse = ""; - byte[] resp = new byte[500]; - int read = socket.getInputStream().read(resp, 0, resp.length); - if (read > 0) { - actualResponse = new String(resp, 0, read, StandardCharsets.UTF_8); - } - assertThat(actualResponse).contains(expected); - } + @Test + void defaultHandler() throws Exception { + run( + HTTPServer.builder().port(0).buildAndStart(), + "/", + 200, + "Prometheus Java Client"); } @Test - void defaultHandler() throws IOException { - run(HTTPServer.builder().port(0).buildAndStart(), "200", "/"); + void metrics() throws Exception { + run( + HTTPServer.builder() + .port(0) + .registry(registry) + .executorService(Executors.newFixedThreadPool(1)) + .buildAndStart(), + "/metrics", + 200, + "my_counter_total 1.0"); } @Test - void metrics() throws IOException { + void metricsCustomPath() throws Exception { run( HTTPServer.builder() .port(0) - .registry(new PrometheusRegistry()) + .registry(registry) + .metricsHandlerPath("/my-metrics") .executorService(Executors.newFixedThreadPool(1)) .buildAndStart(), - "200", - "/metrics"); + "/my-metrics", + 200, + "my_counter_total 1.0"); } @Test - void metricsCustomPath() throws IOException { + void metricsCustomRootPath() throws Exception { run( HTTPServer.builder() .port(0) - .registry(new PrometheusRegistry()) - .metricsHandlerPath("/my-metrics") + .registry(registry) + .metricsHandlerPath("/") .executorService(Executors.newFixedThreadPool(1)) .buildAndStart(), - "200", - "/my-metrics"); + "/", + 200, + "my_counter_total 1.0"); } @Test - void registryThrows() throws IOException { + void registryThrows() throws Exception { HTTPServer server = HTTPServer.builder() .port(0) @@ -132,11 +148,12 @@ public MetricSnapshots scrape(PrometheusScrapeRequest scrapeRequest) { } }) .buildAndStart(); - run(server, "500", "/metrics"); + run(server, "/metrics", 500, "An Exception occurred while scraping metrics"); } @Test - void config() throws NoSuchAlgorithmException, IOException { + @SuppressWarnings("resource") + void config() { assertThatExceptionOfType(IllegalStateException.class) .isThrownBy( () -> @@ -147,23 +164,27 @@ void config() throws NoSuchAlgorithmException, IOException { .buildAndStart()) .withMessage("cannot configure 'inetAddress' and 'hostname' at the same time"); - // ssl doesn't work without in tests - run( - HTTPServer.builder() - .port(0) - .httpsConfigurator(new HttpsConfigurator(SSLContext.getDefault())) - .buildAndStart(), - "", - "/"); + // SSL doesn't work in this simple test configuration + assertThatExceptionOfType(IOException.class) + .isThrownBy( + () -> + run( + HTTPServer.builder() + .port(0) + .httpsConfigurator(new HttpsConfigurator(SSLContext.getDefault())) + .buildAndStart(), + "/", + 0, + "ignored")); } @Test - void health() throws IOException { - run(HTTPServer.builder().port(0).buildAndStart(), "200", "/-/healthy"); + void health() throws Exception { + run(HTTPServer.builder().port(0).buildAndStart(), "/-/healthy", 200, "Exporter is healthy."); } @Test - void healthEnabled() throws IOException { + void healthEnabled() throws Exception { HttpHandler handler = exchange -> exchange.sendResponseHeaders(204, -1); run( HTTPServer.builder() @@ -171,12 +192,13 @@ void healthEnabled() throws IOException { .defaultHandler(handler) .registerHealthHandler(true) .buildAndStart(), - "200", - "/-/healthy"); + "/-/healthy", + 200, + "Exporter is healthy."); } @Test - void healthDisabled() throws IOException { + void healthDisabled() throws Exception { HttpHandler handler = exchange -> exchange.sendResponseHeaders(204, -1); run( HTTPServer.builder() @@ -184,8 +206,28 @@ void healthDisabled() throws IOException { .defaultHandler(handler) .registerHealthHandler(false) .buildAndStart(), - "204", - "/-/healthy"); + "/-/healthy", + 204, + ""); + } + + private static void run( + HTTPServer server, String path, int expectedStatusCode, String expectedBody) + throws Exception { + // we cannot use try-with-resources or even client.close(), or the test will fail with Java 17 + @SuppressWarnings("resource") + final HttpClient client = HttpClient.newBuilder().build(); + try { + final URI uri = URI.create("http://localhost:%s%s".formatted(server.getPort(), path)); + final HttpRequest request = HttpRequest.newBuilder().uri(uri).GET().build(); + + final HttpResponse response = + client.send(request, HttpResponse.BodyHandlers.ofString()); + assertThat(response.statusCode()).isEqualTo(expectedStatusCode); + assertThat(response.body()).contains(expectedBody); + } finally { + server.stop(); + } } /** From 4d1bc70132712942ceb72e73444ccd59a0820614 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 05:48:28 +0000 Subject: [PATCH 045/110] chore(deps): update dependency com.uber.nullaway:nullaway to v0.13.1 (#1822) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.uber.nullaway:nullaway](https://redirect.github.com/uber/NullAway) | `0.13.0` โ†’ `0.13.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.uber.nullaway:nullaway/0.13.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.uber.nullaway:nullaway/0.13.0/0.13.1?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes

uber/NullAway (com.uber.nullaway:nullaway) ### [`v0.13.1`](https://redirect.github.com/uber/NullAway/blob/HEAD/CHANGELOG.md#Version-0131) [Compare Source](https://redirect.github.com/uber/NullAway/compare/v0.13.0...v0.13.1) - Improve verification of !null -> !null contracts ([#​1441](https://redirect.github.com/uber/NullAway/issues/1441)) - Substitute inferred `@NonNull` types for generic method inference ([#​1445](https://redirect.github.com/uber/NullAway/issues/1445)) - Better support for some contracts with boolean argument constraints ([#​1447](https://redirect.github.com/uber/NullAway/issues/1447)) - Maintenance - Add junit-framework as another integration test ([#​1446](https://redirect.github.com/uber/NullAway/issues/1446))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9a12a1591..756b43c4a 100644 --- a/pom.xml +++ b/pom.xml @@ -454,7 +454,7 @@ com.uber.nullaway nullaway - 0.13.0 + 0.13.1
From 672672fa6177b3aa87a4a91201e6aae274b88a14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 21:37:36 +0000 Subject: [PATCH 046/110] chore(deps): update grafana/grafana docker tag to v12.3.2 (#1824) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [grafana/grafana](https://redirect.github.com/grafana/grafana) | patch | `12.3.1` โ†’ `12.3.2` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
grafana/grafana (grafana/grafana) ### [`v12.3.2`](https://redirect.github.com/grafana/grafana/compare/v12.3.1...v12.3.2) [Compare Source](https://redirect.github.com/grafana/grafana/compare/v12.3.1...v12.3.2)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index ae6f77df4..f07f22d8e 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -59,7 +59,7 @@ services: command: - --config.file=/config.yaml grafana: - image: grafana/grafana:12.3.1@sha256:2175aaa91c96733d86d31cf270d5310b278654b03f5718c59de12a865380a31f + image: grafana/grafana:12.3.2@sha256:ba93c9d192e58b23e064c7f501d453426ccf4a85065bf25b705ab1e98602bfb1 network_mode: host ports: - "3000:3000" diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index 8c27abce0..2768d915a 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -18,7 +18,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yml grafana: - image: grafana/grafana:12.3.1@sha256:2175aaa91c96733d86d31cf270d5310b278654b03f5718c59de12a865380a31f + image: grafana/grafana:12.3.2@sha256:ba93c9d192e58b23e064c7f501d453426ccf4a85065bf25b705ab1e98602bfb1 network_mode: host volumes: - ./docker-compose/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml From 9d2e68e2ba13e89c9206203ec78767d330a15a9d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 03:04:40 +0000 Subject: [PATCH 047/110] chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.2.1 (#1825) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.diffplug.spotless:spotless-maven-plugin](https://redirect.github.com/diffplug/spotless) | `3.2.0` โ†’ `3.2.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.diffplug.spotless:spotless-maven-plugin/3.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.diffplug.spotless:spotless-maven-plugin/3.2.0/3.2.1?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- integration-tests/it-spring-boot-smoke-test/pom.xml | 2 +- prometheus-metrics-parent/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index a48c17c89..631d0ac32 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -173,7 +173,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.2.0 + 3.2.1 diff --git a/prometheus-metrics-parent/pom.xml b/prometheus-metrics-parent/pom.xml index a34005b07..84fab6b9d 100644 --- a/prometheus-metrics-parent/pom.xml +++ b/prometheus-metrics-parent/pom.xml @@ -82,7 +82,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.2.0 + 3.2.1 From 51ca0dd28f5766cb24766bbb1d87a93fd7989bb5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 15:20:33 +0000 Subject: [PATCH 048/110] chore(deps): update ghcr.io/super-linter/super-linter docker tag to v8.4.0 (#1826) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/super-linter/super-linter](https://redirect.github.com/super-linter/super-linter) | minor | `v8.3.2` โ†’ `v8.4.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
super-linter/super-linter (ghcr.io/super-linter/super-linter) ### [`v8.4.0`](https://redirect.github.com/super-linter/super-linter/releases/tag/v8.4.0) [Compare Source](https://redirect.github.com/super-linter/super-linter/compare/v8.3.2...v8.4.0) ##### ๐Ÿš€ Features - add codespell ([#​7357](https://redirect.github.com/super-linter/super-linter/issues/7357)) ([6d7d907](https://redirect.github.com/super-linter/super-linter/commit/6d7d907dcc39a01c96fa8ad337174be89dc525c2)), closes [#​7303](https://redirect.github.com/super-linter/super-linter/issues/7303) - enable apply-ignore when running shfmt ([#​7309](https://redirect.github.com/super-linter/super-linter/issues/7309)) ([ae0f44a](https://redirect.github.com/super-linter/super-linter/commit/ae0f44a2e18b3ca52aeff4a91646ecec7d059254)), closes [#​7308](https://redirect.github.com/super-linter/super-linter/issues/7308) - handle repository\_dispatch events ([#​7335](https://redirect.github.com/super-linter/super-linter/issues/7335)) ([3587871](https://redirect.github.com/super-linter/super-linter/commit/3587871ba06260d7612e44787f5990a7d21eb1d6)), closes [#​7245](https://redirect.github.com/super-linter/super-linter/issues/7245) - support emitting logs only on errors ([#​7410](https://redirect.github.com/super-linter/super-linter/issues/7410)) ([2f50a04](https://redirect.github.com/super-linter/super-linter/commit/2f50a04dbb13f78744b19de7e31f092bd559e257)), closes [#​7402](https://redirect.github.com/super-linter/super-linter/issues/7402) - validate git vars only when needed ([#​7342](https://redirect.github.com/super-linter/super-linter/issues/7342)) ([7aa6b2a](https://redirect.github.com/super-linter/super-linter/commit/7aa6b2aa6f29c33d4dc31baf7bded46475009f37)), closes [#​7282](https://redirect.github.com/super-linter/super-linter/issues/7282) - write pull request status summary comment ([#​7372](https://redirect.github.com/super-linter/super-linter/issues/7372)) ([25ed908](https://redirect.github.com/super-linter/super-linter/commit/25ed9081562b01a0883cd102985176840a4e4350)) ##### ๐Ÿ› Bugfixes - check renovate before exclusive checks ([#​7368](https://redirect.github.com/super-linter/super-linter/issues/7368)) ([a140d67](https://redirect.github.com/super-linter/super-linter/commit/a140d67e92c83cd769cc13996f8be0cd39dec6c0)) - don't add GITHUB\_WORKSPACE multiple times ([#​7439](https://redirect.github.com/super-linter/super-linter/issues/7439)) ([be04fc3](https://redirect.github.com/super-linter/super-linter/commit/be04fc3da15cc3d129dc2fedb8c34aee9e9daabd)), closes [#​7430](https://redirect.github.com/super-linter/super-linter/issues/7430) - don't save logs to file when running parallel ([#​7442](https://redirect.github.com/super-linter/super-linter/issues/7442)) ([ce306b8](https://redirect.github.com/super-linter/super-linter/commit/ce306b8201d29655374c427d70b681413bca41c9)) - fix command options initialization ([#​7407](https://redirect.github.com/super-linter/super-linter/issues/7407)) ([b74abd4](https://redirect.github.com/super-linter/super-linter/commit/b74abd4414ad522b9b8b63c0be89c82401685a02)) - fix linter configuration and go version ([#​7401](https://redirect.github.com/super-linter/super-linter/issues/7401)) ([564808b](https://redirect.github.com/super-linter/super-linter/commit/564808bd9a27e3932214f085fd543967645e015e)) ##### โฌ†๏ธ Dependency updates - **bundler:** bump rubocop in /dependencies in the rubocop group ([#​7332](https://redirect.github.com/super-linter/super-linter/issues/7332)) ([612347c](https://redirect.github.com/super-linter/super-linter/commit/612347c8413a07a27e78971d506d01ebdcb5c4f8)) - **bundler:** bump rubocop in /dependencies in the rubocop group ([#​7451](https://redirect.github.com/super-linter/super-linter/issues/7451)) ([f17c26b](https://redirect.github.com/super-linter/super-linter/commit/f17c26b5500e46662ef80af0062e0aaa030c1368)) - **bundler:** bump rubocop-rails in /dependencies in the rubocop group ([#​7356](https://redirect.github.com/super-linter/super-linter/issues/7356)) ([e7abb06](https://redirect.github.com/super-linter/super-linter/commit/e7abb06788f217908612bad4b643c1585000ff22)) - **bundler:** bump rubocop-rspec in /dependencies in the rubocop group ([#​7367](https://redirect.github.com/super-linter/super-linter/issues/7367)) ([cee7c26](https://redirect.github.com/super-linter/super-linter/commit/cee7c2612592ec206badac280b3ff4925584d3f1)) - **docker:** bump golangci/golangci-lint in the docker group ([#​7365](https://redirect.github.com/super-linter/super-linter/issues/7365)) ([149226b](https://redirect.github.com/super-linter/super-linter/commit/149226b87075eccfdcb7bc6878dafd27bfcc7c7a)) - **docker:** bump the docker group across 1 directory with 2 updates ([#​7336](https://redirect.github.com/super-linter/super-linter/issues/7336)) ([9d05e2a](https://redirect.github.com/super-linter/super-linter/commit/9d05e2a91c0be94e6f28a34c526c52f9e8b095c5)) - **docker:** bump the docker group across 1 directory with 2 updates ([#​7440](https://redirect.github.com/super-linter/super-linter/issues/7440)) ([806ddf4](https://redirect.github.com/super-linter/super-linter/commit/806ddf4e6997ef77327d9ba9c962646353167b19)) - **docker:** bump the docker group across 1 directory with 5 updates ([#​7388](https://redirect.github.com/super-linter/super-linter/issues/7388)) ([89c80ac](https://redirect.github.com/super-linter/super-linter/commit/89c80ac10b078a8d6b52a9a76c211007eaaf6360)) - **docker:** bump the docker group with 2 updates ([#​7343](https://redirect.github.com/super-linter/super-linter/issues/7343)) ([4d1a380](https://redirect.github.com/super-linter/super-linter/commit/4d1a380d07b2a2a88512d030b9458f3aaf493a3c)) - **docker:** bump the docker group with 3 updates ([#​7412](https://redirect.github.com/super-linter/super-linter/issues/7412)) ([fa07160](https://redirect.github.com/super-linter/super-linter/commit/fa071609556501585cd0be9be121d26746dbbeae)) - **java:** bump com.puppycrawl.tools:checkstyle ([#​7348](https://redirect.github.com/super-linter/super-linter/issues/7348)) ([3bc0dc2](https://redirect.github.com/super-linter/super-linter/commit/3bc0dc24804d9460682574474bdef76639902fef)) - **npm:** bump [@​modelcontextprotocol/sdk](https://redirect.github.com/modelcontextprotocol/sdk) in /dependencies ([#​7364](https://redirect.github.com/super-linter/super-linter/issues/7364)) ([898760f](https://redirect.github.com/super-linter/super-linter/commit/898760f2dbc5db08f517ee019bdc839cf71b3be9)) - **npm:** bump diff from 5.2.0 to 5.2.2 in /dependencies ([#​7425](https://redirect.github.com/super-linter/super-linter/issues/7425)) ([ee62ba3](https://redirect.github.com/super-linter/super-linter/commit/ee62ba3ccfab3fe5a532f0d3194a5f9e6083a109)) - **npm:** bump hono from 4.11.3 to 4.11.4 in /dependencies ([#​7379](https://redirect.github.com/super-linter/super-linter/issues/7379)) ([ca2821d](https://redirect.github.com/super-linter/super-linter/commit/ca2821d6972b9c217378894dc8e5ed30cf9d8c47)) - **npm:** bump lodash from 4.17.21 to 4.17.23 in /dependencies ([#​7433](https://redirect.github.com/super-linter/super-linter/issues/7433)) ([be94292](https://redirect.github.com/super-linter/super-linter/commit/be9429269f236ad5313cd2ae84a75a5345ae5f19)) - **npm:** bump qs from 6.14.0 to 6.14.1 in /dependencies ([#​7350](https://redirect.github.com/super-linter/super-linter/issues/7350)) ([64969c4](https://redirect.github.com/super-linter/super-linter/commit/64969c4c6182962e89fb021aa0918092b9933fd6)) - **npm:** bump the npm group across 1 directory with 16 updates ([#​7411](https://redirect.github.com/super-linter/super-linter/issues/7411)) ([644fff4](https://redirect.github.com/super-linter/super-linter/commit/644fff4cf8f9c402888e29313139dd6e7cbce40e)) - **npm:** bump the npm group across 1 directory with 2 updates ([#​7438](https://redirect.github.com/super-linter/super-linter/issues/7438)) ([c501415](https://redirect.github.com/super-linter/super-linter/commit/c5014155105e052013c696bd5452f10a75b8aac6)) - **npm:** bump the npm group across 1 directory with 3 updates ([#​7341](https://redirect.github.com/super-linter/super-linter/issues/7341)) ([62ebdce](https://redirect.github.com/super-linter/super-linter/commit/62ebdce8dab77ccde99bce0d8a5d9af5f252cec8)) - **npm:** bump the npm group across 1 directory with 3 updates ([#​7371](https://redirect.github.com/super-linter/super-linter/issues/7371)) ([5112c87](https://redirect.github.com/super-linter/super-linter/commit/5112c873d853500f860fefdd2953904e2915cfb5)) - **npm:** bump the npm group across 1 directory with 4 updates ([#​7338](https://redirect.github.com/super-linter/super-linter/issues/7338)) ([07b91bc](https://redirect.github.com/super-linter/super-linter/commit/07b91bc3ad16c692d57f0cf10a6916f11a2561a1)) - **npm:** bump the npm group across 1 directory with 4 updates ([#​7366](https://redirect.github.com/super-linter/super-linter/issues/7366)) ([13ced20](https://redirect.github.com/super-linter/super-linter/commit/13ced20cba70e05b9ee22cb5f4cc9a939407ea50)) - **npm:** bump the npm group across 1 directory with 4 updates ([#​7418](https://redirect.github.com/super-linter/super-linter/issues/7418)) ([ec5d03f](https://redirect.github.com/super-linter/super-linter/commit/ec5d03f944e6535c33bf73aa0c25bd9800dea9a9)) - **npm:** bump the npm group across 1 directory with 8 updates ([#​7355](https://redirect.github.com/super-linter/super-linter/issues/7355)) ([1b38ef9](https://redirect.github.com/super-linter/super-linter/commit/1b38ef9a418a8a25b65b8fdba8de1865bf460c86)) - **npm:** bump the npm group across 1 directory with 8 updates ([#​7452](https://redirect.github.com/super-linter/super-linter/issues/7452)) ([4347691](https://redirect.github.com/super-linter/super-linter/commit/43476917b49cbb16d006f01e0779ee176d1eae64)) - **python:** bump checkov ([#​7337](https://redirect.github.com/super-linter/super-linter/issues/7337)) ([d070c07](https://redirect.github.com/super-linter/super-linter/commit/d070c07c33a446c7a2d60d30d9fce41422568a74)) - **python:** bump checkov ([#​7344](https://redirect.github.com/super-linter/super-linter/issues/7344)) ([69f1b0e](https://redirect.github.com/super-linter/super-linter/commit/69f1b0e751df65ee5f5758f75e4b2fa939898d79)) - **python:** bump the pip group across 1 directory with 2 updates ([#​7413](https://redirect.github.com/super-linter/super-linter/issues/7413)) ([b5a17ef](https://redirect.github.com/super-linter/super-linter/commit/b5a17efbbf047ba80024ecf1aedaa84a75002cd4)) - **python:** bump the pip group across 1 directory with 5 updates ([#​7447](https://redirect.github.com/super-linter/super-linter/issues/7447)) ([334a7aa](https://redirect.github.com/super-linter/super-linter/commit/334a7aaba1fa59bc2bd2a2c86c291511e382999e)) - **python:** bump the pip group across 1 directory with 7 updates ([#​7390](https://redirect.github.com/super-linter/super-linter/issues/7390)) ([d380b78](https://redirect.github.com/super-linter/super-linter/commit/d380b78d2e7e87552f184ee94f9d10bf1c4fc7b5)) ##### ๐Ÿงฐ Maintenance - **dev-docker:** bump node in /dev-dependencies ([#​7383](https://redirect.github.com/super-linter/super-linter/issues/7383)) ([27c2892](https://redirect.github.com/super-linter/super-linter/commit/27c28922576f31642680622936fdc60bf19f55a7)) - **dev-docker:** bump node in /dev-dependencies ([#​7431](https://redirect.github.com/super-linter/super-linter/issues/7431)) ([a8f5889](https://redirect.github.com/super-linter/super-linter/commit/a8f58890638a9f31adc16fb30dce9f6608a3d8e8)) - **dev-npm:** bump diff ([#​7420](https://redirect.github.com/super-linter/super-linter/issues/7420)) ([1205c66](https://redirect.github.com/super-linter/super-linter/commit/1205c66273f0d10be57cbdcc1cb0418aa99f1525)) - **dev-npm:** bump release-please in /dev-dependencies ([#​7419](https://redirect.github.com/super-linter/super-linter/issues/7419)) ([701debf](https://redirect.github.com/super-linter/super-linter/commit/701debfb535b697a30f4823a1994bcbecc87a349)) - fix stale action path in zizmor config ([#​7393](https://redirect.github.com/super-linter/super-linter/issues/7393)) ([13d2be9](https://redirect.github.com/super-linter/super-linter/commit/13d2be99761771875f79732e4eaa566982696cf6)) - fix typos ([#​7352](https://redirect.github.com/super-linter/super-linter/issues/7352)) ([24d02bb](https://redirect.github.com/super-linter/super-linter/commit/24d02bbc7c3a76bb8c18a3b7b43be79ab9380cb4)) - fix typos ([#​7360](https://redirect.github.com/super-linter/super-linter/issues/7360)) ([89b5d0c](https://redirect.github.com/super-linter/super-linter/commit/89b5d0c42e08f8f5d975c2a9dcf3f276011f9330)) - group more dependency updates ([#​7380](https://redirect.github.com/super-linter/super-linter/issues/7380)) ([13b3202](https://redirect.github.com/super-linter/super-linter/commit/13b3202f40fea1aa775cfda0f63cd736c8c12736)) - refactor tests ([#​7446](https://redirect.github.com/super-linter/super-linter/issues/7446)) ([d3fa12f](https://redirect.github.com/super-linter/super-linter/commit/d3fa12f4a0efde2e479cbe4733962bb25d975522)) - remove terrascan ([#​7330](https://redirect.github.com/super-linter/super-linter/issues/7330)) ([aa07c3d](https://redirect.github.com/super-linter/super-linter/commit/aa07c3db21cbc4e6f3aed3888ce18b6ba035fdb3)), closes [#​7261](https://redirect.github.com/super-linter/super-linter/issues/7261) - uninstall stylelint-config-sass-guidelines ([#​7400](https://redirect.github.com/super-linter/super-linter/issues/7400)) ([67f5a37](https://redirect.github.com/super-linter/super-linter/commit/67f5a37622d03e59f744a836fcfaf0cbe8a0b489))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .mise/tasks/lint/super-linter.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mise/tasks/lint/super-linter.sh b/.mise/tasks/lint/super-linter.sh index 9ff678580..dbaa4df04 100755 --- a/.mise/tasks/lint/super-linter.sh +++ b/.mise/tasks/lint/super-linter.sh @@ -5,7 +5,7 @@ set -euo pipefail # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter -SUPER_LINTER_VERSION="v8.3.2@sha256:e9d1895a1bdc1f9d9df41f688b27aa891743f23f9fae0f22a3e25eeda8f102db" +SUPER_LINTER_VERSION="v8.4.0@sha256:c5e3307932203ff9e1e8acfe7e92e894add6266605b5d7fb525fb371a59a26f4" # Super-linter doesn't publish ARM64 images, so always use amd64 docker pull --platform linux/amd64 "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" From 69d42bcc2cf61569bb5fcbf7fe1da71fcdd4e7ca Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 28 Jan 2026 18:31:23 +0100 Subject: [PATCH 049/110] bundle renovate updates (#1829) so we don't update the local without checking Signed-off-by: Gregor Zeitlinger --- .github/renovate.json5 | 4 ++++ .mise/tasks/lint/super-linter.sh | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index f6ec71da9..20a6be197 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -28,6 +28,10 @@ groupName: "java graalvm", additionalBranchPrefix: "graalvm-", }, + { + matchPackageNames: ["/^(ghcr.io/)?super-linter/super-linter$/"], + groupName: "super-linter", + }, ], customManagers: [ { diff --git a/.mise/tasks/lint/super-linter.sh b/.mise/tasks/lint/super-linter.sh index dbaa4df04..9ff678580 100755 --- a/.mise/tasks/lint/super-linter.sh +++ b/.mise/tasks/lint/super-linter.sh @@ -5,7 +5,7 @@ set -euo pipefail # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter -SUPER_LINTER_VERSION="v8.4.0@sha256:c5e3307932203ff9e1e8acfe7e92e894add6266605b5d7fb525fb371a59a26f4" +SUPER_LINTER_VERSION="v8.3.2@sha256:e9d1895a1bdc1f9d9df41f688b27aa891743f23f9fae0f22a3e25eeda8f102db" # Super-linter doesn't publish ARM64 images, so always use amd64 docker pull --platform linux/amd64 "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" From 8c1cf1747c382cf80c40e88b7114125976ebd9c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 21:44:07 +0000 Subject: [PATCH 050/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.155.0 (#1831) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.154.5` โ†’ `v0.155.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.155.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.154.5/v0.155.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.155.0`](https://redirect.github.com/gohugoio/hugo/releases/tag/v0.155.0) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.154.5...v0.155.0) #### Note - Make Page.Aliases more useful in multidimensional setups (note) [`ee91c70`](https://redirect.github.com/gohugoio/hugo/commit/ee91c707) [@​bep](https://redirect.github.com/bep) [#​14402](https://redirect.github.com/gohugoio/hugo/issues/14402) #### Bug fixes - Fix data race when clearing cache in cachebusters [`8a979d5`](https://redirect.github.com/gohugoio/hugo/commit/8a979d54) [@​wjiec](https://redirect.github.com/wjiec) - resources/images: Fix comment for Quality field in ImageConfig [`fd49df8`](https://redirect.github.com/gohugoio/hugo/commit/fd49df8f) [@​bep](https://redirect.github.com/bep) - Fix panic reported in discourse [`c7b35c8`](https://redirect.github.com/gohugoio/hugo/commit/c7b35c87) [@​bep](https://redirect.github.com/bep) [#​14441](https://redirect.github.com/gohugoio/hugo/issues/14441) - Fix recently introduced partial rendering bug [`8dfcece`](https://redirect.github.com/gohugoio/hugo/commit/8dfcece8) [@​bep](https://redirect.github.com/bep) [#​14433](https://redirect.github.com/gohugoio/hugo/issues/14433) - tpl: Fix partial decorator panic when partial returns falsy [`f472dd4`](https://redirect.github.com/gohugoio/hugo/commit/f472dd48) [@​simonheimlicher](https://redirect.github.com/simonheimlicher) [#​14419](https://redirect.github.com/gohugoio/hugo/issues/14419) - resources: Fix race condition in test helper [`48566b6`](https://redirect.github.com/gohugoio/hugo/commit/48566b6f) [@​simonheimlicher](https://redirect.github.com/simonheimlicher) - Fix cascade draft panic [`11f7f39`](https://redirect.github.com/gohugoio/hugo/commit/11f7f399) [@​bep](https://redirect.github.com/bep) [#​14409](https://redirect.github.com/gohugoio/hugo/issues/14409) [#​14412](https://redirect.github.com/gohugoio/hugo/issues/14412) - hugolib: Fix multilingual alias generation [`5ba03bf`](https://redirect.github.com/gohugoio/hugo/commit/5ba03bf6) [@​jmooring](https://redirect.github.com/jmooring) [#​14388](https://redirect.github.com/gohugoio/hugo/issues/14388) - Fix file mount specifity issue within the same module [`c1b2e58`](https://redirect.github.com/gohugoio/hugo/commit/c1b2e58b) [@​bep](https://redirect.github.com/bep) [#​14405](https://redirect.github.com/gohugoio/hugo/issues/14405) - warpc: Fix typed nil return in Start [`2c61109`](https://redirect.github.com/gohugoio/hugo/commit/2c611091) [@​Sam-404-404](https://redirect.github.com/Sam-404-404) [#​14372](https://redirect.github.com/gohugoio/hugo/issues/14372) - hugolib: Fix relative alias generation [`32334d0`](https://redirect.github.com/gohugoio/hugo/commit/32334d09) [@​jmooring](https://redirect.github.com/jmooring) [#​14381](https://redirect.github.com/gohugoio/hugo/issues/14381) #### Improvements - Remove disableDate and disableLatLong from MetaConfig [`5916b61`](https://redirect.github.com/gohugoio/hugo/commit/5916b61b) [@​bep](https://redirect.github.com/bep) [#​14437](https://redirect.github.com/gohugoio/hugo/issues/14437) - internal/warpc: Make webp C defaults match the Go defaults [`7eafef2`](https://redirect.github.com/gohugoio/hugo/commit/7eafef22) [@​bep](https://redirect.github.com/bep) - testscripts: Move server tests to own folder [`00c4228`](https://redirect.github.com/gohugoio/hugo/commit/00c4228f) [@​bep](https://redirect.github.com/bep) [#​14439](https://redirect.github.com/gohugoio/hugo/issues/14439) - testing: Skip some slow tests when not running in CI [`5f5b2f3`](https://redirect.github.com/gohugoio/hugo/commit/5f5b2f37) [@​bep](https://redirect.github.com/bep) [#​14438](https://redirect.github.com/gohugoio/hugo/issues/14438) - magefile: Skip commands test when running mage check locally [`ef7a22a`](https://redirect.github.com/gohugoio/hugo/commit/ef7a22a2) [@​bep](https://redirect.github.com/bep) - Remove -p 2 parallelism limit for local test runs [`9a6bfe2`](https://redirect.github.com/gohugoio/hugo/commit/9a6bfe26) [@​bep](https://redirect.github.com/bep) - Add AGENTS.md and CLAUDE.md [`0fc63fb`](https://redirect.github.com/gohugoio/hugo/commit/0fc63fbf) [@​bep](https://redirect.github.com/bep) - Add == and != operators to range predicates [`50973e7`](https://redirect.github.com/gohugoio/hugo/commit/50973e72) [@​bep](https://redirect.github.com/bep) - Add modulequeries file cache for module version queries [`b441472`](https://redirect.github.com/gohugoio/hugo/commit/b441472b) [@​bep](https://redirect.github.com/bep) [#​14417](https://redirect.github.com/gohugoio/hugo/issues/14417) - Allow v1,v2 etc. style version names while still supporting full semver in queries [`ac2c3fb`](https://redirect.github.com/gohugoio/hugo/commit/ac2c3fb2) [@​bep](https://redirect.github.com/bep) [#​14414](https://redirect.github.com/gohugoio/hugo/issues/14414) - Add range matchers for site matrix vector store filtering [`192e3c4`](https://redirect.github.com/gohugoio/hugo/commit/192e3c45) [@​bep](https://redirect.github.com/bep) [#​14359](https://redirect.github.com/gohugoio/hugo/issues/14359) - Misc webp performance work [`e569dd5`](https://redirect.github.com/gohugoio/hugo/commit/e569dd59) [@​bep](https://redirect.github.com/bep) [#​14370](https://redirect.github.com/gohugoio/hugo/issues/14370) - Move from github.com/disintegration/gift to github.com/gohugoio/gift [`1a94731`](https://redirect.github.com/gohugoio/hugo/commit/1a947316) [@​bep](https://redirect.github.com/bep) [#​14397](https://redirect.github.com/gohugoio/hugo/issues/14397) - resources/images: Stabilize order of valid sources in error message [`8e9e04e`](https://redirect.github.com/gohugoio/hugo/commit/8e9e04e3) [@​jmooring](https://redirect.github.com/jmooring) [#​14390](https://redirect.github.com/gohugoio/hugo/issues/14390) - Add XMP and IPTC image metadata support [`8e2e60d`](https://redirect.github.com/gohugoio/hugo/commit/8e2e60dd) [@​bep](https://redirect.github.com/bep) [#​13146](https://redirect.github.com/gohugoio/hugo/issues/13146) - output: Add TestCanonical integration test [`2bc54df`](https://redirect.github.com/gohugoio/hugo/commit/2bc54df6) [@​bep](https://redirect.github.com/bep) - Rename common/maps to common/hmaps ([#​14384](https://redirect.github.com/gohugoio/hugo/issues/14384)) [`608ed09`](https://redirect.github.com/gohugoio/hugo/commit/608ed09a) [@​bep](https://redirect.github.com/bep) - Decode webp.ImageConfig natively [`d36a8f5`](https://redirect.github.com/gohugoio/hugo/commit/d36a8f56) [@​bep](https://redirect.github.com/bep) [#​14371](https://redirect.github.com/gohugoio/hugo/issues/14371) #### Dependency Updates - build(deps): bump golang.org/x/tools from 0.40.0 to 0.41.0 [`7d45614`](https://redirect.github.com/gohugoio/hugo/commit/7d45614c) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump github.com/olekukonko/tablewriter from 1.1.2 to 1.1.3 [`7f12c09`](https://redirect.github.com/gohugoio/hugo/commit/7f12c090) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump github.com/alecthomas/chroma/v2 from 2.23.0 to 2.23.1 [`dab2c33`](https://redirect.github.com/gohugoio/hugo/commit/dab2c332) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudfront [`576d55d`](https://redirect.github.com/gohugoio/hugo/commit/576d55d0) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump golang.org/x/image from 0.34.0 to 0.35.0 [`b9400b8`](https://redirect.github.com/gohugoio/hugo/commit/b9400b8a) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump golang.org/x/mod from 0.31.0 to 0.32.0 [`ce0c7f4`](https://redirect.github.com/gohugoio/hugo/commit/ce0c7f42) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - deps: Upgrade github.com/gohugoio/gift v0.1.0 => v0.2.0 [`7721411`](https://redirect.github.com/gohugoio/hugo/commit/77214117) [@​bep](https://redirect.github.com/bep) - build(deps): bump github.com/alecthomas/chroma/v2 from 2.22.0 to 2.23.0 [`1878471`](https://redirect.github.com/gohugoio/hugo/commit/18784711) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0 [`94f1ede`](https://redirect.github.com/gohugoio/hugo/commit/94f1ede3) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - build(deps): bump github.com/bep/lazycache from 0.8.0 to 0.8.1 [`ab374e3`](https://redirect.github.com/gohugoio/hugo/commit/ab374e3d) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - deps: Upgrade github.com/alecthomas/chroma v2.21.1 => v2.22.0 [`1a91330`](https://redirect.github.com/gohugoio/hugo/commit/1a913307) [@​jmooring](https://redirect.github.com/jmooring) [#​14368](https://redirect.github.com/gohugoio/hugo/issues/14368) #### Build Setup - Revert "release: Support alpha, beta, and RC releases" [`e66a33d`](https://redirect.github.com/gohugoio/hugo/commit/e66a33d3) [@​bep](https://redirect.github.com/bep) [#​14448](https://redirect.github.com/gohugoio/hugo/issues/14448) #### Documentation - misc: Update image processing description in README.md [`b3ea2a5`](https://redirect.github.com/gohugoio/hugo/commit/b3ea2a5f) [@​jmooring](https://redirect.github.com/jmooring) - docs: Update docs.yaml [`67b5435`](https://redirect.github.com/gohugoio/hugo/commit/67b54354) [@​jmooring](https://redirect.github.com/jmooring) - Make docs helper maxAge JSON output user friendly [`5a64551`](https://redirect.github.com/gohugoio/hugo/commit/5a64551a) [@​bep](https://redirect.github.com/bep)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index e83a5fd0f..9cc01deee 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.154.5" +"go:github.com/gohugoio/hugo" = "v0.155.0" "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" From 30f2c53f5cc2ab4c8f24c9d84b1b2d6cab682b31 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:42:08 +0000 Subject: [PATCH 051/110] chore(deps): update super-linter to v8.4.0 (#1830) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ghcr.io/super-linter/super-linter](https://redirect.github.com/super-linter/super-linter) | | minor | `v8.3.2` โ†’ `v8.4.0` | | [super-linter/super-linter](https://redirect.github.com/super-linter/super-linter) | action | minor | `v8.3.2` โ†’ `v8.4.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
super-linter/super-linter (ghcr.io/super-linter/super-linter) ### [`v8.4.0`](https://redirect.github.com/super-linter/super-linter/releases/tag/v8.4.0) [Compare Source](https://redirect.github.com/super-linter/super-linter/compare/v8.3.2...v8.4.0) ##### ๐Ÿš€ Features - add codespell ([#​7357](https://redirect.github.com/super-linter/super-linter/issues/7357)) ([6d7d907](https://redirect.github.com/super-linter/super-linter/commit/6d7d907dcc39a01c96fa8ad337174be89dc525c2)), closes [#​7303](https://redirect.github.com/super-linter/super-linter/issues/7303) - enable apply-ignore when running shfmt ([#​7309](https://redirect.github.com/super-linter/super-linter/issues/7309)) ([ae0f44a](https://redirect.github.com/super-linter/super-linter/commit/ae0f44a2e18b3ca52aeff4a91646ecec7d059254)), closes [#​7308](https://redirect.github.com/super-linter/super-linter/issues/7308) - handle repository\_dispatch events ([#​7335](https://redirect.github.com/super-linter/super-linter/issues/7335)) ([3587871](https://redirect.github.com/super-linter/super-linter/commit/3587871ba06260d7612e44787f5990a7d21eb1d6)), closes [#​7245](https://redirect.github.com/super-linter/super-linter/issues/7245) - support emitting logs only on errors ([#​7410](https://redirect.github.com/super-linter/super-linter/issues/7410)) ([2f50a04](https://redirect.github.com/super-linter/super-linter/commit/2f50a04dbb13f78744b19de7e31f092bd559e257)), closes [#​7402](https://redirect.github.com/super-linter/super-linter/issues/7402) - validate git vars only when needed ([#​7342](https://redirect.github.com/super-linter/super-linter/issues/7342)) ([7aa6b2a](https://redirect.github.com/super-linter/super-linter/commit/7aa6b2aa6f29c33d4dc31baf7bded46475009f37)), closes [#​7282](https://redirect.github.com/super-linter/super-linter/issues/7282) - write pull request status summary comment ([#​7372](https://redirect.github.com/super-linter/super-linter/issues/7372)) ([25ed908](https://redirect.github.com/super-linter/super-linter/commit/25ed9081562b01a0883cd102985176840a4e4350)) ##### ๐Ÿ› Bugfixes - check renovate before exclusive checks ([#​7368](https://redirect.github.com/super-linter/super-linter/issues/7368)) ([a140d67](https://redirect.github.com/super-linter/super-linter/commit/a140d67e92c83cd769cc13996f8be0cd39dec6c0)) - don't add GITHUB\_WORKSPACE multiple times ([#​7439](https://redirect.github.com/super-linter/super-linter/issues/7439)) ([be04fc3](https://redirect.github.com/super-linter/super-linter/commit/be04fc3da15cc3d129dc2fedb8c34aee9e9daabd)), closes [#​7430](https://redirect.github.com/super-linter/super-linter/issues/7430) - don't save logs to file when running parallel ([#​7442](https://redirect.github.com/super-linter/super-linter/issues/7442)) ([ce306b8](https://redirect.github.com/super-linter/super-linter/commit/ce306b8201d29655374c427d70b681413bca41c9)) - fix command options initialization ([#​7407](https://redirect.github.com/super-linter/super-linter/issues/7407)) ([b74abd4](https://redirect.github.com/super-linter/super-linter/commit/b74abd4414ad522b9b8b63c0be89c82401685a02)) - fix linter configuration and go version ([#​7401](https://redirect.github.com/super-linter/super-linter/issues/7401)) ([564808b](https://redirect.github.com/super-linter/super-linter/commit/564808bd9a27e3932214f085fd543967645e015e)) ##### โฌ†๏ธ Dependency updates - **bundler:** bump rubocop in /dependencies in the rubocop group ([#​7332](https://redirect.github.com/super-linter/super-linter/issues/7332)) ([612347c](https://redirect.github.com/super-linter/super-linter/commit/612347c8413a07a27e78971d506d01ebdcb5c4f8)) - **bundler:** bump rubocop in /dependencies in the rubocop group ([#​7451](https://redirect.github.com/super-linter/super-linter/issues/7451)) ([f17c26b](https://redirect.github.com/super-linter/super-linter/commit/f17c26b5500e46662ef80af0062e0aaa030c1368)) - **bundler:** bump rubocop-rails in /dependencies in the rubocop group ([#​7356](https://redirect.github.com/super-linter/super-linter/issues/7356)) ([e7abb06](https://redirect.github.com/super-linter/super-linter/commit/e7abb06788f217908612bad4b643c1585000ff22)) - **bundler:** bump rubocop-rspec in /dependencies in the rubocop group ([#​7367](https://redirect.github.com/super-linter/super-linter/issues/7367)) ([cee7c26](https://redirect.github.com/super-linter/super-linter/commit/cee7c2612592ec206badac280b3ff4925584d3f1)) - **docker:** bump golangci/golangci-lint in the docker group ([#​7365](https://redirect.github.com/super-linter/super-linter/issues/7365)) ([149226b](https://redirect.github.com/super-linter/super-linter/commit/149226b87075eccfdcb7bc6878dafd27bfcc7c7a)) - **docker:** bump the docker group across 1 directory with 2 updates ([#​7336](https://redirect.github.com/super-linter/super-linter/issues/7336)) ([9d05e2a](https://redirect.github.com/super-linter/super-linter/commit/9d05e2a91c0be94e6f28a34c526c52f9e8b095c5)) - **docker:** bump the docker group across 1 directory with 2 updates ([#​7440](https://redirect.github.com/super-linter/super-linter/issues/7440)) ([806ddf4](https://redirect.github.com/super-linter/super-linter/commit/806ddf4e6997ef77327d9ba9c962646353167b19)) - **docker:** bump the docker group across 1 directory with 5 updates ([#​7388](https://redirect.github.com/super-linter/super-linter/issues/7388)) ([89c80ac](https://redirect.github.com/super-linter/super-linter/commit/89c80ac10b078a8d6b52a9a76c211007eaaf6360)) - **docker:** bump the docker group with 2 updates ([#​7343](https://redirect.github.com/super-linter/super-linter/issues/7343)) ([4d1a380](https://redirect.github.com/super-linter/super-linter/commit/4d1a380d07b2a2a88512d030b9458f3aaf493a3c)) - **docker:** bump the docker group with 3 updates ([#​7412](https://redirect.github.com/super-linter/super-linter/issues/7412)) ([fa07160](https://redirect.github.com/super-linter/super-linter/commit/fa071609556501585cd0be9be121d26746dbbeae)) - **java:** bump com.puppycrawl.tools:checkstyle ([#​7348](https://redirect.github.com/super-linter/super-linter/issues/7348)) ([3bc0dc2](https://redirect.github.com/super-linter/super-linter/commit/3bc0dc24804d9460682574474bdef76639902fef)) - **npm:** bump [@​modelcontextprotocol/sdk](https://redirect.github.com/modelcontextprotocol/sdk) in /dependencies ([#​7364](https://redirect.github.com/super-linter/super-linter/issues/7364)) ([898760f](https://redirect.github.com/super-linter/super-linter/commit/898760f2dbc5db08f517ee019bdc839cf71b3be9)) - **npm:** bump diff from 5.2.0 to 5.2.2 in /dependencies ([#​7425](https://redirect.github.com/super-linter/super-linter/issues/7425)) ([ee62ba3](https://redirect.github.com/super-linter/super-linter/commit/ee62ba3ccfab3fe5a532f0d3194a5f9e6083a109)) - **npm:** bump hono from 4.11.3 to 4.11.4 in /dependencies ([#​7379](https://redirect.github.com/super-linter/super-linter/issues/7379)) ([ca2821d](https://redirect.github.com/super-linter/super-linter/commit/ca2821d6972b9c217378894dc8e5ed30cf9d8c47)) - **npm:** bump lodash from 4.17.21 to 4.17.23 in /dependencies ([#​7433](https://redirect.github.com/super-linter/super-linter/issues/7433)) ([be94292](https://redirect.github.com/super-linter/super-linter/commit/be9429269f236ad5313cd2ae84a75a5345ae5f19)) - **npm:** bump qs from 6.14.0 to 6.14.1 in /dependencies ([#​7350](https://redirect.github.com/super-linter/super-linter/issues/7350)) ([64969c4](https://redirect.github.com/super-linter/super-linter/commit/64969c4c6182962e89fb021aa0918092b9933fd6)) - **npm:** bump the npm group across 1 directory with 16 updates ([#​7411](https://redirect.github.com/super-linter/super-linter/issues/7411)) ([644fff4](https://redirect.github.com/super-linter/super-linter/commit/644fff4cf8f9c402888e29313139dd6e7cbce40e)) - **npm:** bump the npm group across 1 directory with 2 updates ([#​7438](https://redirect.github.com/super-linter/super-linter/issues/7438)) ([c501415](https://redirect.github.com/super-linter/super-linter/commit/c5014155105e052013c696bd5452f10a75b8aac6)) - **npm:** bump the npm group across 1 directory with 3 updates ([#​7341](https://redirect.github.com/super-linter/super-linter/issues/7341)) ([62ebdce](https://redirect.github.com/super-linter/super-linter/commit/62ebdce8dab77ccde99bce0d8a5d9af5f252cec8)) - **npm:** bump the npm group across 1 directory with 3 updates ([#​7371](https://redirect.github.com/super-linter/super-linter/issues/7371)) ([5112c87](https://redirect.github.com/super-linter/super-linter/commit/5112c873d853500f860fefdd2953904e2915cfb5)) - **npm:** bump the npm group across 1 directory with 4 updates ([#​7338](https://redirect.github.com/super-linter/super-linter/issues/7338)) ([07b91bc](https://redirect.github.com/super-linter/super-linter/commit/07b91bc3ad16c692d57f0cf10a6916f11a2561a1)) - **npm:** bump the npm group across 1 directory with 4 updates ([#​7366](https://redirect.github.com/super-linter/super-linter/issues/7366)) ([13ced20](https://redirect.github.com/super-linter/super-linter/commit/13ced20cba70e05b9ee22cb5f4cc9a939407ea50)) - **npm:** bump the npm group across 1 directory with 4 updates ([#​7418](https://redirect.github.com/super-linter/super-linter/issues/7418)) ([ec5d03f](https://redirect.github.com/super-linter/super-linter/commit/ec5d03f944e6535c33bf73aa0c25bd9800dea9a9)) - **npm:** bump the npm group across 1 directory with 8 updates ([#​7355](https://redirect.github.com/super-linter/super-linter/issues/7355)) ([1b38ef9](https://redirect.github.com/super-linter/super-linter/commit/1b38ef9a418a8a25b65b8fdba8de1865bf460c86)) - **npm:** bump the npm group across 1 directory with 8 updates ([#​7452](https://redirect.github.com/super-linter/super-linter/issues/7452)) ([4347691](https://redirect.github.com/super-linter/super-linter/commit/43476917b49cbb16d006f01e0779ee176d1eae64)) - **python:** bump checkov ([#​7337](https://redirect.github.com/super-linter/super-linter/issues/7337)) ([d070c07](https://redirect.github.com/super-linter/super-linter/commit/d070c07c33a446c7a2d60d30d9fce41422568a74)) - **python:** bump checkov ([#​7344](https://redirect.github.com/super-linter/super-linter/issues/7344)) ([69f1b0e](https://redirect.github.com/super-linter/super-linter/commit/69f1b0e751df65ee5f5758f75e4b2fa939898d79)) - **python:** bump the pip group across 1 directory with 2 updates ([#​7413](https://redirect.github.com/super-linter/super-linter/issues/7413)) ([b5a17ef](https://redirect.github.com/super-linter/super-linter/commit/b5a17efbbf047ba80024ecf1aedaa84a75002cd4)) - **python:** bump the pip group across 1 directory with 5 updates ([#​7447](https://redirect.github.com/super-linter/super-linter/issues/7447)) ([334a7aa](https://redirect.github.com/super-linter/super-linter/commit/334a7aaba1fa59bc2bd2a2c86c291511e382999e)) - **python:** bump the pip group across 1 directory with 7 updates ([#​7390](https://redirect.github.com/super-linter/super-linter/issues/7390)) ([d380b78](https://redirect.github.com/super-linter/super-linter/commit/d380b78d2e7e87552f184ee94f9d10bf1c4fc7b5)) ##### ๐Ÿงฐ Maintenance - **dev-docker:** bump node in /dev-dependencies ([#​7383](https://redirect.github.com/super-linter/super-linter/issues/7383)) ([27c2892](https://redirect.github.com/super-linter/super-linter/commit/27c28922576f31642680622936fdc60bf19f55a7)) - **dev-docker:** bump node in /dev-dependencies ([#​7431](https://redirect.github.com/super-linter/super-linter/issues/7431)) ([a8f5889](https://redirect.github.com/super-linter/super-linter/commit/a8f58890638a9f31adc16fb30dce9f6608a3d8e8)) - **dev-npm:** bump diff ([#​7420](https://redirect.github.com/super-linter/super-linter/issues/7420)) ([1205c66](https://redirect.github.com/super-linter/super-linter/commit/1205c66273f0d10be57cbdcc1cb0418aa99f1525)) - **dev-npm:** bump release-please in /dev-dependencies ([#​7419](https://redirect.github.com/super-linter/super-linter/issues/7419)) ([701debf](https://redirect.github.com/super-linter/super-linter/commit/701debfb535b697a30f4823a1994bcbecc87a349)) - fix stale action path in zizmor config ([#​7393](https://redirect.github.com/super-linter/super-linter/issues/7393)) ([13d2be9](https://redirect.github.com/super-linter/super-linter/commit/13d2be99761771875f79732e4eaa566982696cf6)) - fix typos ([#​7352](https://redirect.github.com/super-linter/super-linter/issues/7352)) ([24d02bb](https://redirect.github.com/super-linter/super-linter/commit/24d02bbc7c3a76bb8c18a3b7b43be79ab9380cb4)) - fix typos ([#​7360](https://redirect.github.com/super-linter/super-linter/issues/7360)) ([89b5d0c](https://redirect.github.com/super-linter/super-linter/commit/89b5d0c42e08f8f5d975c2a9dcf3f276011f9330)) - group more dependency updates ([#​7380](https://redirect.github.com/super-linter/super-linter/issues/7380)) ([13b3202](https://redirect.github.com/super-linter/super-linter/commit/13b3202f40fea1aa775cfda0f63cd736c8c12736)) - refactor tests ([#​7446](https://redirect.github.com/super-linter/super-linter/issues/7446)) ([d3fa12f](https://redirect.github.com/super-linter/super-linter/commit/d3fa12f4a0efde2e479cbe4733962bb25d975522)) - remove terrascan ([#​7330](https://redirect.github.com/super-linter/super-linter/issues/7330)) ([aa07c3d](https://redirect.github.com/super-linter/super-linter/commit/aa07c3db21cbc4e6f3aed3888ce18b6ba035fdb3)), closes [#​7261](https://redirect.github.com/super-linter/super-linter/issues/7261) - uninstall stylelint-config-sass-guidelines ([#​7400](https://redirect.github.com/super-linter/super-linter/issues/7400)) ([67f5a37](https://redirect.github.com/super-linter/super-linter/commit/67f5a37622d03e59f744a836fcfaf0cbe8a0b489))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .codespellrc | 5 +++++ .github/workflows/super-linter.yml | 2 +- .mise/tasks/lint/super-linter.sh | 2 +- examples/example-exemplars-tail-sampling/pom.xml | 2 +- .../oats-tests/agent/service_instance_id_check.py | 1 + examples/example-exporter-servlet-tomcat/README.md | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .codespellrc diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 000000000..e4dbb3a7f --- /dev/null +++ b/.codespellrc @@ -0,0 +1,5 @@ +[codespell] +# Ignore words that are valid technical terms: +# - vertx: Vert.x reactive framework +# - errorprone: Error Prone static analysis tool +ignore-words-list = vertx,errorprone diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml index 070752cb3..9ea584d5a 100644 --- a/.github/workflows/super-linter.yml +++ b/.github/workflows/super-linter.yml @@ -24,7 +24,7 @@ jobs: run: grep -v '^#' .github/super-linter.env | grep -v 'FIX_' >> "$GITHUB_ENV" - name: Super-linter - uses: super-linter/super-linter@d5b0a2ab116623730dd094f15ddc1b6b25bf7b99 # v8.3.2 + uses: super-linter/super-linter@12562e48d7059cf666c43a4ecb0d3b5a2b31bd9e # v8.4.0 env: # To report GitHub Actions status checks GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.mise/tasks/lint/super-linter.sh b/.mise/tasks/lint/super-linter.sh index 9ff678580..dbaa4df04 100755 --- a/.mise/tasks/lint/super-linter.sh +++ b/.mise/tasks/lint/super-linter.sh @@ -5,7 +5,7 @@ set -euo pipefail # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter -SUPER_LINTER_VERSION="v8.3.2@sha256:e9d1895a1bdc1f9d9df41f688b27aa891743f23f9fae0f22a3e25eeda8f102db" +SUPER_LINTER_VERSION="v8.4.0@sha256:c5e3307932203ff9e1e8acfe7e92e894add6266605b5d7fb525fb371a59a26f4" # Super-linter doesn't publish ARM64 images, so always use amd64 docker pull --platform linux/amd64 "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" diff --git a/examples/example-exemplars-tail-sampling/pom.xml b/examples/example-exemplars-tail-sampling/pom.xml index 8a739e939..49b168955 100644 --- a/examples/example-exemplars-tail-sampling/pom.xml +++ b/examples/example-exemplars-tail-sampling/pom.xml @@ -15,7 +15,7 @@ Example - Exemplars with OpenTelemetry's Tail Sampling - Example project showing Examplars with OpenTelemetry's Tail Sampling. + Example project showing Exemplars with OpenTelemetry's Tail Sampling. diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/service_instance_id_check.py b/examples/example-exporter-opentelemetry/oats-tests/agent/service_instance_id_check.py index 6bb8291f7..35ff88b8d 100755 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/service_instance_id_check.py +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/service_instance_id_check.py @@ -3,6 +3,7 @@ Check if the service instance id is present in the exported data. Returns 0 if the service instance id is present in the exported data. """ + import json import urllib.parse from urllib.request import urlopen diff --git a/examples/example-exporter-servlet-tomcat/README.md b/examples/example-exporter-servlet-tomcat/README.md index 05ac894e3..01e76832d 100644 --- a/examples/example-exporter-servlet-tomcat/README.md +++ b/examples/example-exporter-servlet-tomcat/README.md @@ -71,7 +71,7 @@ browser: static_configs: - targets: ["localhost:8080"] ``` -4. Run with native histograms and examplars enabled: +4. Run with native histograms and exemplars enabled: ```shell ./prometheus --enable-feature=native-histograms --enable-feature=exemplar-storage ``` From 958297d5f2802bbe3dc70709b645df557461be9b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 13:01:07 +0000 Subject: [PATCH 052/110] chore(deps): update actions/cache action to v5.0.3 (#1833) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/cache](https://redirect.github.com/actions/cache) | action | patch | `v5.0.2` โ†’ `v5.0.3` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
actions/cache (actions/cache) ### [`v5.0.3`](https://redirect.github.com/actions/cache/releases/tag/v5.0.3) [Compare Source](https://redirect.github.com/actions/cache/compare/v5.0.2...v5.0.3) ##### What's Changed - Bump `@actions/cache` to v5.0.5 (Resolves: ) - Bump `@actions/core` to v2.0.3 **Full Changelog**:
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/java-version-matrix-tests.yml | 2 +- .github/workflows/multi-version-test.yml | 2 +- .github/workflows/nightly-benchmarks.yml | 2 +- .github/workflows/test-release-build.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b2dbc73f5..6057c9f64 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: version: v2026.1.7 sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - name: Cache local Maven repository - uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/java-version-matrix-tests.yml b/.github/workflows/java-version-matrix-tests.yml index fbdbab48f..5c443d600 100644 --- a/.github/workflows/java-version-matrix-tests.yml +++ b/.github/workflows/java-version-matrix-tests.yml @@ -38,7 +38,7 @@ jobs: sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Cache local Maven repository - uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/multi-version-test.yml b/.github/workflows/multi-version-test.yml index 5290d3e76..601c45ae4 100644 --- a/.github/workflows/multi-version-test.yml +++ b/.github/workflows/multi-version-test.yml @@ -27,7 +27,7 @@ jobs: java-version: ${{ matrix.java }} - name: Cache local Maven repository - uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/nightly-benchmarks.yml b/.github/workflows/nightly-benchmarks.yml index acc388546..af653b30c 100644 --- a/.github/workflows/nightly-benchmarks.yml +++ b/.github/workflows/nightly-benchmarks.yml @@ -40,7 +40,7 @@ jobs: sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 - name: Cache local Maven repository - uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 923b488c3..5df43d15a 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -21,7 +21,7 @@ jobs: version: v2026.1.7 sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea - name: Cache local Maven repository - uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} From ab808a0b21982b778f4aeb1dc7131d1c20c05766 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 12:50:58 +0000 Subject: [PATCH 053/110] fix(deps): update jetty monorepo to v12.1.6 (#1837) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.eclipse.jetty.ee10:jetty-ee10-servlet](https://jetty.org) ([source](https://redirect.github.com/jetty/jetty.project)) | `12.1.5` โ†’ `12.1.6` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.eclipse.jetty.ee10:jetty-ee10-servlet/12.1.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.eclipse.jetty.ee10:jetty-ee10-servlet/12.1.5/12.1.6?slim=true) | | [org.eclipse.jetty:jetty-server](https://jetty.org) ([source](https://redirect.github.com/jetty/jetty.project)) | `12.1.5` โ†’ `12.1.6` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.eclipse.jetty:jetty-server/12.1.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.eclipse.jetty:jetty-server/12.1.5/12.1.6?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../it-exporter/it-exporter-servlet-jetty-sample/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml b/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml index 4d679b572..9a1722f5f 100644 --- a/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml @@ -16,7 +16,7 @@ Jetty Sample for the Exporter Integration Test - 12.1.5 + 12.1.6 25 From 421033a2f72ef0c52d77fae6eb1b346c81b1fdb3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 12:52:17 +0000 Subject: [PATCH 054/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.155.1 (#1836) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.155.0` โ†’ `v0.155.1` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.155.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.155.0/v0.155.1?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.155.1`](https://redirect.github.com/gohugoio/hugo/releases/tag/v0.155.1) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.155.0...v0.155.1) ##### What's Changed - Fix image DecodeConfig regression of WebP images from file cache [`b5d43cd`](https://redirect.github.com/gohugoio/hugo/commit/b5d43cdc) [@​bep](https://redirect.github.com/bep) [#​14453](https://redirect.github.com/gohugoio/hugo/issues/14453) - resources/images: Fix WebP useSharpYuv being ignored [`b1e1eed`](https://redirect.github.com/gohugoio/hugo/commit/b1e1eede) [@​jmooring](https://redirect.github.com/jmooring) [#​14449](https://redirect.github.com/gohugoio/hugo/issues/14449) - tpl/tplimpl: Remove failing Twitter tests [`f522a72`](https://redirect.github.com/gohugoio/hugo/commit/f522a728) [@​jmooring](https://redirect.github.com/jmooring)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index 9cc01deee..3b4133c84 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.155.0" +"go:github.com/gohugoio/hugo" = "v0.155.1" "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" From e35c7439d794c6d3746697b2b59d6eaf118129c1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Feb 2026 22:02:03 +0000 Subject: [PATCH 055/110] chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.15.0 (#1839) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.maven.plugins:maven-compiler-plugin](https://maven.apache.org/plugins/) ([source](https://redirect.github.com/apache/maven-compiler-plugin)) | `3.14.1` โ†’ `3.15.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.maven.plugins:maven-compiler-plugin/3.15.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.maven.plugins:maven-compiler-plugin/3.14.1/3.15.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 756b43c4a..dd2450c21 100644 --- a/pom.xml +++ b/pom.xml @@ -147,7 +147,7 @@
maven-compiler-plugin - 3.14.1 + 3.15.0 maven-surefire-plugin From c1adde10a7ee27a48e4a45a6be6e29ed0d096dcf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 01:46:52 +0000 Subject: [PATCH 056/110] chore(deps): update dependency mise to v2026.2.0 (#1840) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [mise](https://redirect.github.com/jdx/mise) | minor | `v2026.1.7` โ†’ `v2026.2.0` | | [mise](https://redirect.github.com/jdx/mise) | minor | `v2026.1.4` โ†’ `v2026.2.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
jdx/mise (mise) ### [`v2026.2.0`](https://redirect.github.com/jdx/mise/releases/tag/v2026.2.0): : Lockfiles Graduate, Editor Arrives [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.12...v2026.2.0) This release marks a significant milestone: **lockfiles are now stable** and no longer require an experimental flag. After extensive testing and refinement, lockfiles are ready for production use, giving you reproducible builds with cryptographically verified tool versions across your team. The other headline feature is `mise edit`, a brand new interactive configuration editor that makes managing your mise setup more intuitive than ever. Just run `mise edit` and navigate your configuration with a proper editor interface. ##### Highlights - **Lockfiles are stable** โ€” No more `MISE_EXPERIMENTAL=1` needed! Lockfiles ensure everyone on your team gets exactly the same tool versions with SHA256 verification. See the [lockfile documentation](https://mise.jdx.dev/dev-tools/mise-lock.html) for details. [#​7929](https://redirect.github.com/jdx/mise/pull/7929) - **Interactive config editor** โ€” The new `mise edit` command launches an interactive editor for your mise configuration, making it easier to manage tools and settings. [#​7930](https://redirect.github.com/jdx/mise/pull/7930) - **Smarter task confirmation dialogs** โ€” Task confirm prompts now support usage values, giving you more context when confirming task execution. Thanks [@​roele](https://redirect.github.com/roele)! [#​7924](https://redirect.github.com/jdx/mise/pull/7924) - **Windows shebang task support** โ€” File tasks with shebangs are now properly discovered and executed on Windows. [#​7941](https://redirect.github.com/jdx/mise/pull/7941) ##### Performance - **Faster dependency scheduling** โ€” Tool installation now uses Kahn's algorithm for optimal parallel dependency resolution, speeding up installs with complex dependency trees. [#​7933](https://redirect.github.com/jdx/mise/pull/7933) - **Efficient secret redaction** โ€” Switched to Aho-Corasick algorithm for redacting secrets in output, improving performance when many secrets are configured. [#​7931](https://redirect.github.com/jdx/mise/pull/7931) ##### Bug Fixes - **PATH ordering preserved** โ€” Fixed an issue where paths added after `mise activate` could get reordered unexpectedly. [#​7919](https://redirect.github.com/jdx/mise/pull/7919) - **Lockfile reliability** โ€” Atomic writes prevent corruption, cache invalidation works correctly, and URL/SHA256 info is properly preserved when merging platform information. [#​7923](https://redirect.github.com/jdx/mise/pull/7923), [#​7927](https://redirect.github.com/jdx/mise/pull/7927) - **Template hash filter** โ€” The `hash` filter in templates now uses SHA256 instead of Blake3 for broader compatibility. [#​7925](https://redirect.github.com/jdx/mise/pull/7925) - **Smarter version pruning** โ€” `mise upgrade` now respects tracked configs when pruning old versions, preventing accidental removal of versions still in use. [#​7926](https://redirect.github.com/jdx/mise/pull/7926) - **Deterministic error output** โ€” Failed installations are now sorted, making error messages consistent across runs. [#​7936](https://redirect.github.com/jdx/mise/pull/7936) ##### Documentation - Improved clarity on uvx and pipx dependencies โ€” Thanks [@​ygormutti](https://redirect.github.com/ygormutti) for your first contribution! [#​7878](https://redirect.github.com/jdx/mise/pull/7878) ### [`v2026.1.12`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.12): : Monorepo Task Resolution [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.11...v2026.1.12) This release focuses on improving the developer experience for monorepo setups and fixing cross-platform compatibility issues. If you've been struggling with task includes in monorepos or encountering strange behavior when cloning plugins on Windows Subsystem for Linux (WSL), this update has you covered. ##### Bug Fixes - **Monorepo task includes now resolve correctly** - Task includes are now resolved relative to the config file directory rather than the current working directory. This is a significant fix for monorepo users who define tasks in nested config files and expect includes to work relative to where the config lives. ([#​7917](https://redirect.github.com/jdx/mise/pull/7917)) - **WSL git clone compatibility** - Fixed an issue where `autocrlf` settings could cause problems when cloning git repositories on WSL. Mise now explicitly disables `autocrlf` during git clone operations, preventing line-ending issues that could break plugins and tools on Windows Subsystem for Linux. ([#​7916](https://redirect.github.com/jdx/mise/pull/7916)) ##### Documentation - Added documentation for using bash array patterns with variadic arguments in tasks, making it easier to handle variable numbers of arguments in your task definitions. ([#​7914](https://redirect.github.com/jdx/mise/pull/7914)) See the [tasks documentation](https://mise.jdx.dev/tasks/) for more details. ### [`v2026.1.11`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.11): : Speed Demons and Scoped Providers [Compare Source](https://redirect.github.com/jdx/mise/compare/aqua-registry-v2026.1.9...v2026.1.11) This release focuses on performance improvements and fixing several edge cases that affected users with complex configurations. The headline changes include significant startup time reduction for `mise x` (exec) and a new consolidated manifest system that replaces the per-tool `.mise.backend` files, making tool installations cleaner and faster. Configuration management gets more flexible with support for loading `.config/miserc.toml` in local directories, and the prepare providers are now properly scoped to their defining config filesโ€”fixing issues where providers could leak between projects. ##### Highlights - **Faster `mise x` startup** - Reduced overhead when running commands through `mise x`, which should be noticeable for frequently executed commands ([#​7890](https://redirect.github.com/jdx/mise/pull/7890)) - **Consolidated backend manifest** - Tool installations now use a single manifest file instead of individual `.mise.backend` files per tool, improving both performance and disk organization ([#​7892](https://redirect.github.com/jdx/mise/pull/7892)) - **Local `.config/miserc.toml` support** - You can now place mise configuration in `.config/miserc.toml` within your project directory, following XDG conventions ([#​7896](https://redirect.github.com/jdx/mise/pull/7896)) - thanks [@​scop](https://redirect.github.com/scop)! ##### Bug Fixes - **Scoped prepare providers** - Prepare providers are now correctly scoped to their defining config file, preventing unintended interactions between projects ([#​7889](https://redirect.github.com/jdx/mise/pull/7889)) - **GitHub cache path fix** - Resolved an issue where clearing cache for GitHub backend tools used incorrect paths ([#​7907](https://redirect.github.com/jdx/mise/pull/7907)) - **macOS .app bundle support** - The GitHub backend now properly discovers binaries inside macOS `.app` bundles ([#​7885](https://redirect.github.com/jdx/mise/pull/7885)) - **Task `--help` behavior** - Running `mise run --help` now shows task info instead of trying to execute when no usage spec is defined ([#​7893](https://redirect.github.com/jdx/mise/pull/7893)) - **Task `wait_for` fixes** - Fixed issues with `wait_for` when using environment overrides, and outputs are now properly re-rendered ([#​7888](https://redirect.github.com/jdx/mise/pull/7888)) ##### vfox Improvements - Module hooks now receive the constructed environment when using `cmd.exec`, enabling more powerful plugin behavior ([#​7908](https://redirect.github.com/jdx/mise/pull/7908)) ##### Documentation - Added documentation explaining `MISE_GITLAB_TOKEN` for accessing private GitLab repositories - thanks [@​lchagnoleau](https://redirect.github.com/lchagnoleau)! ([#​7902](https://redirect.github.com/jdx/mise/pull/7902)) ##### New Contributors Welcome to our new contributors! ๐ŸŽ‰ - [@​lchagnoleau](https://redirect.github.com/lchagnoleau) made their first contribution in [#​7902](https://redirect.github.com/jdx/mise/pull/7902) ### [`v2026.1.9`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.9): : Templates Take the Stage [Compare Source](https://redirect.github.com/jdx/mise/compare/aqua-registry-v2026.1.8...aqua-registry-v2026.1.9) This release introduces task templates, a powerful new feature for creating reusable task definitions across your projects. Combined with glob pattern support for task includes and automatic plugin installation, mise is becoming even more flexible for complex project setups. We've also added several quality-of-life improvements including better diagnostics from `mise doctor` and enhanced archive extraction capabilities. ##### Highlights **Task Templates** ([#​7873](https://redirect.github.com/jdx/mise/pull/7873)) - Define reusable task templates that can be instantiated with different parameters. This is perfect for monorepos or projects with repetitive task patterns. See the [tasks documentation](https://mise.jdx.dev/tasks/) for details. **Glob Patterns in Task Includes** ([#​7870](https://redirect.github.com/jdx/mise/pull/7870)) - You can now use glob patterns like `tasks/**/*.toml` in your `task_config.includes` setting, making it easier to organize tasks across multiple files. **Auto-install Plugins** ([#​7856](https://redirect.github.com/jdx/mise/pull/7856)) - Plugins defined in your `[plugins]` config section are now automatically installed when needed, reducing setup friction for new team members. **Backend Mismatch Warnings** ([#​7847](https://redirect.github.com/jdx/mise/pull/7847)) - `mise doctor` now warns you when a tool is installed via a different backend than what's currently configured, helping diagnose unexpected behavior. **Archive Extraction Improvements** ([#​7874](https://redirect.github.com/jdx/mise/pull/7874)) - Added `rename_exe` support for archive extraction, giving backend authors more control over how executables are named after extraction. ##### Bug Fixes - **GitHub backend**: Fixed SLSA verification to select the correct platform-matching provenance file ([#​7853](https://redirect.github.com/jdx/mise/pull/7853)) - **Go**: Filtered out invalid version "1" from available versions list ([#​7871](https://redirect.github.com/jdx/mise/pull/7871)) - **Flutter**: Fixed duplicate `-stable` suffix in download URLs ([#​7872](https://redirect.github.com/jdx/mise/pull/7872)) - **pipx**: Ensured Python minor version symlink exists for postinstall hooks ([#​7869](https://redirect.github.com/jdx/mise/pull/7869)) - **Tasks**: Fixed environment variable passing to usage parser ([#​7848](https://redirect.github.com/jdx/mise/pull/7848)) and proper `MISE_ENV` propagation with `-E` flag - **Archive extraction**: Fixed handling of archives with `./` prefixed paths ([#​7868](https://redirect.github.com/jdx/mise/pull/7868)) - **vfox-dotnet**: Fixed Windows installation issues ([#​7843](https://redirect.github.com/jdx/mise/pull/7843)) - thanks [@​prodrigues1912](https://redirect.github.com/prodrigues1912)! ##### Reverted - Task inheritance from parent configs in monorepos has been reverted ([#​7851](https://redirect.github.com/jdx/mise/pull/7851)) pending further refinement ##### Registry - Added [vercel](https://vercel.com/docs/cli) ([#​7844](https://redirect.github.com/jdx/mise/pull/7844)) - thanks [@​mikecurtis](https://redirect.github.com/mikecurtis)! - Added [mago](https://redirect.github.com/carthage-software/mago) ([#​7845](https://redirect.github.com/jdx/mise/pull/7845)) - thanks [@​scop](https://redirect.github.com/scop)! ### [`v2026.1.8`](https://redirect.github.com/jdx/mise/releases/tag/v2026.1.8): : Registry Revolution [Compare Source](https://redirect.github.com/jdx/mise/compare/v2026.1.7...aqua-registry-v2026.1.8) This release brings a significant architectural improvement to mise's registry system, splitting the monolithic `registry.toml` into individual files per tool. This refactoring makes the registry more maintainable and easier to contribute to. We've also squashed several bugs across the aqua backend, GitHub release handling, and task system. ##### Highlights - **Registry restructured**: The tool registry has been split from a single large file into one file per tool ([#​7820](https://redirect.github.com/jdx/mise/pull/7820)). This makes it much easier to add new tools and review registry changes. - **Claude now uses aqua backend**: The Claude CLI tool now defaults to the aqua backend for installation ([#​7842](https://redirect.github.com/jdx/mise/pull/7842)). ##### Bug Fixes - **Aqua backend improvements**: Fixed an issue where the lockfile wasn't being invalidated when assets didn't match the registry ([#​7830](https://redirect.github.com/jdx/mise/pull/7830)). Added helpful warnings when version tag lookups fail ([#​7831](https://redirect.github.com/jdx/mise/pull/7831)). - **GitHub backend**: Windows-specific file extensions (like `.exe` and `.zip`) are now properly deprioritized when selecting release assets on non-Windows platforms ([#​7838](https://redirect.github.com/jdx/mise/pull/7838)). This prevents accidentally downloading Windows binaries on Linux/macOS. - **Task system fixes**: Environment variables in monorepo task usage specs now resolve correctly ([#​7832](https://redirect.github.com/jdx/mise/pull/7832)). File task headers now support dotted keys and deep-merge behavior ([#​7840](https://redirect.github.com/jdx/mise/pull/7840)), giving you more flexibility in task configuration. - **`mise ls --local` fix**: Idiomatic version files (like `.node-version`) and `.tool-versions` files now properly appear in `mise ls --local` output ([#​7836](https://redirect.github.com/jdx/mise/pull/7836)). Thanks to [@​offbyone](https://redirect.github.com/offbyone) for this fix! ##### Contributors Thanks to [@​offbyone](https://redirect.github.com/offbyone) for contributing to this release! ##### ๐Ÿ“ฆ Aqua Registry Updates ##### New Packages (1) - [`carthage-software/mago`](https://redirect.github.com/carthage-software/mago) ##### Updated Packages (1) - [`golangci/golangci-lint`](https://redirect.github.com/golangci/golangci-lint)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - "before 4am on monday" (UTC), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/acceptance-tests.yml | 4 ++-- .github/workflows/build.yml | 4 ++-- .github/workflows/github-pages.yaml | 4 ++-- .github/workflows/java-version-matrix-tests.yml | 4 ++-- .github/workflows/lint-rest.yml | 4 ++-- .github/workflows/native-tests.yml | 4 ++-- .github/workflows/nightly-benchmarks.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- .github/workflows/test-release-build.yml | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index cd283fef0..8428bb62e 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Run acceptance tests run: mise run acceptance-test diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6057c9f64..f7686772a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,8 +14,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index 3207b6bf3..47c084ce2 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -39,8 +39,8 @@ jobs: fetch-depth: 0 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 cache: "false" - name: Setup Pages id: pages diff --git a/.github/workflows/java-version-matrix-tests.yml b/.github/workflows/java-version-matrix-tests.yml index 5c443d600..93099d3c5 100644 --- a/.github/workflows/java-version-matrix-tests.yml +++ b/.github/workflows/java-version-matrix-tests.yml @@ -34,8 +34,8 @@ jobs: - name: Set up mise uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index a1649a905..236fac334 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -21,8 +21,8 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Lint for pull requests if: github.event_name == 'pull_request' diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index 77596da0e..94e3e9de5 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -15,8 +15,8 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 working_directory: .mise/envs/native - name: Run native tests working-directory: .mise/envs/native diff --git a/.github/workflows/nightly-benchmarks.yml b/.github/workflows/nightly-benchmarks.yml index af653b30c..7c7eb960b 100644 --- a/.github/workflows/nightly-benchmarks.yml +++ b/.github/workflows/nightly-benchmarks.yml @@ -36,8 +36,8 @@ jobs: - name: Setup mise uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.4 - sha256: 79c798e39b83f0dd80108eaa88c6ca63689695ae975fd6786e7a353ef9f87002 + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6bdc23a95..b0570be6d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,8 +26,8 @@ jobs: - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 cache: false - name: Build release version diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 5df43d15a..357cc763c 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -18,8 +18,8 @@ jobs: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.1.7 - sha256: d98523f15392ab17909a55560244667aa81122766209b816d9a9b9585109bfea + version: v2026.2.0 + sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: From 1f3865fd7a03f8e835795117f835ab99f675f67e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 13:40:00 +0000 Subject: [PATCH 057/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.155.2 (#1841) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.155.1` โ†’ `v0.155.2` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.155.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.155.1/v0.155.2?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.155.2`](https://redirect.github.com/gohugoio/hugo/releases/tag/v0.155.2) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.155.1...v0.155.2) Note that the bug fix below is for the two new dimensions introduced in `v0.153.0` (version and role), multiple languages worked fine. Also, changes to the first version and role also worked, which had me head-scratching for a while. Oh, well, enjoy. - Fix template change detection for multi-version sites [`0f1c7d1`](https://redirect.github.com/gohugoio/hugo/commit/0f1c7d12) [@​bep](https://redirect.github.com/bep) [#​14461](https://redirect.github.com/gohugoio/hugo/issues/14461) - resources/image: Add some image decode/encode debug logging [`6bd2bde`](https://redirect.github.com/gohugoio/hugo/commit/6bd2bde9) [@​bep](https://redirect.github.com/bep) [#​14337](https://redirect.github.com/gohugoio/hugo/issues/14337) [#​14460](https://redirect.github.com/gohugoio/hugo/issues/14460)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index 3b4133c84..be9cd9bab 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.155.1" +"go:github.com/gohugoio/hugo" = "v0.155.2" "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" From a865c6571db38c0299bd7a1f1edd1a3143eb4e6a Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 3 Feb 2026 15:24:20 +0100 Subject: [PATCH 058/110] refactor: update exception handling to use specific exception types (#1843) Signed-off-by: Gregor Zeitlinger --- .../exporter/httpserver/HttpExchangeAdapter.java | 2 +- .../exporter/opentelemetry/OtelAutoConfig.java | 2 +- .../PrometheusInstrumentationScope.java | 15 ++++++++++++--- .../PrometheusInstrumentationScopeTest.java | 2 -- .../caffeine/CacheMetricsCollector.java | 2 +- .../internal/AbstractDropwizardExports.java | 2 +- .../jvm/JvmNativeMemoryMetrics.java | 4 ++-- 7 files changed, 18 insertions(+), 11 deletions(-) diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapter.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapter.java index 3e0322309..df99837cb 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapter.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapter.java @@ -112,7 +112,7 @@ private void sendErrorResponseWithStackTrace(Exception requestHandlerException) httpExchange.getResponseHeaders().set("Content-Type", "text/plain; charset=utf-8"); httpExchange.sendResponseHeaders(500, stackTrace.length); httpExchange.getResponseBody().write(stackTrace); - } catch (Exception errorWriterException) { + } catch (IOException errorWriterException) { // We want to avoid logging so that we don't mess with application logs when the HTTPServer // is used in a Java agent. // However, if we can't even send an error response to the client there's nothing we can do diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OtelAutoConfig.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OtelAutoConfig.java index 4a16ee07e..e0c6a0fa9 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OtelAutoConfig.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OtelAutoConfig.java @@ -112,7 +112,7 @@ static Resource getResourceField(AutoConfiguredOpenTelemetrySdk sdk) { Method method = AutoConfiguredOpenTelemetrySdk.class.getDeclaredMethod("getResource"); method.setAccessible(true); return (Resource) method.invoke(sdk); - } catch (Exception e) { + } catch (ReflectiveOperationException e) { throw new RuntimeException(e); } } diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScope.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScope.java index 5f02d38cc..91241295a 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScope.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScope.java @@ -1,6 +1,8 @@ package io.prometheus.metrics.exporter.opentelemetry; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; +import java.io.IOException; +import java.io.InputStream; import java.util.Properties; class PrometheusInstrumentationScope { @@ -21,8 +23,15 @@ static InstrumentationScopeInfo loadInstrumentationScopeInfo( String path, String nameKey, String versionKey) { try { Properties properties = new Properties(); - properties.load( - PrometheusInstrumentationScope.class.getClassLoader().getResourceAsStream(path)); + InputStream stream = + PrometheusInstrumentationScope.class.getClassLoader().getResourceAsStream(path); + if (stream == null) { + throw new IllegalStateException( + "Prometheus metrics library initialization error: Failed to read " + + path + + " from classpath."); + } + properties.load(stream); String instrumentationScopeName = properties.getProperty(nameKey); if (instrumentationScopeName == null) { throw new IllegalStateException( @@ -44,7 +53,7 @@ static InstrumentationScopeInfo loadInstrumentationScopeInfo( return InstrumentationScopeInfo.builder(instrumentationScopeName) .setVersion(instrumentationScopeVersion) .build(); - } catch (Exception e) { + } catch (IOException e) { throw new IllegalStateException( "Prometheus metrics library initialization error: Failed to read " + path diff --git a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScopeTest.java b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScopeTest.java index c50354b24..948dfc498 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScopeTest.java +++ b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusInstrumentationScopeTest.java @@ -22,7 +22,6 @@ void loadInstrumentationScopeInfo() { () -> PrometheusInstrumentationScope.loadInstrumentationScopeInfo( "instrumentationScope.properties", "name", "version")) - .havingRootCause() .withMessage( "Prometheus metrics library initialization error: name not found in" + " instrumentationScope.properties in classpath."); @@ -32,7 +31,6 @@ void loadInstrumentationScopeInfo() { () -> PrometheusInstrumentationScope.loadInstrumentationScopeInfo( "instrumentationScope.properties", "instrumentationScope.name", "version")) - .havingRootCause() .withMessage( "Prometheus metrics library initialization error: version not found in" + " instrumentationScope.properties in classpath."); diff --git a/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java b/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java index a1b8782a3..c847e13eb 100644 --- a/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java +++ b/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java @@ -226,7 +226,7 @@ public MetricSnapshots collect() { .labels(labels) .value(stats.evictionWeight()) .build()); - } catch (Exception e) { + } catch (UnsupportedOperationException e) { // EvictionWeight metric is unavailable, newer version of Caffeine is needed. } diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java index 279459b02..df9ea8ffa 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/internal/AbstractDropwizardExports.java @@ -195,7 +195,7 @@ protected void collectMetricKind( if (snapshot != null) { builder.metricSnapshot(snapshot); } - } catch (Exception e) { + } catch (RuntimeException e) { if (!invalidMetricHandler.suppressException(metricName, e)) { throw e; } diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java index f2ae98abf..6b11df38a 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java @@ -163,8 +163,8 @@ private String vmNativeMemorySummaryInBytesOrEmpty() { } else { return summary; } - } catch (Exception ex) { - // ignore errors + } catch (RuntimeException ex) { + // ignore errors (native memory tracking not enabled or other runtime failures) isEnabled.set(false); return ""; } From 0852636a443ce387abf2afc2c859bf9048b6a0bc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 17:06:24 +0000 Subject: [PATCH 059/110] chore(deps): update actions/checkout digest to de0fac2 (#1844) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) ([changelog](https://redirect.github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8..de0fac2e4500dabe0009e67214ff5f5447ce83dd)) | action | digest | `8e8c483` โ†’ `de0fac2` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/acceptance-tests.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/github-pages.yaml | 2 +- .github/workflows/multi-version-test.yml | 2 +- .github/workflows/native-tests.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test-release-build.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 8428bb62e..3c7bf414e 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -12,7 +12,7 @@ jobs: - name: Check out with: persist-credentials: false - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.2.0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f7686772a..b8cf9ecaf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ jobs: build: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index 47c084ce2..e0582dd24 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -32,7 +32,7 @@ jobs: if: github.repository == 'prometheus/client_java' runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false fetch-tags: "true" diff --git a/.github/workflows/multi-version-test.yml b/.github/workflows/multi-version-test.yml index 601c45ae4..92318c1aa 100644 --- a/.github/workflows/multi-version-test.yml +++ b/.github/workflows/multi-version-test.yml @@ -15,7 +15,7 @@ jobs: java: [17, 21, 25] steps: - name: Check out - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index 94e3e9de5..e773230a4 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -12,7 +12,7 @@ jobs: - name: Check out with: persist-credentials: false - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: version: v2026.2.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0570be6d..551b323ea 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: echo "${#GPG_SIGNING_KEY}" echo "${GPG_SIGNING_KEY}" | gpg --batch --import-options import-show --import - name: Checkout Plugin Repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 357cc763c..db2f80058 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -13,7 +13,7 @@ jobs: build: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 From ba308cf393c89af8b2cd6773570ec7ba72acc42a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 18:19:56 +0000 Subject: [PATCH 060/110] fix(deps): update protobuf monorepo (#1835) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [protoc](https://redirect.github.com/protocolbuffers/protobuf) | | minor | `33.4` โ†’ `33.5` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/protocolbuffers%2fprotobuf/33.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/protocolbuffers%2fprotobuf/33.4/33.5?slim=true) | | [com.google.protobuf:protobuf-java](https://developers.google.com/protocol-buffers/) ([source](https://redirect.github.com/protocolbuffers/protobuf)) | compile | patch | `4.33.4` โ†’ `4.33.5` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.protobuf:protobuf-java/4.33.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.protobuf:protobuf-java/4.33.4/4.33.5?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
protocolbuffers/protobuf (protoc) ### [`v33.5`](https://redirect.github.com/protocolbuffers/protobuf/releases/tag/v33.5): Protocol Buffers v33.5 [Compare Source](https://redirect.github.com/protocolbuffers/protobuf/compare/v33.4...v33.5) ### Announcements - [Protobuf News](https://protobuf.dev/news/) may include additional announcements or pre-announcements for upcoming changes. ### Python - Fix Any recursion depth bypass in Python json\_format.ParseDict ([#​25239](https://redirect.github.com/protocolbuffers/protobuf/issues/25239)) ([#​25586](https://redirect.github.com/protocolbuffers/protobuf/issues/25586)) ([`c4eda3e`](https://redirect.github.com/protocolbuffers/protobuf/commit/c4eda3e58680528147a4cc7e2b3c9044f795c9c9)) ### Other - Update release\_bazel\_module.yaml ([#​25509](https://redirect.github.com/protocolbuffers/protobuf/issues/25509)) ([`c3ca6a3`](https://redirect.github.com/protocolbuffers/protobuf/commit/c3ca6a37c9ba60d2b0275029f6afe809ab3124cc)) - Make BCR PRs non-draft by default. ([`9db25c1`](https://redirect.github.com/protocolbuffers/protobuf/commit/9db25c1fdfe737c00201873ef8afe4cd96d56661)) - Fix(publish-to-bcr): disable attestations ([#​24018](https://redirect.github.com/protocolbuffers/protobuf/issues/24018)) ([`c07bc2f`](https://redirect.github.com/protocolbuffers/protobuf/commit/c07bc2ff906464287c6ee140a57e5511adf901f6))
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- .../client/it/common/ExporterTest.java | 2 +- .../metrics/it/exporter/test/ExporterIT.java | 2 +- .../it/springboot/ApplicationTest.java | 2 +- mise.toml | 2 +- pom.xml | 2 +- .../metrics/core/metrics/CounterTest.java | 2 +- .../metrics/core/metrics/HistogramTest.java | 2 +- .../metrics/core/metrics/InfoTest.java | 2 +- .../Metrics.java | 1810 ++++++++--------- .../PrometheusProtobufWriterImpl.java | 2 +- .../ProtobufExpositionFormatsTest.java | 2 +- 11 files changed, 915 insertions(+), 915 deletions(-) rename prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/{com_google_protobuf_4_33_4 => com_google_protobuf_4_33_5}/Metrics.java (89%) diff --git a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java index 27338ed9f..515b00cf4 100644 --- a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java +++ b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index a257ad98a..e9bcc2ee7 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -5,7 +5,7 @@ import com.google.common.io.Resources; import io.prometheus.client.it.common.ExporterTest; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import java.io.IOException; import java.net.URISyntaxException; import java.net.URLEncoder; diff --git a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java index 69bc81608..fed9fba6d 100644 --- a/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java +++ b/integration-tests/it-spring-boot-smoke-test/src/test/java/io/prometheus/metrics/it/springboot/ApplicationTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.prometheus.client.it.common.ExporterTest; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import java.io.IOException; import java.net.URI; import java.util.List; diff --git a/mise.toml b/mise.toml index be9cd9bab..64e60b2bb 100644 --- a/mise.toml +++ b/mise.toml @@ -3,7 +3,7 @@ "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" -protoc = "33.4" +protoc = "33.5" [tasks.ci] description = "CI Build" diff --git a/pom.xml b/pom.xml index dd2450c21..c5fc1b43a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ UTF-8 --module-name-need-to-be-overridden-- - 4.33.4 + 4.33.5 33.5.0-jre 6.0.2 2.16.0-alpha diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java index 44f78b2a1..0456d8a80 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java @@ -9,7 +9,7 @@ import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.CounterSnapshot; diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java index cab6d8e61..cd9a4d00e 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java @@ -11,7 +11,7 @@ import io.prometheus.metrics.core.datapoints.DistributionDataPoint; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.*; diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java index 13737ad16..0681f73e1 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/InfoTest.java @@ -5,7 +5,7 @@ import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.Labels; diff --git a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_4/Metrics.java b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java similarity index 89% rename from prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_4/Metrics.java rename to prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java index fcbc1b8db..eeab733f1 100644 --- a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_4/Metrics.java +++ b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java @@ -2,9 +2,9 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: src/main/protobuf/metrics.proto -// Protobuf Java Version: 4.33.4 +// Protobuf Java Version: 4.33.5 -package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4; +package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5; @com.google.protobuf.Generated public final class Metrics extends com.google.protobuf.GeneratedFile { @@ -14,7 +14,7 @@ private Metrics() {} com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "Metrics"); } @@ -87,7 +87,7 @@ public enum MetricType com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "MetricType"); } @@ -193,7 +193,7 @@ public MetricType findValueByNumber(int number) { } public static com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.getDescriptor().getEnumTypes().get(0); + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.getDescriptor().getEnumTypes().get(0); } private static final MetricType[] VALUES = values(); @@ -267,7 +267,7 @@ public static final class LabelPair extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "LabelPair"); } @@ -282,15 +282,15 @@ private LabelPair() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder.class); } private int bitField0_; @@ -437,10 +437,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair) obj; if (hasName() != other.hasName()) return false; if (hasName()) { @@ -476,44 +476,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -521,26 +521,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -553,7 +553,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -574,21 +574,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.LabelPair) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.newBuilder() private Builder() { } @@ -610,17 +610,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -628,14 +628,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -651,16 +651,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.getDefaultInstance()) return this; if (other.hasName()) { name_ = other.name_; bitField0_ |= 0x00000001; @@ -888,12 +888,12 @@ public Builder setValueBytes( } // @@protoc_insertion_point(class_scope:io.prometheus.client.LabelPair) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -929,7 +929,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -963,7 +963,7 @@ public static final class Gauge extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "Gauge"); } @@ -976,15 +976,15 @@ private Gauge() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder.class); } private int bitField0_; @@ -1047,10 +1047,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1079,44 +1079,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1124,26 +1124,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1156,7 +1156,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1177,21 +1177,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Gauge) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.newBuilder() private Builder() { } @@ -1212,17 +1212,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1230,14 +1230,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1249,16 +1249,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1354,12 +1354,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Gauge) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -1395,7 +1395,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -1425,11 +1425,11 @@ public interface CounterOrBuilder extends * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplar(); /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); /** * optional .google.protobuf.Timestamp created_timestamp = 3; @@ -1459,7 +1459,7 @@ public static final class Counter extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "Counter"); } @@ -1472,15 +1472,15 @@ private Counter() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder.class); } private int bitField0_; @@ -1504,7 +1504,7 @@ public double getValue() { } public static final int EXEMPLAR_FIELD_NUMBER = 2; - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar exemplar_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1518,15 +1518,15 @@ public boolean hasExemplar() { * @return The exemplar. */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplar() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_; } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_; } public static final int CREATED_TIMESTAMP_FIELD_NUMBER = 3; @@ -1609,10 +1609,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1659,44 +1659,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1704,26 +1704,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1736,7 +1736,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1757,21 +1757,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Counter) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -1809,17 +1809,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1827,14 +1827,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1858,16 +1858,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1979,9 +1979,9 @@ public Builder clearValue() { return this; } - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar exemplar_; private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> exemplarBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder> exemplarBuilder_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1993,9 +1993,9 @@ public boolean hasExemplar() { * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplar() { if (exemplarBuilder_ == null) { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_; } else { return exemplarBuilder_.getMessage(); } @@ -2003,7 +2003,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) { + public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2020,7 +2020,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com * optional .io.prometheus.client.Exemplar exemplar = 2; */ public Builder setExemplar( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder builderForValue) { if (exemplarBuilder_ == null) { exemplar_ = builderForValue.build(); } else { @@ -2033,11 +2033,11 @@ public Builder setExemplar( /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) { + public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (((bitField0_ & 0x00000002) != 0) && exemplar_ != null && - exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance()) { + exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance()) { getExemplarBuilder().mergeFrom(value); } else { exemplar_ = value; @@ -2067,7 +2067,7 @@ public Builder clearExemplar() { /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder getExemplarBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder getExemplarBuilder() { bitField0_ |= 0x00000002; onChanged(); return internalGetExemplarFieldBuilder().getBuilder(); @@ -2075,23 +2075,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { if (exemplarBuilder_ != null) { return exemplarBuilder_.getMessageOrBuilder(); } else { return exemplar_ == null ? - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_; } } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder> internalGetExemplarFieldBuilder() { if (exemplarBuilder_ == null) { exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder>( getExemplar(), getParentForChildren(), isClean()); @@ -2225,12 +2225,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Counter) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2266,7 +2266,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2311,7 +2311,7 @@ public static final class Quantile extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "Quantile"); } @@ -2324,15 +2324,15 @@ private Quantile() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder.class); } private int bitField0_; @@ -2421,10 +2421,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile) obj; if (hasQuantile() != other.hasQuantile()) return false; if (hasQuantile()) { @@ -2464,44 +2464,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2509,26 +2509,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2541,7 +2541,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -2562,21 +2562,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Quantile) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.newBuilder() private Builder() { } @@ -2598,17 +2598,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -2616,14 +2616,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -2639,16 +2639,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.getDefaultInstance()) return this; if (other.hasQuantile()) { setQuantile(other.getQuantile()); } @@ -2792,12 +2792,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Quantile) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2833,7 +2833,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2868,12 +2868,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getQuantile(int index); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile getQuantile(int index); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @@ -2881,12 +2881,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileOrBuilderList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder getQuantileOrBuilder( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index); /** @@ -2917,7 +2917,7 @@ public static final class Summary extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "Summary"); } @@ -2931,15 +2931,15 @@ private Summary() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder.class); } private int bitField0_; @@ -2983,19 +2983,19 @@ public double getSampleSum() { public static final int QUANTILE_FIELD_NUMBER = 3; @SuppressWarnings("serial") - private java.util.List quantile_; + private java.util.List quantile_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { return quantile_; } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List + public java.util.List getQuantileOrBuilderList() { return quantile_; } @@ -3010,14 +3010,14 @@ public int getQuantileCount() { * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile getQuantile(int index) { return quantile_.get(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { return quantile_.get(index); } @@ -3109,10 +3109,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary) obj; if (hasSampleCount() != other.hasSampleCount()) return false; if (hasSampleCount()) { @@ -3166,44 +3166,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3211,26 +3211,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3243,7 +3243,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -3264,21 +3264,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Summary) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -3319,17 +3319,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -3337,15 +3337,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary(this); buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result) { + private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary result) { if (quantileBuilder_ == null) { if (((bitField0_ & 0x00000004) != 0)) { quantile_ = java.util.Collections.unmodifiableList(quantile_); @@ -3357,7 +3357,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats. } } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -3379,16 +3379,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance()) return this; if (other.hasSampleCount()) { setSampleCount(other.getSampleCount()); } @@ -3461,9 +3461,9 @@ public Builder mergeFrom( break; } // case 17 case 26: { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile m = + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile m = input.readMessage( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.parser(), + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.parser(), extensionRegistry); if (quantileBuilder_ == null) { ensureQuantileIsMutable(); @@ -3577,22 +3577,22 @@ public Builder clearSampleSum() { return this; } - private java.util.List quantile_ = + private java.util.List quantile_ = java.util.Collections.emptyList(); private void ensureQuantileIsMutable() { if (!((bitField0_ & 0x00000004) != 0)) { - quantile_ = new java.util.ArrayList(quantile_); + quantile_ = new java.util.ArrayList(quantile_); bitField0_ |= 0x00000004; } } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder> quantileBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder> quantileBuilder_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { if (quantileBuilder_ == null) { return java.util.Collections.unmodifiableList(quantile_); } else { @@ -3612,7 +3612,7 @@ public int getQuantileCount() { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile getQuantile(int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3623,7 +3623,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3640,7 +3640,7 @@ public Builder setQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.set(index, builderForValue.build()); @@ -3653,7 +3653,7 @@ public Builder setQuantile( /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile value) { + public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3670,7 +3670,7 @@ public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3687,7 +3687,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(builderForValue.build()); @@ -3701,7 +3701,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(index, builderForValue.build()); @@ -3715,7 +3715,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addAllQuantile( - java.lang.Iterable values) { + java.lang.Iterable values) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -3755,14 +3755,14 @@ public Builder removeQuantile(int index) { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder getQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder getQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().getBuilder(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3772,7 +3772,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileOrBuilderList() { if (quantileBuilder_ != null) { return quantileBuilder_.getMessageOrBuilderList(); @@ -3783,31 +3783,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder addQuantileBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder addQuantileBuilder() { return internalGetQuantileFieldBuilder().addBuilder( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance()); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder addQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder addQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().addBuilder( - index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.getDefaultInstance()); + index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileBuilderList() { return internalGetQuantileFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder> internalGetQuantileFieldBuilder() { if (quantileBuilder_ == null) { quantileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.QuantileOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.QuantileOrBuilder>( quantile_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), @@ -3942,12 +3942,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Summary) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -3983,7 +3983,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4017,7 +4017,7 @@ public static final class Untyped extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 33, - /* patch= */ 4, + /* patch= */ 5, /* suffix= */ "", "Untyped"); } @@ -4030,15 +4030,15 @@ private Untyped() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder.class); } private int bitField0_; @@ -4101,10 +4101,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -4133,44 +4133,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4178,26 +4178,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4210,7 +4210,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -4231,21 +4231,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Untyped) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.newBuilder() private Builder() { } @@ -4266,17 +4266,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -4284,14 +4284,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -4303,16 +4303,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -4408,12 +4408,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Untyped) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -4449,7 +4449,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4507,7 +4507,7 @@ public interface HistogramOrBuilder extends * * repeated .io.prometheus.client.Bucket bucket = 3; */ - java.util.List + java.util.List getBucketList(); /** *
@@ -4516,7 +4516,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getBucket(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket getBucket(int index);
     /**
      * 
      * Buckets for the conventional histogram.
@@ -4532,7 +4532,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    java.util.List 
+    java.util.List 
         getBucketOrBuilderList();
     /**
      * 
@@ -4541,7 +4541,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder getBucketOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index);
 
     /**
@@ -4650,7 +4650,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanList();
     /**
      * 
@@ -4659,7 +4659,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getNegativeSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getNegativeSpan(int index);
     /**
      * 
      * Negative buckets for the native histogram.
@@ -4675,7 +4675,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanOrBuilderList();
     /**
      * 
@@ -4684,7 +4684,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index);
 
     /**
@@ -4761,7 +4761,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanList();
     /**
      * 
@@ -4773,7 +4773,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getPositiveSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getPositiveSpan(int index);
     /**
      * 
      * Positive buckets for the native histogram.
@@ -4795,7 +4795,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanOrBuilderList();
     /**
      * 
@@ -4807,7 +4807,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index);
 
     /**
@@ -4881,7 +4881,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsList();
     /**
      * 
@@ -4890,7 +4890,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplars(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplars(int index);
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -4906,7 +4906,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsOrBuilderList();
     /**
      * 
@@ -4915,7 +4915,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index);
   }
   /**
@@ -4931,7 +4931,7 @@ public static final class Histogram extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 4,
+        /* patch= */ 5,
         /* suffix= */ "",
         "Histogram");
     }
@@ -4952,15 +4952,15 @@ private Histogram() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder.class);
     }
 
     private int bitField0_;
@@ -5031,7 +5031,7 @@ public double getSampleSum() {
 
     public static final int BUCKET_FIELD_NUMBER = 3;
     @SuppressWarnings("serial")
-    private java.util.List bucket_;
+    private java.util.List bucket_;
     /**
      * 
      * Buckets for the conventional histogram.
@@ -5040,7 +5040,7 @@ public double getSampleSum() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List getBucketList() {
+    public java.util.List getBucketList() {
       return bucket_;
     }
     /**
@@ -5051,7 +5051,7 @@ public java.util.Listrepeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getBucketOrBuilderList() {
       return bucket_;
     }
@@ -5074,7 +5074,7 @@ public int getBucketCount() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getBucket(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket getBucket(int index) {
       return bucket_.get(index);
     }
     /**
@@ -5085,7 +5085,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder getBucketOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index) {
       return bucket_.get(index);
     }
@@ -5234,7 +5234,7 @@ public double getZeroCountFloat() {
 
     public static final int NEGATIVE_SPAN_FIELD_NUMBER = 9;
     @SuppressWarnings("serial")
-    private java.util.List negativeSpan_;
+    private java.util.List negativeSpan_;
     /**
      * 
      * Negative buckets for the native histogram.
@@ -5243,7 +5243,7 @@ public double getZeroCountFloat() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List getNegativeSpanList() {
+    public java.util.List getNegativeSpanList() {
       return negativeSpan_;
     }
     /**
@@ -5254,7 +5254,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getNegativeSpanOrBuilderList() {
       return negativeSpan_;
     }
@@ -5277,7 +5277,7 @@ public int getNegativeSpanCount() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getNegativeSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getNegativeSpan(int index) {
       return negativeSpan_.get(index);
     }
     /**
@@ -5288,7 +5288,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index) {
       return negativeSpan_.get(index);
     }
@@ -5383,7 +5383,7 @@ public double getNegativeCount(int index) {
 
     public static final int POSITIVE_SPAN_FIELD_NUMBER = 12;
     @SuppressWarnings("serial")
-    private java.util.List positiveSpan_;
+    private java.util.List positiveSpan_;
     /**
      * 
      * Positive buckets for the native histogram.
@@ -5395,7 +5395,7 @@ public double getNegativeCount(int index) {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List getPositiveSpanList() {
+    public java.util.List getPositiveSpanList() {
       return positiveSpan_;
     }
     /**
@@ -5409,7 +5409,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getPositiveSpanOrBuilderList() {
       return positiveSpan_;
     }
@@ -5438,7 +5438,7 @@ public int getPositiveSpanCount() {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getPositiveSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getPositiveSpan(int index) {
       return positiveSpan_.get(index);
     }
     /**
@@ -5452,7 +5452,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index) {
       return positiveSpan_.get(index);
     }
@@ -5547,7 +5547,7 @@ public double getPositiveCount(int index) {
 
     public static final int EXEMPLARS_FIELD_NUMBER = 16;
     @SuppressWarnings("serial")
-    private java.util.List exemplars_;
+    private java.util.List exemplars_;
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -5556,7 +5556,7 @@ public double getPositiveCount(int index) {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List getExemplarsList() {
+    public java.util.List getExemplarsList() {
       return exemplars_;
     }
     /**
@@ -5567,7 +5567,7 @@ public java.util.Listrepeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getExemplarsOrBuilderList() {
       return exemplars_;
     }
@@ -5590,7 +5590,7 @@ public int getExemplarsCount() {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplars(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplars(int index) {
       return exemplars_.get(index);
     }
     /**
@@ -5601,7 +5601,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index) {
       return exemplars_.get(index);
     }
@@ -5765,10 +5765,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram) obj;
 
       if (hasSampleCount() != other.hasSampleCount()) return false;
       if (hasSampleCount()) {
@@ -5916,44 +5916,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5961,26 +5961,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5993,7 +5993,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -6014,21 +6014,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Histogram)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -6102,17 +6102,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -6120,15 +6120,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram result) {
         if (bucketBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             bucket_ = java.util.Collections.unmodifiableList(bucket_);
@@ -6167,7 +6167,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -6225,16 +6225,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance()) return this;
         if (other.hasSampleCount()) {
           setSampleCount(other.getSampleCount());
         }
@@ -6444,9 +6444,9 @@ public Builder mergeFrom(
                 break;
               } // case 17
               case 26: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.parser(),
                         extensionRegistry);
                 if (bucketBuilder_ == null) {
                   ensureBucketIsMutable();
@@ -6482,9 +6482,9 @@ public Builder mergeFrom(
                 break;
               } // case 65
               case 74: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (negativeSpanBuilder_ == null) {
                   ensureNegativeSpanIsMutable();
@@ -6528,9 +6528,9 @@ public Builder mergeFrom(
                 break;
               } // case 90
               case 98: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (positiveSpanBuilder_ == null) {
                   ensurePositiveSpanIsMutable();
@@ -6581,9 +6581,9 @@ public Builder mergeFrom(
                 break;
               } // case 122
               case 130: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.parser(),
                         extensionRegistry);
                 if (exemplarsBuilder_ == null) {
                   ensureExemplarsIsMutable();
@@ -6746,17 +6746,17 @@ public Builder clearSampleSum() {
         return this;
       }
 
-      private java.util.List bucket_ =
+      private java.util.List bucket_ =
         java.util.Collections.emptyList();
       private void ensureBucketIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          bucket_ = new java.util.ArrayList(bucket_);
+          bucket_ = new java.util.ArrayList(bucket_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder> bucketBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder> bucketBuilder_;
 
       /**
        * 
@@ -6765,7 +6765,7 @@ private void ensureBucketIsMutable() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List getBucketList() {
+      public java.util.List getBucketList() {
         if (bucketBuilder_ == null) {
           return java.util.Collections.unmodifiableList(bucket_);
         } else {
@@ -6793,7 +6793,7 @@ public int getBucketCount() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getBucket(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket getBucket(int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);
         } else {
@@ -6808,7 +6808,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6829,7 +6829,7 @@ public Builder setBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.set(index, builderForValue.build());
@@ -6846,7 +6846,7 @@ public Builder setBucket(
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket value) {
+      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6867,7 +6867,7 @@ public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6888,7 +6888,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(builderForValue.build());
@@ -6906,7 +6906,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(index, builderForValue.build());
@@ -6924,7 +6924,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addAllBucket(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -6976,7 +6976,7 @@ public Builder removeBucket(int index) {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder getBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder getBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().getBuilder(index);
       }
@@ -6987,7 +6987,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder getBucketOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder getBucketOrBuilder(
           int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);  } else {
@@ -7001,7 +7001,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketOrBuilderList() {
         if (bucketBuilder_ != null) {
           return bucketBuilder_.getMessageOrBuilderList();
@@ -7016,9 +7016,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder addBucketBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder addBucketBuilder() {
         return internalGetBucketFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7027,10 +7027,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder addBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder addBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7039,16 +7039,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketBuilderList() {
         return internalGetBucketFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder> 
           internalGetBucketFieldBuilder() {
         if (bucketBuilder_ == null) {
           bucketBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder>(
                   bucket_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -7419,17 +7419,17 @@ public Builder clearZeroCountFloat() {
         return this;
       }
 
-      private java.util.List negativeSpan_ =
+      private java.util.List negativeSpan_ =
         java.util.Collections.emptyList();
       private void ensureNegativeSpanIsMutable() {
         if (!((bitField0_ & 0x00000200) != 0)) {
-          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
+          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
           bitField0_ |= 0x00000200;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
 
       /**
        * 
@@ -7438,7 +7438,7 @@ private void ensureNegativeSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List getNegativeSpanList() {
+      public java.util.List getNegativeSpanList() {
         if (negativeSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(negativeSpan_);
         } else {
@@ -7466,7 +7466,7 @@ public int getNegativeSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getNegativeSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getNegativeSpan(int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);
         } else {
@@ -7481,7 +7481,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7502,7 +7502,7 @@ public Builder setNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.set(index, builderForValue.build());
@@ -7519,7 +7519,7 @@ public Builder setNegativeSpan(
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
+      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7540,7 +7540,7 @@ public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7561,7 +7561,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(builderForValue.build());
@@ -7579,7 +7579,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(index, builderForValue.build());
@@ -7597,7 +7597,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addAllNegativeSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -7649,7 +7649,7 @@ public Builder removeNegativeSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().getBuilder(index);
       }
@@ -7660,7 +7660,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
           int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);  } else {
@@ -7674,7 +7674,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanOrBuilderList() {
         if (negativeSpanBuilder_ != null) {
           return negativeSpanBuilder_.getMessageOrBuilderList();
@@ -7689,9 +7689,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7700,10 +7700,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7712,16 +7712,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanBuilderList() {
         return internalGetNegativeSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder> 
           internalGetNegativeSpanFieldBuilder() {
         if (negativeSpanBuilder_ == null) {
           negativeSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder>(
                   negativeSpan_,
                   ((bitField0_ & 0x00000200) != 0),
                   getParentForChildren(),
@@ -7975,17 +7975,17 @@ public Builder clearNegativeCount() {
         return this;
       }
 
-      private java.util.List positiveSpan_ =
+      private java.util.List positiveSpan_ =
         java.util.Collections.emptyList();
       private void ensurePositiveSpanIsMutable() {
         if (!((bitField0_ & 0x00001000) != 0)) {
-          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
+          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
           bitField0_ |= 0x00001000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
 
       /**
        * 
@@ -7997,7 +7997,7 @@ private void ensurePositiveSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List getPositiveSpanList() {
+      public java.util.List getPositiveSpanList() {
         if (positiveSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(positiveSpan_);
         } else {
@@ -8031,7 +8031,7 @@ public int getPositiveSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getPositiveSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getPositiveSpan(int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);
         } else {
@@ -8049,7 +8049,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8073,7 +8073,7 @@ public Builder setPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.set(index, builderForValue.build());
@@ -8093,7 +8093,7 @@ public Builder setPositiveSpan(
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
+      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8117,7 +8117,7 @@ public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8141,7 +8141,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(builderForValue.build());
@@ -8162,7 +8162,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(index, builderForValue.build());
@@ -8183,7 +8183,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addAllPositiveSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8244,7 +8244,7 @@ public Builder removePositiveSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().getBuilder(index);
       }
@@ -8258,7 +8258,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
           int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);  } else {
@@ -8275,7 +8275,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanOrBuilderList() {
         if (positiveSpanBuilder_ != null) {
           return positiveSpanBuilder_.getMessageOrBuilderList();
@@ -8293,9 +8293,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8307,10 +8307,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8322,16 +8322,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanBuilderList() {
         return internalGetPositiveSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder> 
           internalGetPositiveSpanFieldBuilder() {
         if (positiveSpanBuilder_ == null) {
           positiveSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder>(
                   positiveSpan_,
                   ((bitField0_ & 0x00001000) != 0),
                   getParentForChildren(),
@@ -8585,17 +8585,17 @@ public Builder clearPositiveCount() {
         return this;
       }
 
-      private java.util.List exemplars_ =
+      private java.util.List exemplars_ =
         java.util.Collections.emptyList();
       private void ensureExemplarsIsMutable() {
         if (!((bitField0_ & 0x00008000) != 0)) {
-          exemplars_ = new java.util.ArrayList(exemplars_);
+          exemplars_ = new java.util.ArrayList(exemplars_);
           bitField0_ |= 0x00008000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
 
       /**
        * 
@@ -8604,7 +8604,7 @@ private void ensureExemplarsIsMutable() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List getExemplarsList() {
+      public java.util.List getExemplarsList() {
         if (exemplarsBuilder_ == null) {
           return java.util.Collections.unmodifiableList(exemplars_);
         } else {
@@ -8632,7 +8632,7 @@ public int getExemplarsCount() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplars(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplars(int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);
         } else {
@@ -8647,7 +8647,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8668,7 +8668,7 @@ public Builder setExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.set(index, builderForValue.build());
@@ -8685,7 +8685,7 @@ public Builder setExemplars(
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
+      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8706,7 +8706,7 @@ public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.co
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8727,7 +8727,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(builderForValue.build());
@@ -8745,7 +8745,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(index, builderForValue.build());
@@ -8763,7 +8763,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addAllExemplars(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8815,7 +8815,7 @@ public Builder removeExemplars(int index) {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder getExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder getExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().getBuilder(index);
       }
@@ -8826,7 +8826,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
           int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);  } else {
@@ -8840,7 +8840,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsOrBuilderList() {
         if (exemplarsBuilder_ != null) {
           return exemplarsBuilder_.getMessageOrBuilderList();
@@ -8855,9 +8855,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder addExemplarsBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder addExemplarsBuilder() {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8866,10 +8866,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder addExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder addExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8878,16 +8878,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsBuilderList() {
         return internalGetExemplarsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder> 
           internalGetExemplarsFieldBuilder() {
         if (exemplarsBuilder_ == null) {
           exemplarsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder>(
                   exemplars_,
                   ((bitField0_ & 0x00008000) != 0),
                   getParentForChildren(),
@@ -8901,12 +8901,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Histogram)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -8942,7 +8942,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9018,11 +9018,11 @@ public interface BucketOrBuilder extends
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return The exemplar.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplar();
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
   }
   /**
    * 
@@ -9042,7 +9042,7 @@ public static final class Bucket extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 4,
+        /* patch= */ 5,
         /* suffix= */ "",
         "Bucket");
     }
@@ -9055,15 +9055,15 @@ private Bucket() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder.class);
     }
 
     private int bitField0_;
@@ -9149,7 +9149,7 @@ public double getUpperBound() {
     }
 
     public static final int EXEMPLAR_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar exemplar_;
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return Whether the exemplar field is set.
@@ -9163,15 +9163,15 @@ public boolean hasExemplar() {
      * @return The exemplar.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplar() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -9235,10 +9235,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket) obj;
 
       if (hasCumulativeCount() != other.hasCumulativeCount()) return false;
       if (hasCumulativeCount()) {
@@ -9297,44 +9297,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9342,26 +9342,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9374,7 +9374,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -9400,21 +9400,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Bucket)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -9448,17 +9448,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -9466,14 +9466,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -9499,16 +9499,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket.getDefaultInstance()) return this;
         if (other.hasCumulativeCount()) {
           setCumulativeCount(other.getCumulativeCount());
         }
@@ -9754,9 +9754,9 @@ public Builder clearUpperBound() {
         return this;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar exemplar_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar exemplar_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> exemplarBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder> exemplarBuilder_;
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return Whether the exemplar field is set.
@@ -9768,9 +9768,9 @@ public boolean hasExemplar() {
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return The exemplar.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getExemplar() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getExemplar() {
         if (exemplarBuilder_ == null) {
-          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         } else {
           return exemplarBuilder_.getMessage();
         }
@@ -9778,7 +9778,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
+      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -9795,7 +9795,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       public Builder setExemplar(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarBuilder_ == null) {
           exemplar_ = builderForValue.build();
         } else {
@@ -9808,11 +9808,11 @@ public Builder setExemplar(
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar value) {
+      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             exemplar_ != null &&
-            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance()) {
+            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance()) {
             getExemplarBuilder().mergeFrom(value);
           } else {
             exemplar_ = value;
@@ -9842,7 +9842,7 @@ public Builder clearExemplar() {
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder getExemplarBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder getExemplarBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetExemplarFieldBuilder().getBuilder();
@@ -9850,23 +9850,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
         if (exemplarBuilder_ != null) {
           return exemplarBuilder_.getMessageOrBuilder();
         } else {
           return exemplar_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         }
       }
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder> 
           internalGetExemplarFieldBuilder() {
         if (exemplarBuilder_ == null) {
           exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder>(
                   getExemplar(),
                   getParentForChildren(),
                   isClean());
@@ -9879,12 +9879,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Bucket)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9920,7 +9920,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Bucket getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Bucket getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9990,7 +9990,7 @@ public static final class BucketSpan extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 4,
+        /* patch= */ 5,
         /* suffix= */ "",
         "BucketSpan");
     }
@@ -10003,15 +10003,15 @@ private BucketSpan() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder.class);
     }
 
     private int bitField0_;
@@ -10116,10 +10116,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan) obj;
 
       if (hasOffset() != other.hasOffset()) return false;
       if (hasOffset()) {
@@ -10155,44 +10155,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10200,26 +10200,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10232,7 +10232,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10262,21 +10262,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.BucketSpan)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpanOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpanOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.newBuilder()
       private Builder() {
 
       }
@@ -10298,17 +10298,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -10316,14 +10316,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -10339,16 +10339,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan.getDefaultInstance()) return this;
         if (other.hasOffset()) {
           setOffset(other.getOffset());
         }
@@ -10524,12 +10524,12 @@ public Builder clearLength() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.BucketSpan)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10565,7 +10565,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.BucketSpan getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.BucketSpan getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10578,12 +10578,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -10591,12 +10591,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -10650,7 +10650,7 @@ public static final class Exemplar extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 4,
+        /* patch= */ 5,
         /* suffix= */ "",
         "Exemplar");
     }
@@ -10664,33 +10664,33 @@ private Exemplar() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -10705,14 +10705,14 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
@@ -10828,10 +10828,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -10875,44 +10875,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10920,26 +10920,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10952,7 +10952,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10973,21 +10973,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Exemplar)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.ExemplarOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.ExemplarOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -11027,17 +11027,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -11045,15 +11045,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -11065,7 +11065,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -11083,16 +11083,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -11152,9 +11152,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -11193,22 +11193,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -11228,7 +11228,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -11239,7 +11239,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11256,7 +11256,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -11269,7 +11269,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11286,7 +11286,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11303,7 +11303,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -11317,7 +11317,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -11331,7 +11331,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -11371,14 +11371,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -11388,7 +11388,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -11399,31 +11399,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -11634,12 +11634,12 @@ public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Exemplar)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11675,7 +11675,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Exemplar getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Exemplar getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11688,12 +11688,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -11701,12 +11701,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -11718,11 +11718,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return The gauge.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getGauge();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge getGauge();
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder getGaugeOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder getGaugeOrBuilder();
 
     /**
      * optional .io.prometheus.client.Counter counter = 3;
@@ -11733,11 +11733,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      * optional .io.prometheus.client.Counter counter = 3;
      * @return The counter.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getCounter();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter getCounter();
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder getCounterOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder getCounterOrBuilder();
 
     /**
      * optional .io.prometheus.client.Summary summary = 4;
@@ -11748,11 +11748,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      * optional .io.prometheus.client.Summary summary = 4;
      * @return The summary.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getSummary();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary getSummary();
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder getSummaryOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder getSummaryOrBuilder();
 
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
@@ -11763,11 +11763,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return The untyped.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getUntyped();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped getUntyped();
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder getUntypedOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder getUntypedOrBuilder();
 
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
@@ -11778,11 +11778,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Met
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return The histogram.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getHistogram();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram getHistogram();
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder getHistogramOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder getHistogramOrBuilder();
 
     /**
      * optional int64 timestamp_ms = 6;
@@ -11808,7 +11808,7 @@ public static final class Metric extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 4,
+        /* patch= */ 5,
         /* suffix= */ "",
         "Metric");
     }
@@ -11822,33 +11822,33 @@ private Metric() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -11863,20 +11863,20 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
 
     public static final int GAUGE_FIELD_NUMBER = 2;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge gauge_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge gauge_;
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return Whether the gauge field is set.
@@ -11890,19 +11890,19 @@ public boolean hasGauge() {
      * @return The gauge.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getGauge() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge getGauge() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
 
     public static final int COUNTER_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter counter_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter counter_;
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      * @return Whether the counter field is set.
@@ -11916,19 +11916,19 @@ public boolean hasCounter() {
      * @return The counter.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getCounter() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter getCounter() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance() : counter_;
     }
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder getCounterOrBuilder() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance() : counter_;
     }
 
     public static final int SUMMARY_FIELD_NUMBER = 4;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary summary_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary summary_;
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      * @return Whether the summary field is set.
@@ -11942,19 +11942,19 @@ public boolean hasSummary() {
      * @return The summary.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getSummary() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary getSummary() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance() : summary_;
     }
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance() : summary_;
     }
 
     public static final int UNTYPED_FIELD_NUMBER = 5;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped untyped_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped untyped_;
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return Whether the untyped field is set.
@@ -11968,19 +11968,19 @@ public boolean hasUntyped() {
      * @return The untyped.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getUntyped() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped getUntyped() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
 
     public static final int HISTOGRAM_FIELD_NUMBER = 7;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram histogram_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram histogram_;
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return Whether the histogram field is set.
@@ -11994,15 +11994,15 @@ public boolean hasHistogram() {
      * @return The histogram.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getHistogram() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram getHistogram() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
 
     public static final int TIMESTAMP_MS_FIELD_NUMBER = 6;
@@ -12106,10 +12106,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -12188,44 +12188,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12233,26 +12233,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12265,7 +12265,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -12286,21 +12286,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Metric)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -12364,17 +12364,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -12382,15 +12382,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -12402,7 +12402,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -12444,16 +12444,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -12525,9 +12525,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -12594,22 +12594,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -12629,7 +12629,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -12640,7 +12640,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12657,7 +12657,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -12670,7 +12670,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12687,7 +12687,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12704,7 +12704,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -12718,7 +12718,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -12732,7 +12732,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -12772,14 +12772,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -12789,7 +12789,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -12800,31 +12800,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -12834,9 +12834,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return labelBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge gauge_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge gauge_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder> gaugeBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder> gaugeBuilder_;
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return Whether the gauge field is set.
@@ -12848,9 +12848,9 @@ public boolean hasGauge() {
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return The gauge.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge getGauge() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge getGauge() {
         if (gaugeBuilder_ == null) {
-          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
+          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance() : gauge_;
         } else {
           return gaugeBuilder_.getMessage();
         }
@@ -12858,7 +12858,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge value) {
+      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12875,7 +12875,7 @@ public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_go
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       public Builder setGauge(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder builderForValue) {
         if (gaugeBuilder_ == null) {
           gauge_ = builderForValue.build();
         } else {
@@ -12888,11 +12888,11 @@ public Builder setGauge(
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge value) {
+      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (((bitField0_ & 0x00000002) != 0) &&
             gauge_ != null &&
-            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance()) {
+            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance()) {
             getGaugeBuilder().mergeFrom(value);
           } else {
             gauge_ = value;
@@ -12922,7 +12922,7 @@ public Builder clearGauge() {
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder getGaugeBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder getGaugeBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
         return internalGetGaugeFieldBuilder().getBuilder();
@@ -12930,23 +12930,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
         if (gaugeBuilder_ != null) {
           return gaugeBuilder_.getMessageOrBuilder();
         } else {
           return gauge_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.getDefaultInstance() : gauge_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.getDefaultInstance() : gauge_;
         }
       }
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder> 
           internalGetGaugeFieldBuilder() {
         if (gaugeBuilder_ == null) {
           gaugeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.GaugeOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.GaugeOrBuilder>(
                   getGauge(),
                   getParentForChildren(),
                   isClean());
@@ -12955,9 +12955,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return gaugeBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter counter_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter counter_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder> counterBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder> counterBuilder_;
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        * @return Whether the counter field is set.
@@ -12969,9 +12969,9 @@ public boolean hasCounter() {
        * optional .io.prometheus.client.Counter counter = 3;
        * @return The counter.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter getCounter() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter getCounter() {
         if (counterBuilder_ == null) {
-          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
+          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance() : counter_;
         } else {
           return counterBuilder_.getMessage();
         }
@@ -12979,7 +12979,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter value) {
+      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12996,7 +12996,7 @@ public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Counter counter = 3;
        */
       public Builder setCounter(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder builderForValue) {
         if (counterBuilder_ == null) {
           counter_ = builderForValue.build();
         } else {
@@ -13009,11 +13009,11 @@ public Builder setCounter(
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter value) {
+      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (((bitField0_ & 0x00000004) != 0) &&
             counter_ != null &&
-            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance()) {
+            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance()) {
             getCounterBuilder().mergeFrom(value);
           } else {
             counter_ = value;
@@ -13043,7 +13043,7 @@ public Builder clearCounter() {
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder getCounterBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder getCounterBuilder() {
         bitField0_ |= 0x00000004;
         onChanged();
         return internalGetCounterFieldBuilder().getBuilder();
@@ -13051,23 +13051,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder getCounterOrBuilder() {
         if (counterBuilder_ != null) {
           return counterBuilder_.getMessageOrBuilder();
         } else {
           return counter_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.getDefaultInstance() : counter_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.getDefaultInstance() : counter_;
         }
       }
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder> 
           internalGetCounterFieldBuilder() {
         if (counterBuilder_ == null) {
           counterBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.CounterOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.CounterOrBuilder>(
                   getCounter(),
                   getParentForChildren(),
                   isClean());
@@ -13076,9 +13076,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return counterBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary summary_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary summary_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder> summaryBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder> summaryBuilder_;
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        * @return Whether the summary field is set.
@@ -13090,9 +13090,9 @@ public boolean hasSummary() {
        * optional .io.prometheus.client.Summary summary = 4;
        * @return The summary.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary getSummary() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary getSummary() {
         if (summaryBuilder_ == null) {
-          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
+          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance() : summary_;
         } else {
           return summaryBuilder_.getMessage();
         }
@@ -13100,7 +13100,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary value) {
+      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13117,7 +13117,7 @@ public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Summary summary = 4;
        */
       public Builder setSummary(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder builderForValue) {
         if (summaryBuilder_ == null) {
           summary_ = builderForValue.build();
         } else {
@@ -13130,11 +13130,11 @@ public Builder setSummary(
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary value) {
+      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             summary_ != null &&
-            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance()) {
+            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance()) {
             getSummaryBuilder().mergeFrom(value);
           } else {
             summary_ = value;
@@ -13164,7 +13164,7 @@ public Builder clearSummary() {
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder getSummaryBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder getSummaryBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetSummaryFieldBuilder().getBuilder();
@@ -13172,23 +13172,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
         if (summaryBuilder_ != null) {
           return summaryBuilder_.getMessageOrBuilder();
         } else {
           return summary_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.getDefaultInstance() : summary_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.getDefaultInstance() : summary_;
         }
       }
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder> 
           internalGetSummaryFieldBuilder() {
         if (summaryBuilder_ == null) {
           summaryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.SummaryOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.SummaryOrBuilder>(
                   getSummary(),
                   getParentForChildren(),
                   isClean());
@@ -13197,9 +13197,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return summaryBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped untyped_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped untyped_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder> untypedBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder> untypedBuilder_;
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return Whether the untyped field is set.
@@ -13211,9 +13211,9 @@ public boolean hasUntyped() {
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return The untyped.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped getUntyped() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped getUntyped() {
         if (untypedBuilder_ == null) {
-          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
+          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance() : untyped_;
         } else {
           return untypedBuilder_.getMessage();
         }
@@ -13221,7 +13221,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped value) {
+      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13238,7 +13238,7 @@ public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       public Builder setUntyped(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder builderForValue) {
         if (untypedBuilder_ == null) {
           untyped_ = builderForValue.build();
         } else {
@@ -13251,11 +13251,11 @@ public Builder setUntyped(
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped value) {
+      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (((bitField0_ & 0x00000010) != 0) &&
             untyped_ != null &&
-            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance()) {
+            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance()) {
             getUntypedBuilder().mergeFrom(value);
           } else {
             untyped_ = value;
@@ -13285,7 +13285,7 @@ public Builder clearUntyped() {
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder getUntypedBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder getUntypedBuilder() {
         bitField0_ |= 0x00000010;
         onChanged();
         return internalGetUntypedFieldBuilder().getBuilder();
@@ -13293,23 +13293,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
         if (untypedBuilder_ != null) {
           return untypedBuilder_.getMessageOrBuilder();
         } else {
           return untyped_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.getDefaultInstance() : untyped_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.getDefaultInstance() : untyped_;
         }
       }
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder> 
           internalGetUntypedFieldBuilder() {
         if (untypedBuilder_ == null) {
           untypedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.UntypedOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.UntypedOrBuilder>(
                   getUntyped(),
                   getParentForChildren(),
                   isClean());
@@ -13318,9 +13318,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return untypedBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram histogram_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram histogram_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder> histogramBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder> histogramBuilder_;
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return Whether the histogram field is set.
@@ -13332,9 +13332,9 @@ public boolean hasHistogram() {
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return The histogram.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram getHistogram() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram getHistogram() {
         if (histogramBuilder_ == null) {
-          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
+          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance() : histogram_;
         } else {
           return histogramBuilder_.getMessage();
         }
@@ -13342,7 +13342,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram value) {
+      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13359,7 +13359,7 @@ public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.co
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       public Builder setHistogram(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder builderForValue) {
         if (histogramBuilder_ == null) {
           histogram_ = builderForValue.build();
         } else {
@@ -13372,11 +13372,11 @@ public Builder setHistogram(
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram value) {
+      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (((bitField0_ & 0x00000020) != 0) &&
             histogram_ != null &&
-            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance()) {
+            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance()) {
             getHistogramBuilder().mergeFrom(value);
           } else {
             histogram_ = value;
@@ -13406,7 +13406,7 @@ public Builder clearHistogram() {
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder getHistogramBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder getHistogramBuilder() {
         bitField0_ |= 0x00000020;
         onChanged();
         return internalGetHistogramFieldBuilder().getBuilder();
@@ -13414,23 +13414,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
         if (histogramBuilder_ != null) {
           return histogramBuilder_.getMessageOrBuilder();
         } else {
           return histogram_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.getDefaultInstance() : histogram_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.getDefaultInstance() : histogram_;
         }
       }
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder> 
           internalGetHistogramFieldBuilder() {
         if (histogramBuilder_ == null) {
           histogramBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.HistogramOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.HistogramOrBuilder>(
                   getHistogram(),
                   getParentForChildren(),
                   isClean());
@@ -13483,12 +13483,12 @@ public Builder clearTimestampMs() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Metric)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13524,7 +13524,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13577,17 +13577,17 @@ public interface MetricFamilyOrBuilder extends
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType getType();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType getType();
 
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getMetric(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric getMetric(int index);
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
@@ -13595,12 +13595,12 @@ public interface MetricFamilyOrBuilder extends
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricOrBuilderList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder getMetricOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index);
 
     /**
@@ -13633,7 +13633,7 @@ public static final class MetricFamily extends
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
         /* minor= */ 33,
-        /* patch= */ 4,
+        /* patch= */ 5,
         /* suffix= */ "",
         "MetricFamily");
     }
@@ -13651,15 +13651,15 @@ private MetricFamily() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.Builder.class);
     }
 
     private int bitField0_;
@@ -13774,26 +13774,26 @@ public java.lang.String getHelp() {
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType getType() {
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.forNumber(type_);
-      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.COUNTER : result;
+    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType getType() {
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType.forNumber(type_);
+      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType.COUNTER : result;
     }
 
     public static final int METRIC_FIELD_NUMBER = 4;
     @SuppressWarnings("serial")
-    private java.util.List metric_;
+    private java.util.List metric_;
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List getMetricList() {
+    public java.util.List getMetricList() {
       return metric_;
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getMetricOrBuilderList() {
       return metric_;
     }
@@ -13808,14 +13808,14 @@ public int getMetricCount() {
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getMetric(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric getMetric(int index) {
       return metric_.get(index);
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder getMetricOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index) {
       return metric_.get(index);
     }
@@ -13934,10 +13934,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily) obj;
 
       if (hasName() != other.hasName()) return false;
       if (hasName()) {
@@ -13996,44 +13996,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14041,26 +14041,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14073,7 +14073,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14094,21 +14094,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.MetricFamily)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamilyOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamilyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.newBuilder()
       private Builder() {
 
       }
@@ -14139,17 +14139,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -14157,15 +14157,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily result) {
         if (metricBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             metric_ = java.util.Collections.unmodifiableList(metric_);
@@ -14177,7 +14177,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -14201,16 +14201,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily.getDefaultInstance()) return this;
         if (other.hasName()) {
           name_ = other.name_;
           bitField0_ |= 0x00000001;
@@ -14293,8 +14293,8 @@ public Builder mergeFrom(
               } // case 18
               case 24: {
                 int tmpRaw = input.readEnum();
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType tmpValue =
-                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.forNumber(tmpRaw);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType tmpValue =
+                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType.forNumber(tmpRaw);
                 if (tmpValue == null) {
                   mergeUnknownVarintField(3, tmpRaw);
                 } else {
@@ -14304,9 +14304,9 @@ public Builder mergeFrom(
                 break;
               } // case 24
               case 34: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.parser(),
                         extensionRegistry);
                 if (metricBuilder_ == null) {
                   ensureMetricIsMutable();
@@ -14511,16 +14511,16 @@ public Builder setHelpBytes(
        * @return The type.
        */
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType getType() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.forNumber(type_);
-        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType.COUNTER : result;
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType getType() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType.forNumber(type_);
+        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType.COUNTER : result;
       }
       /**
        * optional .io.prometheus.client.MetricType type = 3;
        * @param value The type to set.
        * @return This builder for chaining.
        */
-      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricType value) {
+      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricType value) {
         if (value == null) { throw new NullPointerException(); }
         bitField0_ |= 0x00000004;
         type_ = value.getNumber();
@@ -14538,22 +14538,22 @@ public Builder clearType() {
         return this;
       }
 
-      private java.util.List metric_ =
+      private java.util.List metric_ =
         java.util.Collections.emptyList();
       private void ensureMetricIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          metric_ = new java.util.ArrayList(metric_);
+          metric_ = new java.util.ArrayList(metric_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder> metricBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder> metricBuilder_;
 
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List getMetricList() {
+      public java.util.List getMetricList() {
         if (metricBuilder_ == null) {
           return java.util.Collections.unmodifiableList(metric_);
         } else {
@@ -14573,7 +14573,7 @@ public int getMetricCount() {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric getMetric(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric getMetric(int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);
         } else {
@@ -14584,7 +14584,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14601,7 +14601,7 @@ public Builder setMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.set(index, builderForValue.build());
@@ -14614,7 +14614,7 @@ public Builder setMetric(
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric value) {
+      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14631,7 +14631,7 @@ public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14648,7 +14648,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(builderForValue.build());
@@ -14662,7 +14662,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(index, builderForValue.build());
@@ -14676,7 +14676,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addAllMetric(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -14716,14 +14716,14 @@ public Builder removeMetric(int index) {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder getMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder getMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder getMetricOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder getMetricOrBuilder(
           int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);  } else {
@@ -14733,7 +14733,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricOrBuilderList() {
         if (metricBuilder_ != null) {
           return metricBuilder_.getMessageOrBuilderList();
@@ -14744,31 +14744,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder addMetricBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder addMetricBuilder() {
         return internalGetMetricFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder addMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder addMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricBuilderList() {
         return internalGetMetricFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder> 
           internalGetMetricFieldBuilder() {
         if (metricBuilder_ == null) {
           metricBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricOrBuilder>(
                   metric_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -14862,12 +14862,12 @@ public Builder setUnitBytes(
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.MetricFamily)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -14903,7 +14903,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics.MetricFamily getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics.MetricFamily getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -15028,7 +15028,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       "\002\022\013\n\007UNTYPED\020\003\022\r\n\tHISTOGRAM\020\004\022\023\n\017GAUGE_H" +
       "ISTOGRAM\020\005B\212\001\nLio.prometheus.metrics.exp" +
       "ositionformats.generated.com_google_prot" +
-      "obuf_4_33_4Z:github.com/prometheus/clien" +
+      "obuf_4_33_5Z:github.com/prometheus/clien" +
       "t_model/go;io_prometheus_client"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
index feaf15b22..bd82c36bb 100644
--- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
+++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
@@ -6,7 +6,7 @@
 import com.google.protobuf.TextFormat;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.expositionformats.ExpositionFormatWriter;
-import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics;
+import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics;
 import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot;
diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
index e2e669c8c..9aa88744a 100644
--- a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
+++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java
@@ -3,7 +3,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import io.prometheus.metrics.config.EscapingScheme;
-import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_4.Metrics;
+import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics;
 import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl;
 import io.prometheus.metrics.expositionformats.internal.ProtobufUtil;
 import io.prometheus.metrics.model.snapshots.MetricSnapshot;

From baf8b766c36adeda566f94d51f214b466368c43f Mon Sep 17 00:00:00 2001
From: Jay DeLuca 
Date: Wed, 4 Feb 2026 07:19:56 -0500
Subject: [PATCH 061/110] Reduce flakyness of testExemplarsClassicHistogram
 (#1842)

I've been encountering issues with
`io.prometheus.metrics.core.metrics.HistogramTest.testExemplarsClassicHistogram`
when running tests locally, lot's of these:

```
[ERROR] Tests run: 28, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.279 s <<< FAILURE! -- in io.prometheus.metrics.core.metrics.HistogramTest
[ERROR] io.prometheus.metrics.core.metrics.HistogramTest.testExemplarsClassicHistogram -- Time elapsed: 0.055 s <<< ERROR!
java.lang.NullPointerException: Cannot invoke "io.prometheus.metrics.model.snapshots.Exemplar.getValue()" because "actual" is null
        at io.prometheus.metrics.core.metrics.TestUtil.assertExemplarEquals(TestUtil.java:13)
        at io.prometheus.metrics.core.metrics.HistogramTest.testExemplarsClassicHistogram(HistogramTest.java:1054)
```

attempting to make it a little more reliable with awaitility.

Alternatively we could refactor the ExemplarSampler to take a clock as
an argument so we could mock it, but I figured we could start here
before we change the production code

---------

Signed-off-by: Jay DeLuca 
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
 .../metrics/core/metrics/HistogramTest.java   | 49 +++++++++++++++++--
 1 file changed, 44 insertions(+), 5 deletions(-)

diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java
index cd9a4d00e..a305536bc 100644
--- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java
+++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java
@@ -1,9 +1,11 @@
 package io.prometheus.metrics.core.metrics;
 
 import static io.prometheus.metrics.core.metrics.TestUtil.assertExemplarEquals;
+import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 import static org.assertj.core.data.Offset.offset;
+import static org.awaitility.Awaitility.await;
 
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.config.MetricsProperties;
@@ -1020,10 +1022,18 @@ public void markCurrentSpanAsExemplar() {}
     assertThat(getExemplar(snapshot, Double.POSITIVE_INFINITY, "path", "/hello")).isNull();
     assertThat(getExemplar(snapshot, Double.POSITIVE_INFINITY, "path", "/world")).isNull();
 
-    Thread.sleep(sampleIntervalMillis + 1);
+    waitForSampleInterval(sampleIntervalMillis);
     histogram.labelValues("/hello").observe(4.5);
     histogram.labelValues("/world").observe(4.5);
 
+    await()
+        .atMost(2, SECONDS)
+        .until(
+            () -> {
+              HistogramSnapshot s = histogram.collect();
+              return getExemplar(s, Double.POSITIVE_INFINITY, "path", "/hello") != null
+                  && getExemplar(s, Double.POSITIVE_INFINITY, "path", "/world") != null;
+            });
     snapshot = histogram.collect();
     assertExemplarEquals(ex1a, getExemplar(snapshot, 1.0, "path", "/hello"));
     assertExemplarEquals(ex1b, getExemplar(snapshot, 1.0, "path", "/world"));
@@ -1036,16 +1046,28 @@ public void markCurrentSpanAsExemplar() {}
     assertExemplarEquals(ex2a, getExemplar(snapshot, Double.POSITIVE_INFINITY, "path", "/hello"));
     assertExemplarEquals(ex2b, getExemplar(snapshot, Double.POSITIVE_INFINITY, "path", "/world"));
 
-    Thread.sleep(sampleIntervalMillis + 1);
+    waitForSampleInterval(sampleIntervalMillis);
     histogram.labelValues("/hello").observe(1.5);
     histogram.labelValues("/world").observe(1.5);
-    Thread.sleep(sampleIntervalMillis + 1);
+    waitForSampleInterval(sampleIntervalMillis);
     histogram.labelValues("/hello").observe(2.5);
     histogram.labelValues("/world").observe(2.5);
-    Thread.sleep(sampleIntervalMillis + 1);
+    waitForSampleInterval(sampleIntervalMillis);
     histogram.labelValues("/hello").observe(3.5);
     histogram.labelValues("/world").observe(3.5);
 
+    await()
+        .atMost(2, SECONDS)
+        .until(
+            () -> {
+              HistogramSnapshot s = histogram.collect();
+              return getExemplar(s, 2.0, "path", "/hello") != null
+                  && getExemplar(s, 2.0, "path", "/world") != null
+                  && getExemplar(s, 3.0, "path", "/hello") != null
+                  && getExemplar(s, 3.0, "path", "/world") != null
+                  && getExemplar(s, 4.0, "path", "/hello") != null
+                  && getExemplar(s, 4.0, "path", "/world") != null;
+            });
     snapshot = histogram.collect();
     assertExemplarEquals(ex1a, getExemplar(snapshot, 1.0, "path", "/hello"));
     assertExemplarEquals(ex1b, getExemplar(snapshot, 1.0, "path", "/world"));
@@ -1072,15 +1094,32 @@ public void markCurrentSpanAsExemplar() {}
                     "span_id",
                     "spanId-11"))
             .build();
-    Thread.sleep(sampleIntervalMillis + 1);
+    waitForSampleInterval(sampleIntervalMillis);
     histogram
         .labelValues("/hello")
         .observeWithExemplar(3.4, Labels.of("key1", "value1", "key2", "value2"));
+    await()
+        .atMost(2, SECONDS)
+        .until(
+            () -> {
+              Exemplar actual = getExemplar(histogram.collect(), 4.0, "path", "/hello");
+              return actual != null && Math.abs(actual.getValue() - 3.4) < 0.00001;
+            });
     snapshot = histogram.collect();
     // custom exemplars have preference, so the automatic exemplar is replaced
     assertExemplarEquals(custom, getExemplar(snapshot, 4.0, "path", "/hello"));
   }
 
+  /** Waits for the exemplar sampler's rate limit window so the next observation is accepted. */
+  private static void waitForSampleInterval(long sampleIntervalMillis) {
+    try {
+      Thread.sleep(2 * sampleIntervalMillis);
+    } catch (InterruptedException e) {
+      Thread.currentThread().interrupt();
+      throw new AssertionError("Interrupted while waiting for sample interval", e);
+    }
+  }
+
   private Exemplar getExemplar(HistogramSnapshot snapshot, double le, String... labels) {
     HistogramSnapshot.HistogramDataPointSnapshot data =
         snapshot.getDataPoints().stream()

From 586eaf5298dded8a1eb8add4490736c8a149fcd7 Mon Sep 17 00:00:00 2001
From: Gregor Zeitlinger 
Date: Wed, 4 Feb 2026 13:43:57 +0100
Subject: [PATCH 062/110] fix and test gh pages (#1845)

Signed-off-by: Gregor Zeitlinger 
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
 .github/workflows/test-release-build.yml      |   8 +-
 .../layouts/partials/microformats/schema.html | 112 ++++++++----------
 2 files changed, 56 insertions(+), 64 deletions(-)

diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml
index db2f80058..c8f1794d5 100644
--- a/.github/workflows/test-release-build.yml
+++ b/.github/workflows/test-release-build.yml
@@ -16,6 +16,8 @@ jobs:
       - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
         with:
           persist-credentials: false
+          fetch-tags: "true"
+          fetch-depth: 0
       - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1
         with:
           version: v2026.2.0
@@ -27,8 +29,10 @@ jobs:
           key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
           restore-keys: |
             ${{ runner.os }}-maven-
-      - name: Build Javadoc
-        run: mise run javadoc
+      - name: Build GitHub Pages
+        run: mise run build-gh-pages
+        env:
+          BASE_URL: "/client_java"
       - name: Build release version
         run: mise run build-release
         env:
diff --git a/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html b/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html
index e4a71eb4e..7e49ef8c7 100644
--- a/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html
+++ b/docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html
@@ -1,70 +1,58 @@
 {{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
 {{- if eq .Kind "home" }}
+  {{- $schema := dict "@context" "http://schema.org" "@type" "WebSite" "name" .Site.Title "url" .Site.BaseURL "inLanguage" .Lang }}
+  {{- with partial "utils/description" . }}
+    {{- $schema = merge $schema (dict "description" (. | plainify | htmlUnescape | chomp)) }}
+  {{- end }}
+  {{- with partial "utils/featured" . }}
+    {{- $schema = merge $schema (dict "thumbnailUrl" .) }}
+  {{- end }}
+  {{- with .Site.Params.geekdocContentLicense }}
+    {{- $schema = merge $schema (dict "license" .name) }}
+  {{- end }}
   
 {{- else if $isPage }}
+  {{- $title := partial "utils/title" . }}
+  {{- $schema := dict
+      "@context" "http://schema.org"
+      "@type" "TechArticle"
+      "articleSection" (.Section | humanize | title)
+      "name" $title
+      "url" .Permalink
+      "headline" $title
+      "wordCount" (string .WordCount)
+      "inLanguage" .Lang
+      "isFamilyFriendly" "true"
+      "copyrightHolder" .Site.Title
+      "copyrightYear" (.Date.Format "2006")
+      "dateCreated" (.Date.Format "2006-01-02T15:04:05.00Z")
+      "datePublished" (.PublishDate.Format "2006-01-02T15:04:05.00Z")
+      "dateModified" (.Lastmod.Format "2006-01-02T15:04:05.00Z")
+    }}
+  {{- with .Params.lead }}
+    {{- $schema = merge $schema (dict "alternativeHeadline" .) }}
+  {{- end }}
+  {{- with partial "utils/description" . }}
+    {{- $schema = merge $schema (dict "description" (. | plainify | htmlUnescape | chomp)) }}
+  {{- end }}
+  {{- with partial "utils/featured" . }}
+    {{- $schema = merge $schema (dict "thumbnailUrl" .) }}
+  {{- end }}
+  {{- with .Site.Params.geekdocContentLicense }}
+    {{- $schema = merge $schema (dict "license" .name) }}
+  {{- end }}
+  {{- $mainEntity := dict "@type" "WebPage" "@id" .Permalink }}
+  {{- $schema = merge $schema (dict "mainEntityOfPage" $mainEntity) }}
+  {{- with $tags := .Params.tags }}
+    {{- $schema = merge $schema (dict "keywords" $tags) }}
+  {{- end }}
+  {{- $logoUrl := default "brand.svg" .Site.Params.logo | absURL }}
+  {{- $logo := dict "@type" "ImageObject" "url" $logoUrl "width" "32" "height" "32" }}
+  {{- $publisher := dict "@type" "Organization" "name" .Site.Title "url" .Site.BaseURL "logo" $logo }}
+  {{- $schema = merge $schema (dict "publisher" $publisher) }}
   
 {{- end }}

From 14c51df9b62cbfd59031509cf288aa8eb3866c0c Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 5 Feb 2026 09:40:08 +0000
Subject: [PATCH 063/110] chore(deps): update
 otel/opentelemetry-collector-contrib docker tag to v0.145.0 (#1849)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[otel/opentelemetry-collector-contrib](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases)
| minor | `0.144.0` โ†’ `0.145.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

open-telemetry/opentelemetry-collector-releases (otel/opentelemetry-collector-contrib) ### [`v0.145.0`](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/blob/HEAD/CHANGELOG.md#v01450) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/compare/v0.144.0...v0.145.0)
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- examples/example-exporter-opentelemetry/docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index f07f22d8e..be1257799 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -36,7 +36,7 @@ services: - -jar - /example-greeting-service.jar collector: - image: otel/opentelemetry-collector-contrib:0.144.0@sha256:213886eb6407af91b87fa47551c3632be1a6419ff3a5114ef1e6fc364628496f + image: otel/opentelemetry-collector-contrib:0.145.0@sha256:a7343f01869071ea3f4c5e1e97df1bb1b3c4d5c77247db80e053a80b9df530c4 network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml diff --git a/examples/example-exporter-opentelemetry/docker-compose.yaml b/examples/example-exporter-opentelemetry/docker-compose.yaml index 53afbed4c..7cb140247 100644 --- a/examples/example-exporter-opentelemetry/docker-compose.yaml +++ b/examples/example-exporter-opentelemetry/docker-compose.yaml @@ -13,7 +13,7 @@ services: #- -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 - /example-exporter-opentelemetry.jar collector: - image: otel/opentelemetry-collector-contrib:0.144.0@sha256:213886eb6407af91b87fa47551c3632be1a6419ff3a5114ef1e6fc364628496f + image: otel/opentelemetry-collector-contrib:0.145.0@sha256:a7343f01869071ea3f4c5e1e97df1bb1b3c4d5c77247db80e053a80b9df530c4 network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml From bcc06392989de57021950b6f07fce81d210a443a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 12:37:12 +0100 Subject: [PATCH 064/110] chore(deps): update dependency com.google.errorprone:error_prone_core to v2.47.0 (#1848) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.google.errorprone:error_prone_core](https://errorprone.info) ([source](https://redirect.github.com/google/error-prone)) | `2.46.0` โ†’ `2.47.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.errorprone:error_prone_core/2.47.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.errorprone:error_prone_core/2.46.0/2.47.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
google/error-prone (com.google.errorprone:error_prone_core) ### [`v2.47.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.47.0): Error Prone 2.47.0 New checks: - [`InterruptedInCatchBlock`](https://errorprone.info/bugpattern/InterruptedInCatchBlock): Detect accidental calls to `Thread.interrupted()` inside of `catch(InterruptedException e)` blocks. - [`RefactorSwitch`](https://errorprone.info/bugpattern/RefactorSwitch): Refactorings to simplify arrow switches - [`UnnamedVariable`](https://errorprone.info/bugpattern/UnnamedVariable): Rename unused variables to `_` Closed issues: [#​1811](https://redirect.github.com/google/error-prone/issues/1811), [#​4168](https://redirect.github.com/google/error-prone/issues/4168), [#​5459](https://redirect.github.com/google/error-prone/issues/5459), [#​5460](https://redirect.github.com/google/error-prone/issues/5460) Full changelog:
--- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger --- pom.xml | 2 +- .../metrics/exporter/common/PrometheusHttpRequest.java | 2 ++ .../prometheus/metrics/exporter/pushgateway/PushGateway.java | 4 ++++ .../metrics/expositionformats/ExpositionFormatWriter.java | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c5fc1b43a..4e3018de8 100644 --- a/pom.xml +++ b/pom.xml @@ -449,7 +449,7 @@ com.google.errorprone error_prone_core - 2.46.0 + 2.47.0 com.uber.nullaway diff --git a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java index 3af9996e3..4483fc83f 100644 --- a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java +++ b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java @@ -43,6 +43,8 @@ default String getParameter(String name) { /** See {@code jakarta.servlet.ServletRequest.getParameterValues(String)} */ @Override @Nullable + // decode with Charset is only available in Java 10+, but we want to support Java 8 + @SuppressWarnings("JdkObsolete") default String[] getParameterValues(String name) { try { ArrayList result = new ArrayList<>(); diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java index 72e0561c1..ab2c07ee9 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java @@ -253,6 +253,8 @@ private void doRequest(@Nullable PrometheusRegistry registry, String method) thr } } + // toString with Charset is only available in Java 10+, but we want to support Java 8 + @SuppressWarnings("JdkObsolete") private static String readFromStream(InputStream is) throws IOException { ByteArrayOutputStream result = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; @@ -497,6 +499,8 @@ private Format getFormat() { return Format.PROMETHEUS_PROTOBUF; } + // encode with Charset is only available in Java 10+, but we want to support Java 8 + @SuppressWarnings("JdkObsolete") private URL makeUrl(@Nullable ExporterPushgatewayProperties properties) throws UnsupportedEncodingException, MalformedURLException { StringBuilder url = diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java index 67f1ee41e..03ac229ca 100644 --- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java +++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java @@ -20,6 +20,8 @@ default void write(OutputStream out, MetricSnapshots metricSnapshots) throws IOE } /** Converts the metric snapshots to a debug string using the specified escaping scheme. */ + // toString with Charset is only available in Java 10+, but we want to support Java 8 + @SuppressWarnings("JdkObsolete") default String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { From c50c800880021f1ffca68e82b73760caffa8068c Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 5 Feb 2026 13:37:01 +0100 Subject: [PATCH 065/110] Verify and document native histograms with custom buckets (NHCB) support (#1846) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #1838 ## Summary Addresses #1838 by verifying and documenting that `client_java` fully supports native histograms with custom buckets (NHCB, schema -53). ## Background According to the [Prometheus Native Histograms specification](https://prometheus.io/docs/specs/native_histograms/), NHCB is handled by: 1. Clients expose classic histograms with custom bucket boundaries 2. Prometheus servers convert them to native histograms (schema -53) when configured with `convert_classic_histograms_to_nhcb: true` 3. Custom bucket boundaries are preserved in the conversion ## Changes ### 1. Comprehensive Test Suite โœ… - **File:** `prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CustomBucketsHistogramTest.java` - **Tests:** 11 comprehensive tests (all passing) - **Coverage:** - Arbitrary custom bucket boundaries - Linear boundaries (equal-width buckets) - Exponential boundaries (for data spanning multiple orders of magnitude) - Classic-only and dual-mode histograms - Text and protobuf format serialization - Labeled histograms with custom buckets - Boundary edge cases and fine-grained precision ### 2. Documentation โœ… - **File:** `docs/content/getting-started/metric-types.md` - **Added:** - Custom Bucket Boundaries section with examples for arbitrary, linear, and exponential boundaries - Native Histograms with Custom Buckets (NHCB) section explaining: - How NHCB works - Prometheus server configuration - When to use NHCB vs standard native histograms - Comparison table ### 3. Working Example โœ… - **New module:** `examples/example-custom-buckets/` - **Demonstrates:** Three real-world use cases: - API latency with arbitrary custom boundaries (0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0 seconds) - Queue size with linear boundaries (10, 20, 30, ..., 100) - Response size with exponential boundaries (100, 1k, 10k, 100k, 1M, 10M bytes) - **Includes:** - Docker Compose setup with Prometheus (NHCB enabled) and Grafana - Pre-configured Grafana dashboard showing all three histogram types - Comprehensive README with build/run instructions and verification steps ### 4. Verification Report โœ… - **File:** `CUSTOM_BUCKETS_VERIFICATION.md` - **Documents:** Detailed findings, test methodology, and verification results ## Test Results [INFO] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0 [INFO] BUILD SUCCESS All tests pass successfully, confirming that custom bucket support works correctly in all scenarios. ## Key Findings โœ… **Custom bucket support is fully functional** - The Java client correctly handles histograms with custom bucket boundaries - Dual-mode operation (classic + native) works seamlessly with custom buckets - Custom buckets are properly serialized in both text and protobuf formats - Prometheus servers can convert these to NHCB (schema -53) upon ingestion ## How to Test ### Run the tests: ```bash ./mvnw test -Dtest=CustomBucketsHistogramTest -pl prometheus-metrics-core ``` Run the example: ```bash ./mvnw package cd examples/example-custom-buckets docker-compose up ``` Then visit: - Application: http://localhost:9400/metrics - Prometheus: http://localhost:9090 - Grafana: http://localhost:3000 (admin/admin) Documentation Links - https://prometheus.io/docs/specs/native_histograms/ - CUSTOM_BUCKETS_VERIFICATION.md - examples/example-custom-buckets/README.md --------- Signed-off-by: Gregor Zeitlinger Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- CLAUDE.md | 37 +- docs/content/getting-started/metric-types.md | 88 ++++ examples/example-custom-buckets/README.md | 170 +++++++ .../docker-compose.yaml | 26 + .../grafana-dashboard-custom-buckets.json | 349 +++++++++++++ .../docker-compose/grafana-dashboards.yaml | 8 + .../docker-compose/grafana-datasources.yaml | 7 + .../docker-compose/prometheus.yml | 14 + examples/example-custom-buckets/pom.xml | 62 +++ .../metrics/examples/custombuckets/Main.java | 108 ++++ examples/pom.xml | 1 + .../metrics/CustomBucketsHistogramTest.java | 470 ++++++++++++++++++ 12 files changed, 1335 insertions(+), 5 deletions(-) create mode 100644 examples/example-custom-buckets/README.md create mode 100644 examples/example-custom-buckets/docker-compose.yaml create mode 100644 examples/example-custom-buckets/docker-compose/grafana-dashboard-custom-buckets.json create mode 100644 examples/example-custom-buckets/docker-compose/grafana-dashboards.yaml create mode 100644 examples/example-custom-buckets/docker-compose/grafana-datasources.yaml create mode 100644 examples/example-custom-buckets/docker-compose/prometheus.yml create mode 100644 examples/example-custom-buckets/pom.xml create mode 100644 examples/example-custom-buckets/src/main/java/io/prometheus/metrics/examples/custombuckets/Main.java create mode 100644 prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CustomBucketsHistogramTest.java diff --git a/CLAUDE.md b/CLAUDE.md index 492b11dc0..9c1c60571 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -69,19 +69,46 @@ Pre-built instrumentations: `prometheus-metrics-instrumentation-jvm`, `-caffeine ## Code Style - **Formatter**: Google Java Format (enforced via Spotless) -- **Line length**: 100 characters +- **Line length**: 100 characters (enforced for ALL files including Markdown, Java, YAML, etc.) - **Indentation**: 2 spaces - **Static analysis**: Error Prone with NullAway (`io.prometheus.metrics` package) - **Logger naming**: Logger fields must be named `logger` (not `log`, `LOG`, or `LOGGER`) - **Assertions in tests**: Use static imports from AssertJ (`import static org.assertj.core.api.Assertions.assertThat`) - **Empty catch blocks**: Use `ignored` as the exception variable name +- **Markdown code blocks**: Always specify language (e.g., ` ```java`, ` ```bash`, ` ```text`) ## Linting and Validation -- **IMPORTANT**: Always run `mise run build` after modifying Java files to ensure all lints, code formatting (Spotless), static analysis (Error Prone), and checkstyle checks pass -- **IMPORTANT**: Always run `mise run lint:super-linter` after modifying non-Java files (YAML, Markdown, shell scripts, JSON, etc.) -- Super-linter is configured to only show ERROR-level messages via `LOG_LEVEL=ERROR` in `.github/super-linter.env` -- Local super-linter version is pinned to match CI (see `.mise/tasks/lint/super-linter.sh`) +**CRITICAL**: These checks MUST be run before creating any commits. CI will fail if these checks fail. + +### Java Files + +- **ALWAYS** run `mise run build` after modifying Java files to ensure: + - Code formatting (Spotless with Google Java Format) + - Static analysis (Error Prone with NullAway) + - Checkstyle validation + - Build succeeds (tests are skipped; run `mise run test` or `mise run test-all` to execute tests) + +### Non-Java Files (Markdown, YAML, JSON, shell scripts, etc.) + +- **ALWAYS** run `mise run lint:super-linter` after modifying non-Java files +- Super-linter will **auto-fix** many issues (formatting, trailing whitespace, etc.) +- It only reports ERROR-level issues (configured via `LOG_LEVEL=ERROR` in `.github/super-linter.env`) +- Common issues caught: + - Lines exceeding 100 characters in Markdown files + - Missing language tags in fenced code blocks + - Table formatting issues + - YAML/JSON syntax errors + +### Running Linters + +```bash +# After modifying Java files (run BEFORE committing) +mise run build + +# After modifying non-Java files (run BEFORE committing) +mise run lint:super-linter +``` ## Testing diff --git a/docs/content/getting-started/metric-types.md b/docs/content/getting-started/metric-types.md index 46d53ece1..844d63a9c 100644 --- a/docs/content/getting-started/metric-types.md +++ b/docs/content/getting-started/metric-types.md @@ -121,6 +121,94 @@ for [Histogram.Builder](/client_java/api/io/prometheus/metrics/core/metrics/Hist for a complete list of options. Some options can be configured at runtime, see [config]({{< relref "../config/config.md" >}}). +### Custom Bucket Boundaries + +The default bucket boundaries are designed for measuring request durations in seconds. For other +use cases, you may want to define custom bucket boundaries. The histogram builder provides three +methods for this: + +**1. Arbitrary Custom Boundaries** + +Use `classicUpperBounds(...)` to specify arbitrary bucket boundaries: + +```java +Histogram responseSize = Histogram.builder() + .name("http_response_size_bytes") + .help("HTTP response size in bytes") + .classicUpperBounds(100, 1000, 10000, 100000, 1000000) // bytes + .register(); +``` + +**2. Linear Boundaries** + +Use `classicLinearUpperBounds(start, width, count)` for equal-width buckets: + +```java +Histogram queueSize = Histogram.builder() + .name("queue_size") + .help("Number of items in queue") + .classicLinearUpperBounds(10, 10, 10) // 10, 20, 30, ..., 100 + .register(); +``` + +**3. Exponential Boundaries** + +Use `classicExponentialUpperBounds(start, factor, count)` for exponential growth: + +```java +Histogram dataSize = Histogram.builder() + .name("data_size_bytes") + .help("Data size in bytes") + .classicExponentialUpperBounds(100, 10, 5) // 100, 1k, 10k, 100k, 1M + .register(); +``` + +### Native Histograms with Custom Buckets (NHCB) + +Prometheus supports a special mode called Native Histograms with Custom Buckets (NHCB) that uses +schema -53. In this mode, custom bucket boundaries from classic histograms are preserved when +converting to native histograms. + +The Java client library automatically supports NHCB: + +1. By default, histograms maintain both classic (with custom buckets) and native representations +2. The classic representation with custom buckets is exposed to Prometheus +3. Prometheus servers can convert these to NHCB upon ingestion when configured with the + `convert_classic_histograms_to_nhcb` scrape option + +Example: + +```java +// This histogram will work seamlessly with NHCB +Histogram apiLatency = Histogram.builder() + .name("api_request_duration_seconds") + .help("API request duration") + .classicUpperBounds(0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0) // custom boundaries + .register(); +``` + +On the Prometheus side, configure the scrape job: + +```yaml +scrape_configs: + - job_name: "my-app" + scrape_protocols: ["PrometheusProto"] + convert_classic_histograms_to_nhcb: true + static_configs: + - targets: ["localhost:9400"] +``` + +{{< hint type=note >}} +NHCB is useful when: + +- You need precise bucket boundaries for your specific use case +- You're migrating from classic histograms and want to preserve bucket boundaries +- Exponential bucketing from standard native histograms isn't a good fit for your distribution + {{< /hint >}} + +See [examples/example-custom-buckets](https://github.com/prometheus/client_java/tree/main/examples/example-custom-buckets) +for a complete example with Prometheus and Grafana. + Histograms and summaries are both used for observing distributions. Therefore, the both implement the `DistributionDataPoint` interface. Using the `DistributionDataPoint` interface directly gives you the option to switch between histograms and summaries later with minimal code changes. diff --git a/examples/example-custom-buckets/README.md b/examples/example-custom-buckets/README.md new file mode 100644 index 000000000..a7a6a8564 --- /dev/null +++ b/examples/example-custom-buckets/README.md @@ -0,0 +1,170 @@ +# Native Histograms with Custom Buckets (NHCB) Example + +This example demonstrates how to use native histograms with custom bucket boundaries (NHCB) in +Prometheus Java client. It shows three different types of custom bucket configurations and how +Prometheus converts them to native histograms with schema -53. + +## What are Native Histograms with Custom Buckets? + +Native Histograms with Custom Buckets (NHCB) is a Prometheus feature that combines the benefits of: + +- **Custom bucket boundaries**: Precisely defined buckets optimized for your specific use case +- **Native histograms**: Efficient storage and querying capabilities of native histograms + +When you configure Prometheus with `convert_classic_histograms_to_nhcb: true`, it converts classic +histograms with custom buckets into native histograms using schema -53, preserving the custom +bucket boundaries. + +## Example Metrics + +This example application generates three different histogram metrics demonstrating different +bucket configuration strategies: + +### 1. API Latency - Arbitrary Custom Boundaries + +```java +Histogram apiLatency = Histogram.builder() + .name("api_request_duration_seconds") + .classicUpperBounds(0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0) + .register(); +``` + +**Use case**: Optimized for typical API response times in seconds. + +### 2. Queue Size - Linear Boundaries + +```java +Histogram queueSize = Histogram.builder() + .name("message_queue_size") + .classicLinearUpperBounds(10, 10, 10) // 10, 20, 30, ..., 100 + .register(); +``` + +**Use case**: Equal-width buckets for monitoring queue depth or other discrete values. + +### 3. Response Size - Exponential Boundaries + +```java +Histogram responseSize = Histogram.builder() + .name("http_response_size_bytes") + .classicExponentialUpperBounds(100, 10, 6) // 100, 1k, 10k, 100k, 1M, 10M + .register(); +``` + +**Use case**: Data spanning multiple orders of magnitude (bytes, milliseconds, etc). + +## Build + +This example is built as part of the `client_java` project: + +```shell +./mvnw package +``` + +This creates `./examples/example-custom-buckets/target/example-custom-buckets.jar`. + +## Run + +With the JAR file present, run: + +```shell +cd ./examples/example-custom-buckets/ +docker-compose up +``` + +This starts three Docker containers: + +- **[http://localhost:9400/metrics](http://localhost:9400/metrics)** - Example application +- **[http://localhost:9090](http://localhost:9090)** - Prometheus server (with NHCB enabled) +- **[http://localhost:3000](http://localhost:3000)** - Grafana (user: _admin_, password: _admin_) + +You might need to replace `localhost` with `host.docker.internal` on macOS or Windows. + +## Verify NHCB Conversion + +### 1. Check Prometheus Configuration + +The Prometheus configuration enables NHCB conversion: + +```yaml +scrape_configs: + - job_name: "custom-buckets-demo" + scrape_protocols: ["PrometheusProto"] + convert_classic_histograms_to_nhcb: true + scrape_classic_histograms: true +``` + +### 2. Verify in Prometheus + +Visit [http://localhost:9090](http://localhost:9090) and run queries: + +```promql +# View histogram metadata (should show schema -53 for NHCB) +prometheus_tsdb_head_series + +# Calculate quantiles from custom buckets +histogram_quantile(0.95, rate(api_request_duration_seconds[1m])) + +# View raw histogram structure +api_request_duration_seconds +``` + +### 3. View in Grafana + +The Grafana dashboard at [http://localhost:3000](http://localhost:3000) shows: + +- p95 and p50 latencies for API endpoints (arbitrary custom buckets) +- Queue size distribution (linear buckets) +- Response size distribution (exponential buckets) + +## Key Observations + +1. **Custom Buckets Preserved**: The custom bucket boundaries you define are preserved when + converted to NHCB (schema -53). + +2. **Dual Representation**: By default, histograms maintain both classic and native + representations, allowing gradual migration. + +3. **Efficient Storage**: Native histograms provide more efficient storage than classic histograms + while preserving your custom bucket boundaries. + +4. **Flexible Bucket Strategies**: You can choose arbitrary, linear, or exponential buckets based + on your specific monitoring needs. + +## When to Use Custom Buckets + +Consider using custom buckets (and NHCB) when: + +- **Precise boundaries needed**: You know the expected distribution and want specific bucket edges +- **Migrating from classic histograms**: You want to preserve existing bucket boundaries +- **Specific use cases**: Default exponential bucketing doesn't fit your distribution well + - Temperature ranges (might include negative values) + - Queue depths (discrete values with linear growth) + - File sizes (exponential growth but with specific thresholds) + - API latencies (specific SLA boundaries) + +## Differences from Standard Native Histograms + +| Feature | Standard Native Histograms | NHCB (Schema -53) | +| ----------------- | ------------------------------- | --------------------------------- | +| Bucket boundaries | Exponential (base 2^(2^-scale)) | Custom boundaries | +| Use case | General-purpose | Specific distributions | +| Mergeability | Can merge with same schema | Cannot merge different boundaries | +| Configuration | Schema level (0-8) | Explicit boundary list | + +## Cleanup + +Stop the containers: + +```shell +docker-compose down +``` + +## Further Reading + + + + +- [Prometheus Native Histograms Specification](https://prometheus.io/docs/specs/native_histograms/) +- [Prometheus Java Client Documentation](https://prometheus.github.io/client_java/) +- [OpenTelemetry Exponential Histograms](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#exponentialhistogram) diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml new file mode 100644 index 000000000..7579faa3f --- /dev/null +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -0,0 +1,26 @@ +version: "3" +services: + example-application: + image: eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a + network_mode: host + volumes: + - ./target/example-custom-buckets.jar:/example-custom-buckets.jar + command: + - /opt/java/openjdk/bin/java + - -jar + - /example-custom-buckets.jar + prometheus: + image: prom/prometheus:v3.9.1@sha256:1f0f50f06acaceb0f5670d2c8a658a599affe7b0d8e78b898c1035653849a702 + network_mode: host + volumes: + - ./docker-compose/prometheus.yml:/prometheus.yml + command: + - --enable-feature=native-histograms + - --config.file=/prometheus.yml + grafana: + image: grafana/grafana:12.3.2@sha256:ba93c9d192e58b23e064c7f501d453426ccf4a85065bf25b705ab1e98602bfb1 + network_mode: host + volumes: + - ./docker-compose/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml + - ./docker-compose/grafana-dashboards.yaml:/etc/grafana/provisioning/dashboards/grafana-dashboards.yaml + - ./docker-compose/grafana-dashboard-custom-buckets.json:/etc/grafana/grafana-dashboard-custom-buckets.json diff --git a/examples/example-custom-buckets/docker-compose/grafana-dashboard-custom-buckets.json b/examples/example-custom-buckets/docker-compose/grafana-dashboard-custom-buckets.json new file mode 100644 index 000000000..11ae25775 --- /dev/null +++ b/examples/example-custom-buckets/docker-compose/grafana-dashboard-custom-buckets.json @@ -0,0 +1,349 @@ +{ + "annotations": { + "list": [] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "API request duration with custom bucket boundaries (0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0 seconds). Shows how custom buckets are preserved in NHCB (schema -53).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "tooltip": false, + "viz": false, + "legend": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, rate(api_request_duration_seconds[1m]))", + "instant": false, + "legendFormat": "{{endpoint}} {{status}} (p95)", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.5, rate(api_request_duration_seconds[1m]))", + "hide": false, + "instant": false, + "legendFormat": "{{endpoint}} {{status}} (p50)", + "range": true, + "refId": "B" + } + ], + "title": "API Latency - Custom Buckets (Arbitrary Boundaries)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Queue size with linear bucket boundaries (10, 20, 30, ..., 100). Demonstrates equal-width buckets for discrete values.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "tooltip": false, + "viz": false, + "legend": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 2, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, rate(message_queue_size[1m]))", + "instant": false, + "legendFormat": "{{queue_name}} (p95)", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.5, rate(message_queue_size[1m]))", + "hide": false, + "instant": false, + "legendFormat": "{{queue_name}} (p50)", + "range": true, + "refId": "B" + } + ], + "title": "Queue Size - Linear Buckets", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "HTTP response size with exponential bucket boundaries (100, 1k, 10k, 100k, 1M, 10M bytes). Shows exponential growth for data spanning multiple orders of magnitude.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "tooltip": false, + "viz": false, + "legend": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 3, + "options": { + "legend": { + "calcs": ["mean", "max"], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, rate(http_response_size_bytes[1m]))", + "instant": false, + "legendFormat": "{{endpoint}} (p95)", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.5, rate(http_response_size_bytes[1m]))", + "hide": false, + "instant": false, + "legendFormat": "{{endpoint}} (p50)", + "range": true, + "refId": "B" + } + ], + "title": "Response Size - Exponential Buckets", + "type": "timeseries" + } + ], + "refresh": "5s", + "schemaVersion": 39, + "tags": ["custom-buckets", "nhcb", "native-histogram"], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Native Histograms with Custom Buckets (NHCB)", + "uid": "custom-buckets-nhcb", + "version": 1, + "weekStart": "" +} diff --git a/examples/example-custom-buckets/docker-compose/grafana-dashboards.yaml b/examples/example-custom-buckets/docker-compose/grafana-dashboards.yaml new file mode 100644 index 000000000..3225b88ae --- /dev/null +++ b/examples/example-custom-buckets/docker-compose/grafana-dashboards.yaml @@ -0,0 +1,8 @@ +apiVersion: 1 + +providers: + - name: "Custom Buckets (NHCB) Example" + type: file + options: + path: /etc/grafana/grafana-dashboard-custom-buckets.json + foldersFromFilesStructure: false diff --git a/examples/example-custom-buckets/docker-compose/grafana-datasources.yaml b/examples/example-custom-buckets/docker-compose/grafana-datasources.yaml new file mode 100644 index 000000000..d442d28d2 --- /dev/null +++ b/examples/example-custom-buckets/docker-compose/grafana-datasources.yaml @@ -0,0 +1,7 @@ +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + uid: prometheus + url: http://localhost:9090 diff --git a/examples/example-custom-buckets/docker-compose/prometheus.yml b/examples/example-custom-buckets/docker-compose/prometheus.yml new file mode 100644 index 000000000..5c5782023 --- /dev/null +++ b/examples/example-custom-buckets/docker-compose/prometheus.yml @@ -0,0 +1,14 @@ +--- +global: + scrape_interval: 5s # very short interval for demo purposes + +scrape_configs: + - job_name: "custom-buckets-demo" + # Use protobuf format to receive native histogram data + scrape_protocols: ["PrometheusProto"] + # Convert classic histograms with custom buckets to NHCB (schema -53) + convert_classic_histograms_to_nhcb: true + # Also scrape classic histograms for comparison + scrape_classic_histograms: true + static_configs: + - targets: ["localhost:9400"] diff --git a/examples/example-custom-buckets/pom.xml b/examples/example-custom-buckets/pom.xml new file mode 100644 index 000000000..b7e104e5a --- /dev/null +++ b/examples/example-custom-buckets/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + + io.prometheus + examples + 1.5.0-SNAPSHOT + + + example-custom-buckets + + Example - Custom Buckets + + End-to-End example of Native Histograms with Custom Buckets (NHCB): Java app -> Prometheus -> Grafana + + + + + io.prometheus + prometheus-metrics-core + ${project.version} + + + io.prometheus + prometheus-metrics-instrumentation-jvm + ${project.version} + + + io.prometheus + prometheus-metrics-exporter-httpserver + ${project.version} + + + + + ${project.artifactId} + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + + + io.prometheus.metrics.examples.custombuckets.Main + + + + + + + + + diff --git a/examples/example-custom-buckets/src/main/java/io/prometheus/metrics/examples/custombuckets/Main.java b/examples/example-custom-buckets/src/main/java/io/prometheus/metrics/examples/custombuckets/Main.java new file mode 100644 index 000000000..3d286fdf0 --- /dev/null +++ b/examples/example-custom-buckets/src/main/java/io/prometheus/metrics/examples/custombuckets/Main.java @@ -0,0 +1,108 @@ +package io.prometheus.metrics.examples.custombuckets; + +import io.prometheus.metrics.core.metrics.Histogram; +import io.prometheus.metrics.exporter.httpserver.HTTPServer; +import io.prometheus.metrics.instrumentation.jvm.JvmMetrics; +import io.prometheus.metrics.model.snapshots.Unit; +import java.io.IOException; +import java.util.Random; + +/** + * Example demonstrating native histograms with custom buckets (NHCB). + * + *

This example shows three different types of custom bucket configurations: + * + *

    + *
  • API latency with arbitrary custom boundaries optimized for typical response times + *
  • Queue size with linear boundaries for equal-width buckets + *
  • Response size with exponential boundaries for data spanning multiple orders of magnitude + *
+ * + *

These histograms maintain both classic (with custom buckets) and native representations. When + * Prometheus is configured with {@code convert_classic_histograms_to_nhcb: true}, the custom bucket + * boundaries are preserved in the native histogram format (schema -53). + */ +public class Main { + + public static void main(String[] args) throws IOException, InterruptedException { + + JvmMetrics.builder().register(); + + // Example 1: API latency with arbitrary custom boundaries + // Optimized for typical API response times in seconds + Histogram apiLatency = + Histogram.builder() + .name("api_request_duration_seconds") + .help("API request duration with custom buckets") + .unit(Unit.SECONDS) + .classicUpperBounds(0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0) + .labelNames("endpoint", "status") + .register(); + + // Example 2: Queue size with linear boundaries + // Equal-width buckets for monitoring queue depth + Histogram queueSize = + Histogram.builder() + .name("message_queue_size") + .help("Number of messages in queue with linear buckets") + .classicLinearUpperBounds(10, 10, 10) // 10, 20, 30, ..., 100 + .labelNames("queue_name") + .register(); + + // Example 3: Response size with exponential boundaries + // Exponential growth for data spanning multiple orders of magnitude + Histogram responseSize = + Histogram.builder() + .name("http_response_size_bytes") + .help("HTTP response size in bytes with exponential buckets") + .classicExponentialUpperBounds(100, 10, 6) // 100, 1k, 10k, 100k, 1M, 10M + .labelNames("endpoint") + .register(); + + HTTPServer server = HTTPServer.builder().port(9400).buildAndStart(); + + System.out.println( + "HTTPServer listening on port http://localhost:" + server.getPort() + "/metrics"); + System.out.println("\nGenerating metrics with custom bucket configurations:"); + System.out.println("1. API latency: custom boundaries optimized for response times"); + System.out.println("2. Queue size: linear boundaries (10, 20, 30, ..., 100)"); + System.out.println("3. Response size: exponential boundaries (100, 1k, 10k, ..., 10M)"); + System.out.println("\nPrometheus will convert these to NHCB (schema -53) when configured.\n"); + + Random random = new Random(0); + + while (true) { + // Simulate API latency observations + // Fast endpoint: mostly < 100ms, occasionally slow + double fastLatency = Math.abs(random.nextGaussian() * 0.03 + 0.05); + String status = random.nextInt(100) < 95 ? "200" : "500"; + apiLatency.labelValues("/api/fast", status).observe(fastLatency); + + // Slow endpoint: typically 1-3 seconds + double slowLatency = Math.abs(random.nextGaussian() * 0.5 + 2.0); + apiLatency.labelValues("/api/slow", status).observe(slowLatency); + + // Simulate queue size observations + // Queue oscillates between 20-80 items + int queueDepth = 50 + (int) (random.nextGaussian() * 15); + queueDepth = Math.max(0, Math.min(100, queueDepth)); + queueSize.labelValues("default").observe(queueDepth); + + // Priority queue: usually smaller + int priorityQueueDepth = 10 + (int) (random.nextGaussian() * 5); + priorityQueueDepth = Math.max(0, Math.min(50, priorityQueueDepth)); + queueSize.labelValues("priority").observe(priorityQueueDepth); + + // Simulate response size observations + // Small responses: mostly < 10KB + double smallResponse = Math.abs(random.nextGaussian() * 2000 + 5000); + responseSize.labelValues("/api/summary").observe(smallResponse); + + // Large responses: can be up to several MB + double largeResponse = Math.abs(random.nextGaussian() * 200000 + 500000); + responseSize.labelValues("/api/download").observe(largeResponse); + + Thread.sleep(1000); + } + } +} diff --git a/examples/pom.xml b/examples/pom.xml index 5b93c068f..d0c364067 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -30,6 +30,7 @@ example-exporter-opentelemetry example-simpleclient-bridge example-native-histogram + example-custom-buckets example-prometheus-properties diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CustomBucketsHistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CustomBucketsHistogramTest.java new file mode 100644 index 000000000..347f775cf --- /dev/null +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CustomBucketsHistogramTest.java @@ -0,0 +1,470 @@ +package io.prometheus.metrics.core.metrics; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.Offset.offset; + +import io.prometheus.metrics.config.EscapingScheme; +import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; +import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; +import io.prometheus.metrics.model.snapshots.ClassicHistogramBucket; +import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets; +import io.prometheus.metrics.model.snapshots.HistogramSnapshot; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.stream.Collectors; +import org.junit.jupiter.api.Test; + +/** + * Comprehensive tests to verify that client_java supports native histograms with custom buckets + * (NHCB). + * + *

According to the Prometheus specification + * (https://prometheus.io/docs/specs/native_histograms/), native histograms with custom buckets + * (schema -53) are exposed as classic histograms with custom bucket boundaries. Prometheus servers + * can then convert these to NHCB upon ingestion when configured with + * convert_classic_histograms_to_nhcb. + * + *

These tests verify that: + * + *

    + *
  • Histograms with custom bucket boundaries can be created + *
  • Custom buckets are properly exposed in both text and protobuf formats + *
  • Both classic-only and dual (classic+native) histograms work with custom buckets + *
  • Various custom bucket configurations (linear, exponential, arbitrary) work correctly + *
+ * + *

See issue #1838 for more context. + */ +class CustomBucketsHistogramTest { + + @Test + void testCustomBucketsWithArbitraryBoundaries() { + // Create a histogram with arbitrary custom bucket boundaries + Histogram histogram = + Histogram.builder() + .name("http_request_duration_seconds") + .help("HTTP request duration with custom buckets") + .classicUpperBounds(0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0) + .build(); + + // Observe some values + histogram.observe(0.008); + histogram.observe(0.045); + histogram.observe(0.3); + histogram.observe(2.5); + histogram.observe(7.8); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify custom bucket boundaries are set correctly + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds) + .containsExactly(0.01, 0.05, 0.1, 0.5, 1.0, 5.0, 10.0, Double.POSITIVE_INFINITY); + + // Verify observations are distributed correctly across buckets + // Note: counts are non-cumulative (count for that specific bucket only) + ClassicHistogramBuckets buckets = data.getClassicBuckets(); + assertThat(buckets.getCount(0)).isEqualTo(1); // <= 0.01: (0.008) + assertThat(buckets.getCount(1)).isEqualTo(1); // (0.01, 0.05]: (0.045) + assertThat(buckets.getCount(2)).isEqualTo(0); // (0.05, 0.1]: none + assertThat(buckets.getCount(3)).isEqualTo(1); // (0.1, 0.5]: (0.3) + assertThat(buckets.getCount(4)).isEqualTo(0); // (0.5, 1.0]: none + assertThat(buckets.getCount(5)).isEqualTo(1); // (1.0, 5.0]: (2.5) + assertThat(buckets.getCount(6)).isEqualTo(1); // (5.0, 10.0]: (7.8) + assertThat(buckets.getCount(7)).isEqualTo(0); // (10.0, +Inf]: none + + // Verify count and sum + assertThat(data.getCount()).isEqualTo(5); + assertThat(data.getSum()).isCloseTo(10.653, offset(0.01)); + } + + @Test + void testCustomBucketsWithLinearBoundaries() { + // Create a histogram with linear custom bucket boundaries + // This represents a use case where equal-width buckets are needed + Histogram histogram = + Histogram.builder() + .name("queue_size") + .help("Queue size with linear buckets") + .classicLinearUpperBounds(10.0, 10.0, 10) // start=10, width=10, count=10 + .build(); + + // Observe some values + for (int i = 5; i <= 95; i += 10) { + histogram.observe(i); + } + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify linear bucket boundaries + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds) + .containsExactly( + 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, Double.POSITIVE_INFINITY); + + // Verify observations + assertThat(data.getCount()).isEqualTo(10); + } + + @Test + void testCustomBucketsWithExponentialBoundaries() { + // Create a histogram with exponential custom bucket boundaries + // This is useful for metrics that span multiple orders of magnitude + Histogram histogram = + Histogram.builder() + .name("response_size_bytes") + .help("Response size with exponential buckets") + .classicExponentialUpperBounds(100.0, 10.0, 5) // start=100, factor=10, count=5 + .build(); + + // Observe some values across different magnitudes + histogram.observe(50); + histogram.observe(500); + histogram.observe(5000); + histogram.observe(50000); + histogram.observe(500000); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify exponential bucket boundaries + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds) + .containsExactly(100.0, 1000.0, 10000.0, 100000.0, 1000000.0, Double.POSITIVE_INFINITY); + + // Verify observations + assertThat(data.getCount()).isEqualTo(5); + } + + @Test + void testCustomBucketsClassicOnlyHistogram() { + // Verify that custom buckets work with classic-only histograms + Histogram histogram = + Histogram.builder() + .name("test_classic_only") + .help("Classic-only histogram with custom buckets") + .classicOnly() + .classicUpperBounds(1.0, 5.0, 10.0) + .build(); + + histogram.observe(2.0); + histogram.observe(7.0); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify it's a classic-only histogram + assertThat(data.getNativeSchema()).isEqualTo(HistogramSnapshot.CLASSIC_HISTOGRAM); + + // Verify custom buckets + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds).containsExactly(1.0, 5.0, 10.0, Double.POSITIVE_INFINITY); + } + + @Test + void testCustomBucketsDualModeHistogram() { + // Verify that custom buckets work with dual-mode (classic+native) histograms + // This is the default mode and most relevant for NHCB support + Histogram histogram = + Histogram.builder() + .name("test_dual_mode") + .help("Dual-mode histogram with custom buckets") + .classicUpperBounds(0.1, 1.0, 10.0) + .build(); + + histogram.observe(0.5); + histogram.observe(5.0); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify it has both classic and native representations + assertThat(data.getClassicBuckets().size()).isGreaterThan(0); + assertThat(data.getNativeSchema()).isNotEqualTo(HistogramSnapshot.CLASSIC_HISTOGRAM); + + // Verify custom classic buckets + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds).containsExactly(0.1, 1.0, 10.0, Double.POSITIVE_INFINITY); + + // Verify native histogram is also populated + long nativeTotalCount = + data.getNativeBucketsForPositiveValues().stream() + .mapToLong(bucket -> bucket.getCount()) + .sum(); + assertThat(nativeTotalCount).isEqualTo(2); + } + + @Test + void testCustomBucketsTextFormatOutput() throws IOException { + // Verify that custom buckets are correctly serialized in text format + Histogram histogram = + Histogram.builder() + .name("test_custom_buckets") + .help("Test histogram with custom buckets") + .classicUpperBounds(0.5, 1.0, 2.0) + .build(); + + histogram.observe(0.3); + histogram.observe(0.7); + histogram.observe(1.5); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + OpenMetricsTextFormatWriter writer = new OpenMetricsTextFormatWriter(false, true); + writer.write(out, MetricSnapshots.of(histogram.collect()), EscapingScheme.ALLOW_UTF8); + + String output = out.toString(StandardCharsets.UTF_8); + + // Verify the output contains the custom bucket boundaries + assertThat(output).contains("le=\"0.5\""); + assertThat(output).contains("le=\"1.0\""); + assertThat(output).contains("le=\"2.0\""); + assertThat(output).contains("le=\"+Inf\""); + + // Verify bucket counts + assertThat(output).containsPattern("le=\"0.5\".*1"); // 1 observation <= 0.5 + assertThat(output).containsPattern("le=\"1.0\".*2"); // 2 observations <= 1.0 + assertThat(output).containsPattern("le=\"2.0\".*3"); // 3 observations <= 2.0 + assertThat(output).containsPattern("le=\"\\+Inf\".*3"); // 3 observations total + } + + @Test + void testCustomBucketsProtobufFormatOutput() { + // Verify that custom buckets are correctly serialized in Prometheus protobuf format + Histogram histogram = + Histogram.builder() + .name("test_custom_buckets_protobuf") + .help("Test histogram with custom buckets for protobuf") + .classicUpperBounds(1.0, 5.0, 10.0) + .build(); + + histogram.observe(0.5); + histogram.observe(3.0); + histogram.observe(7.0); + + HistogramSnapshot snapshot = histogram.collect(); + Metrics.MetricFamily metricFamily = + new PrometheusProtobufWriterImpl().convert(snapshot, EscapingScheme.ALLOW_UTF8); + + assertThat(metricFamily).isNotNull(); + assertThat(metricFamily.getName()).isEqualTo("test_custom_buckets_protobuf"); + assertThat(metricFamily.getType()).isEqualTo(Metrics.MetricType.HISTOGRAM); + + Metrics.Histogram protoHistogram = metricFamily.getMetric(0).getHistogram(); + + // Verify classic buckets in protobuf + assertThat(protoHistogram.getBucketCount()).isEqualTo(4); // 3 custom + +Inf + + // Verify bucket upper bounds + assertThat(protoHistogram.getBucket(0).getUpperBound()).isEqualTo(1.0); + assertThat(protoHistogram.getBucket(1).getUpperBound()).isEqualTo(5.0); + assertThat(protoHistogram.getBucket(2).getUpperBound()).isEqualTo(10.0); + assertThat(protoHistogram.getBucket(3).getUpperBound()).isEqualTo(Double.POSITIVE_INFINITY); + + // Verify bucket counts (cumulative) + assertThat(protoHistogram.getBucket(0).getCumulativeCount()).isEqualTo(1); // <= 1.0 + assertThat(protoHistogram.getBucket(1).getCumulativeCount()).isEqualTo(2); // <= 5.0 + assertThat(protoHistogram.getBucket(2).getCumulativeCount()).isEqualTo(3); // <= 10.0 + assertThat(protoHistogram.getBucket(3).getCumulativeCount()).isEqualTo(3); // +Inf + + // Verify native histogram fields are also present (for dual-mode) + assertThat(protoHistogram.hasSchema()).isTrue(); + assertThat(protoHistogram.getSchema()).isNotEqualTo(HistogramSnapshot.CLASSIC_HISTOGRAM); + } + + @Test + void testCustomBucketsWithNegativeValues() { + // Verify that custom buckets work correctly with negative values + Histogram histogram = + Histogram.builder() + .name("temperature_celsius") + .help("Temperature readings with custom buckets") + .classicUpperBounds(-20.0, -10.0, 0.0, 10.0, 20.0, 30.0) + .build(); + + histogram.observe(-15.0); + histogram.observe(-5.0); + histogram.observe(5.0); + histogram.observe(15.0); + histogram.observe(25.0); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify bucket boundaries + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds) + .containsExactly(-20.0, -10.0, 0.0, 10.0, 20.0, 30.0, Double.POSITIVE_INFINITY); + + // Verify observations are distributed correctly + // Note: counts are non-cumulative + ClassicHistogramBuckets buckets = data.getClassicBuckets(); + assertThat(buckets.getCount(0)).isEqualTo(0); // <= -20: none + assertThat(buckets.getCount(1)).isEqualTo(1); // (-20, -10]: (-15.0) + assertThat(buckets.getCount(2)).isEqualTo(1); // (-10, 0]: (-5.0) + assertThat(buckets.getCount(3)).isEqualTo(1); // (0, 10]: (5.0) + assertThat(buckets.getCount(4)).isEqualTo(1); // (10, 20]: (15.0) + assertThat(buckets.getCount(5)).isEqualTo(1); // (20, 30]: (25.0) + + assertThat(data.getCount()).isEqualTo(5); + } + + @Test + void testCustomBucketsWithLabels() { + // Verify that custom buckets work correctly with labeled histograms + Histogram histogram = + Histogram.builder() + .name("api_request_duration_seconds") + .help("API request duration with custom buckets") + .classicUpperBounds(0.01, 0.1, 1.0, 10.0) + .labelNames("method", "endpoint") + .build(); + + histogram.labelValues("GET", "/users").observe(0.05); + histogram.labelValues("GET", "/users").observe(0.5); + histogram.labelValues("POST", "/users").observe(2.0); + + HistogramSnapshot snapshot = histogram.collect(); + + // Verify we have 2 data points (one for each unique label combination) + assertThat(snapshot.getDataPoints()).hasSize(2); + + // Verify both data points have the correct custom buckets + for (HistogramSnapshot.HistogramDataPointSnapshot data : snapshot.getDataPoints()) { + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds).containsExactly(0.01, 0.1, 1.0, 10.0, Double.POSITIVE_INFINITY); + } + + // Verify GET /users data point + HistogramSnapshot.HistogramDataPointSnapshot getData = + getData(histogram, "method", "GET", "endpoint", "/users"); + + assertThat(getData.getCount()).isEqualTo(2); + + // Verify POST /users data point + HistogramSnapshot.HistogramDataPointSnapshot postData = + getData(histogram, "method", "POST", "endpoint", "/users"); + + assertThat(postData.getCount()).isEqualTo(1); + } + + private HistogramSnapshot.HistogramDataPointSnapshot getData( + Histogram histogram, String... labels) { + return histogram.collect().getDataPoints().stream() + .filter(d -> d.getLabels().equals(Labels.of(labels))) + .findAny() + .orElseThrow(() -> new RuntimeException("histogram with labels not found")); + } + + @Test + void testCustomBucketsBoundaryEdgeCases() { + // Test edge cases: observations exactly on bucket boundaries + Histogram histogram = + Histogram.builder() + .name("test_boundaries") + .help("Test bucket boundary edge cases") + .classicUpperBounds(1.0, 5.0, 10.0) + .build(); + + // Observe values exactly on the boundaries + histogram.observe(1.0); + histogram.observe(5.0); + histogram.observe(10.0); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Values on boundaries should be included in their respective buckets + // Buckets are inclusive of upper bound + // Note: counts are non-cumulative + ClassicHistogramBuckets buckets = data.getClassicBuckets(); + assertThat(buckets.getCount(0)).isEqualTo(1); // <= 1.0: (1.0) + assertThat(buckets.getCount(1)).isEqualTo(1); // (1.0, 5.0]: (5.0) + assertThat(buckets.getCount(2)).isEqualTo(1); // (5.0, 10.0]: (10.0) + + assertThat(data.getCount()).isEqualTo(3); + } + + @Test + void testCustomBucketsFineBoundaries() { + // Test with very fine-grained custom bucket boundaries + // This simulates a use case where precise bucket boundaries are needed + Histogram histogram = + Histogram.builder() + .name("precise_measurement") + .help("Histogram with fine-grained custom buckets") + .classicUpperBounds(0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01) + .build(); + + histogram.observe(0.0015); + histogram.observe(0.0045); + histogram.observe(0.0075); + + HistogramSnapshot snapshot = histogram.collect(); + HistogramSnapshot.HistogramDataPointSnapshot data = snapshot.getDataPoints().get(0); + + // Verify fine-grained buckets are set correctly + List upperBounds = + data.getClassicBuckets().stream() + .map(ClassicHistogramBucket::getUpperBound) + .collect(Collectors.toList()); + + assertThat(upperBounds) + .containsExactly( + 0.001, + 0.002, + 0.003, + 0.004, + 0.005, + 0.006, + 0.007, + 0.008, + 0.009, + 0.01, + Double.POSITIVE_INFINITY); + + // Verify observations are in correct buckets + // Note: counts are non-cumulative + ClassicHistogramBuckets buckets = data.getClassicBuckets(); + assertThat(buckets.getCount(0)).isEqualTo(0); // <= 0.001: none + assertThat(buckets.getCount(1)).isEqualTo(1); // (0.001, 0.002]: (0.0015) + assertThat(buckets.getCount(4)).isEqualTo(1); // (0.004, 0.005]: (0.0045) + assertThat(buckets.getCount(7)).isEqualTo(1); // (0.007, 0.008]: (0.0075) + + assertThat(data.getCount()).isEqualTo(3); + } +} From cdf4dcf60533775dbe177920741063bccbbc5f0b Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 5 Feb 2026 13:41:18 +0100 Subject: [PATCH 066/110] address todos (#1832) Signed-off-by: Gregor Zeitlinger --- .../ExporterOpenTelemetryProperties.java | 108 +++++++++++++++++- .../metrics/core/metrics/Histogram.java | 11 +- .../metrics/core/metrics/SlidingWindow.java | 12 +- .../metrics/core/metrics/Summary.java | 8 +- .../metrics/core/metrics/HistogramTest.java | 66 ++++++++++- .../PrometheusMetricProducer.java | 10 +- 6 files changed, 205 insertions(+), 10 deletions(-) diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java index be09b5a63..3e747d4d2 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java @@ -4,7 +4,33 @@ import java.util.Map; import javax.annotation.Nullable; -// TODO: JavaDoc is currently only in OpenTelemetryExporter.Builder. Look there for reference. +/** + * Properties for configuring the OpenTelemetry exporter. + * + *

These properties can be configured via {@code prometheus.properties}, system properties, or + * programmatically. + * + *

All properties are prefixed with {@code io.prometheus.exporter.opentelemetry}. + * + *

Available properties: + * + *

    + *
  • {@code protocol} - OTLP protocol: {@code "grpc"} or {@code "http/protobuf"} + *
  • {@code endpoint} - OTLP endpoint URL + *
  • {@code headers} - HTTP headers for outgoing requests + *
  • {@code intervalSeconds} - Export interval in seconds + *
  • {@code timeoutSeconds} - Request timeout in seconds + *
  • {@code serviceName} - Service name resource attribute + *
  • {@code serviceNamespace} - Service namespace resource attribute + *
  • {@code serviceInstanceId} - Service instance ID resource attribute + *
  • {@code serviceVersion} - Service version resource attribute + *
  • {@code resourceAttributes} - Additional resource attributes + *
+ * + * @see OpenTelemetry + * SDK Environment Variables + */ public class ExporterOpenTelemetryProperties { // See @@ -153,6 +179,14 @@ public static class Builder { private Builder() {} + /** + * The OTLP protocol to use. + * + *

Supported values: {@code "grpc"} or {@code "http/protobuf"}. + * + *

See OpenTelemetry's OTEL_EXPORTER_OTLP_PROTOCOL. + */ public Builder protocol(String protocol) { if (!protocol.equals("grpc") && !protocol.equals("http/protobuf")) { throw new IllegalArgumentException( @@ -162,17 +196,43 @@ public Builder protocol(String protocol) { return this; } + /** + * The OTLP endpoint to send metric data to. + * + *

The default depends on the protocol: + * + *

    + *
  • {@code "grpc"}: {@code "http://localhost:4317"} + *
  • {@code "http/protobuf"}: {@code "http://localhost:4318/v1/metrics"} + *
+ * + *

See OpenTelemetry's OTEL_EXPORTER_OTLP_METRICS_ENDPOINT. + */ public Builder endpoint(String endpoint) { this.endpoint = endpoint; return this; } - /** Add a request header. Call multiple times to add multiple headers. */ + /** + * Add an HTTP header to be applied to outgoing requests. Call multiple times to add multiple + * headers. + * + *

See OpenTelemetry's OTEL_EXPORTER_OTLP_HEADERS. + */ public Builder header(String name, String value) { this.headers.put(name, value); return this; } + /** + * The interval between the start of two export attempts. Default is 60 seconds. + * + *

Like OpenTelemetry's OTEL_METRIC_EXPORT_INTERVAL + * (which defaults to 60000 milliseconds), but specified in seconds rather than milliseconds. + */ public Builder intervalSeconds(int intervalSeconds) { if (intervalSeconds <= 0) { throw new IllegalArgumentException(intervalSeconds + ": Expecting intervalSeconds > 0"); @@ -181,6 +241,13 @@ public Builder intervalSeconds(int intervalSeconds) { return this; } + /** + * The timeout for outgoing requests. Default is 10. + * + *

Like OpenTelemetry's OTEL_EXPORTER_OTLP_METRICS_TIMEOUT, + * but in seconds rather than milliseconds. + */ public Builder timeoutSeconds(int timeoutSeconds) { if (timeoutSeconds <= 0) { throw new IllegalArgumentException(timeoutSeconds + ": Expecting timeoutSeconds > 0"); @@ -189,26 +256,63 @@ public Builder timeoutSeconds(int timeoutSeconds) { return this; } + /** + * The {@code service.name} resource attribute. + * + *

If not explicitly specified, {@code client_java} will try to initialize it with a + * reasonable default, like the JAR file name. + * + *

See {@code service.name} in OpenTelemetry's Resource + * Semantic Conventions. + */ public Builder serviceName(String serviceName) { this.serviceName = serviceName; return this; } + /** + * The {@code service.namespace} resource attribute. + * + *

See {@code service.namespace} in OpenTelemetry's Resource + * Semantic Conventions. + */ public Builder serviceNamespace(String serviceNamespace) { this.serviceNamespace = serviceNamespace; return this; } + /** + * The {@code service.instance.id} resource attribute. + * + *

See {@code service.instance.id} in OpenTelemetry's Resource + * Semantic Conventions. + */ public Builder serviceInstanceId(String serviceInstanceId) { this.serviceInstanceId = serviceInstanceId; return this; } + /** + * The {@code service.version} resource attribute. + * + *

See {@code service.version} in OpenTelemetry's Resource + * Semantic Conventions. + */ public Builder serviceVersion(String serviceVersion) { this.serviceVersion = serviceVersion; return this; } + /** + * Add a resource attribute. Call multiple times to add multiple resource attributes. + * + *

See OpenTelemetry's OTEL_RESOURCE_ATTRIBUTES. + */ public Builder resourceAttribute(String name, String value) { this.resourceAttributes.put(name, value); return this; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java index 85f6225d3..5a8265e08 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java @@ -962,11 +962,18 @@ public Builder nativeMaxNumberOfBuckets(int nativeMaxBuckets) { *

Default is no reset. */ public Builder nativeResetDuration(long duration, TimeUnit unit) { - // TODO: reset interval isn't tested yet if (duration <= 0) { throw new IllegalArgumentException(duration + ": value > 0 expected"); } - nativeResetDurationSeconds = unit.toSeconds(duration); + long seconds = unit.toSeconds(duration); + if (seconds == 0) { + throw new IllegalArgumentException( + duration + + " " + + unit + + ": duration must be at least 1 second. Sub-second durations are not supported."); + } + nativeResetDurationSeconds = seconds; return this; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java index 5360e3349..e56134d5d 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java @@ -15,8 +15,16 @@ *

It is implemented in a generic way so that 3rd party libraries can use it for implementing * sliding windows. * - *

TODO: The current implementation is {@code synchronized}. There is likely room for - * optimization. + *

Thread Safety: This class uses coarse-grained {@code synchronized} methods for + * simplicity and correctness. All public methods ({@link #current()} and {@link #observe(double)}) + * are synchronized, which ensures thread-safe access to the ring buffer and rotation logic. + * + *

Performance Note: The synchronized approach may cause contention under high-frequency + * observations. + * + *

However, given that Summary metrics are less commonly used (Histogram is generally preferred), + * and the observation frequency is typically lower than Counter increments, the current + * implementation provides an acceptable trade-off between simplicity and performance. */ public class SlidingWindow { diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java index 7d964dbb6..7a8fffe04 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java @@ -202,7 +202,13 @@ private void doObserve(double amount) { private SummarySnapshot.SummaryDataPointSnapshot collect(Labels labels) { return buffer.run( expectedCount -> count.sum() == expectedCount, - // TODO Exemplars (are hard-coded as empty in the line below) + // Note: Exemplars are currently hard-coded as empty for Summary metrics. + // While exemplars are sampled during observe() and observeWithExemplar() calls + // via the exemplarSampler field, they are not included in the snapshot to maintain + // consistency with the buffering mechanism. The buffer.run() ensures atomic + // collection of count, sum, and quantiles. Adding exemplars would require + // coordination between the buffer and exemplarSampler, which could impact + // performance. Consider using Histogram instead if exemplars are needed. () -> new SummarySnapshot.SummaryDataPointSnapshot( count.sum(), diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java index a305536bc..c67c9dd42 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/HistogramTest.java @@ -1423,7 +1423,7 @@ void testObserve() { @Test // See https://github.com/prometheus/client_java/issues/646 - public void testNegativeAmount() { + void testNegativeAmount() { Histogram histogram = Histogram.builder() .name("histogram") @@ -1565,6 +1565,70 @@ void testObserveMultithreaded() assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue(); } + @Test + void testNativeResetDuration() { + // Test that nativeResetDuration can be configured without error and the histogram + // functions correctly. The reset duration schedules internal reset behavior but + // is not directly observable in the snapshot. + Histogram histogram = + Histogram.builder() + .name("test_histogram_with_reset") + .nativeOnly() + .nativeResetDuration(24, TimeUnit.HOURS) + .build(); + + histogram.observe(1.0); + histogram.observe(2.0); + histogram.observe(3.0); + + HistogramSnapshot snapshot = histogram.collect(); + assertThat(snapshot.getDataPoints()).hasSize(1); + HistogramSnapshot.HistogramDataPointSnapshot dataPoint = snapshot.getDataPoints().get(0); + assertThat(dataPoint.hasNativeHistogramData()).isTrue(); + assertThat(dataPoint.getCount()).isEqualTo(3); + assertThat(dataPoint.getSum()).isEqualTo(6.0); + } + + @Test + void testNativeResetDurationNegativeValue() { + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy( + () -> + Histogram.builder() + .name("test_histogram") + .nativeOnly() + .nativeResetDuration(-1, TimeUnit.HOURS) + .build()) + .withMessageContaining("value > 0 expected"); + } + + @Test + void testNativeResetDurationZeroValue() { + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy( + () -> + Histogram.builder() + .name("test_histogram") + .nativeOnly() + .nativeResetDuration(0, TimeUnit.HOURS) + .build()) + .withMessageContaining("value > 0 expected"); + } + + @Test + void testNativeResetDurationSubSecond() { + // Sub-second durations should be rejected as they truncate to 0 seconds + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy( + () -> + Histogram.builder() + .name("test_histogram") + .nativeOnly() + .nativeResetDuration(500, TimeUnit.MILLISECONDS) + .build()) + .withMessageContaining("duration must be at least 1 second"); + } + private HistogramSnapshot.HistogramDataPointSnapshot getData( Histogram histogram, String... labels) { return histogram.collect().getDataPoints().stream() diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java index 54aa5135a..9344fc4db 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/PrometheusMetricProducer.java @@ -41,8 +41,14 @@ public PrometheusMetricProducer( @Override public Collection collectAllMetrics() { - // TODO: We could add a filter configuration for the OpenTelemetry exporter and call - // registry.scrape(filter) if a filter is configured, like in the Servlet exporter. + // Note: Currently all metrics from the registry are exported. To add metric filtering + // similar to the Servlet exporter, one could: + // 1. Add filter properties to ExporterOpenTelemetryProperties (allowedNames, excludedNames, + // etc.) + // 2. Convert these properties to a Predicate using MetricNameFilter.builder() + // 3. Call registry.scrape(filter) instead of registry.scrape() + // OpenTelemetry also provides its own Views API for filtering and aggregation, which may be + // preferred for OpenTelemetry-specific deployments. MetricSnapshots snapshots = registry.scrape(); Resource resourceWithTargetInfo = resource.merge(resourceFromTargetInfo(snapshots)); InstrumentationScopeInfo scopeFromInfo = instrumentationScopeFromOtelScopeInfo(snapshots); From 42c1fb3fda3b302b3aed6e6be8f32c8ba8384064 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 5 Feb 2026 17:58:02 +0100 Subject: [PATCH 067/110] re-use super linter script (#1847) Signed-off-by: Gregor Zeitlinger --- .editorconfig | 4 ++-- .github/{ => config}/super-linter.env | 0 .github/renovate.json5 | 24 +++---------------- .github/workflows/acceptance-tests.yml | 3 --- .github/workflows/build.yml | 3 --- .github/workflows/github-pages.yaml | 2 -- .../workflows/java-version-matrix-tests.yml | 5 +--- .github/workflows/lint-rest.yml | 3 --- .github/workflows/native-tests.yml | 2 -- .github/workflows/nightly-benchmarks.yml | 3 --- .github/workflows/release.yml | 2 -- .github/workflows/super-linter.yml | 11 ++------- .github/workflows/test-release-build.yml | 3 --- .mise/tasks/lint/super-linter.sh | 19 --------------- mise.toml | 8 +++++++ 15 files changed, 16 insertions(+), 76 deletions(-) rename .github/{ => config}/super-linter.env (100%) delete mode 100755 .mise/tasks/lint/super-linter.sh diff --git a/.editorconfig b/.editorconfig index 355cca83e..1cf9052df 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,10 +4,10 @@ root = true max_line_length = 100 indent_size = 2 -[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,.gitleaksignore,*.json5}] +[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,.gitleaksignore}] max_line_length = 200 -[{grafana-dashboard-*.json,.editorconfig,super-linter.env}] +[{grafana-dashboard-*.json,.editorconfig,super-linter.env,renovate.json5}] max_line_length = 300 [pom.xml] diff --git a/.github/super-linter.env b/.github/config/super-linter.env similarity index 100% rename from .github/super-linter.env rename to .github/config/super-linter.env diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 20a6be197..bcf6643d1 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -11,11 +11,6 @@ ], labels: ["dependencies"], packageRules: [ - { - matchPackageNames: ["jdx/mise"], - groupName: "mise", - schedule: ["before 4am on monday"], - }, { matchFileNames: ["mise.toml"], matchDepNames: ["java"], @@ -28,26 +23,13 @@ groupName: "java graalvm", additionalBranchPrefix: "graalvm-", }, - { - matchPackageNames: ["/^(ghcr.io/)?super-linter/super-linter$/"], - groupName: "super-linter", - }, ], customManagers: [ { customType: "regex", - description: "update mise", - managerFilePatterns: ["/(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$/", "/(^|/)action\\.ya?ml$/"], - datasourceTemplate: "github-release-attachments", - packageNameTemplate: "jdx/mise", - depNameTemplate: "mise", - matchStrings: ["jdx/mise-action.*\\n\\s*with:\\s*\\n\\s*version: [\"']?(?v[.\\d]+)[\"']?\\s*\\n\\s*sha256: [\"']?(?\\w+)[\"']?"], - }, - { - customType: "regex", - description: "update super-linter in mise tasks", - managerFilePatterns: ["/^\\.mise/tasks/.+\\.sh$/"], - matchStrings: ['# renovate: datasource=(?\\S+) depName=(?\\S+)\\s+\\S+_VERSION="(?v\\d+\\.\\d+\\.\\d+)@(?sha256:[a-f0-9]+)"'], + description: "Update _VERSION variables in mise.toml", + managerFilePatterns: ["/^mise\\.toml$/"], + matchStrings: ['# renovate: datasource=(?[a-z-]+?)(?: depName=(?.+?))?(?: packageName=(?.+?))?(?: versioning=(?[a-z-]+?))?\\s.+?_VERSION="?(?[^@"]+?)(?:@(?sha256:[a-f0-9]+))?"?\\s'], }, ], } diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 3c7bf414e..977973f3b 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -14,8 +14,5 @@ jobs: persist-credentials: false uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Run acceptance tests run: mise run acceptance-test diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b8cf9ecaf..e5b1980e8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,9 +13,6 @@ jobs: with: persist-credentials: false - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index e0582dd24..37cc39f37 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -39,8 +39,6 @@ jobs: fetch-depth: 0 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 cache: "false" - name: Setup Pages id: pages diff --git a/.github/workflows/java-version-matrix-tests.yml b/.github/workflows/java-version-matrix-tests.yml index 93099d3c5..d476e7bb7 100644 --- a/.github/workflows/java-version-matrix-tests.yml +++ b/.github/workflows/java-version-matrix-tests.yml @@ -33,9 +33,6 @@ jobs: - name: Set up mise uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 @@ -81,4 +78,4 @@ jobs: TEST_MODULES="it-exporter/it-exporter-test,it-exporter/it-no-protobuf-test,it-pushgateway" fi mise exec -- ../mvnw verify -T 2C -Dspotless.skip=true -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn \ - -pl $TEST_MODULES \ No newline at end of file + -pl $TEST_MODULES diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 236fac334..4ae5b0f5a 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -20,9 +20,6 @@ jobs: fetch-depth: 0 # needed for merge-base used in lint:links-in-modified-files uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Lint for pull requests if: github.event_name == 'pull_request' diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index e773230a4..b93edab06 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -15,8 +15,6 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 working_directory: .mise/envs/native - name: Run native tests working-directory: .mise/envs/native diff --git a/.github/workflows/nightly-benchmarks.yml b/.github/workflows/nightly-benchmarks.yml index 7c7eb960b..4ee4adbc5 100644 --- a/.github/workflows/nightly-benchmarks.yml +++ b/.github/workflows/nightly-benchmarks.yml @@ -35,9 +35,6 @@ jobs: - name: Setup mise uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 551b323ea..e950b4b36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,8 +26,6 @@ jobs: - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 cache: false - name: Build release version diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml index 9ea584d5a..332221bf7 100644 --- a/.github/workflows/super-linter.yml +++ b/.github/workflows/super-linter.yml @@ -9,9 +9,6 @@ jobs: permissions: contents: read - packages: read - # To report GitHub Actions status checks - statuses: write steps: - name: Checkout code @@ -20,11 +17,7 @@ jobs: persist-credentials: false fetch-depth: 0 - - name: Load super-linter configuration - run: grep -v '^#' .github/super-linter.env | grep -v 'FIX_' >> "$GITHUB_ENV" + - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - name: Super-linter - uses: super-linter/super-linter@12562e48d7059cf666c43a4ecb0d3b5a2b31bd9e # v8.4.0 - env: - # To report GitHub Actions status checks - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: mise run lint:super-linter --no-fix diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index c8f1794d5..2d7d27ef3 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -19,9 +19,6 @@ jobs: fetch-tags: "true" fetch-depth: 0 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - with: - version: v2026.2.0 - sha256: 7e1cd2dc33f6ebc9f33c1911013ed92bf724cf63ece21f284aaa4b34987e5002 - name: Cache local Maven repository uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 with: diff --git a/.mise/tasks/lint/super-linter.sh b/.mise/tasks/lint/super-linter.sh deleted file mode 100755 index dbaa4df04..000000000 --- a/.mise/tasks/lint/super-linter.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -#MISE description="Run GitHub Super Linter on the repository" - -set -euo pipefail - -# renovate: datasource=docker depName=ghcr.io/super-linter/super-linter -SUPER_LINTER_VERSION="v8.4.0@sha256:c5e3307932203ff9e1e8acfe7e92e894add6266605b5d7fb525fb371a59a26f4" - -# Super-linter doesn't publish ARM64 images, so always use amd64 -docker pull --platform linux/amd64 "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" - -docker run --rm \ - --platform linux/amd64 \ - -e RUN_LOCAL=true \ - -e DEFAULT_BRANCH=main \ - --env-file ".github/super-linter.env" \ - -v "$(pwd)":/tmp/lint \ - "ghcr.io/super-linter/super-linter:${SUPER_LINTER_VERSION}" diff --git a/mise.toml b/mise.toml index 64e60b2bb..267937d05 100644 --- a/mise.toml +++ b/mise.toml @@ -5,6 +5,10 @@ java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" protoc = "33.5" +[env] +# renovate: datasource=docker depName=ghcr.io/super-linter/super-linter +SUPER_LINTER_VERSION="v8.4.0@sha256:c5e3307932203ff9e1e8acfe7e92e894add6266605b5d7fb525fb371a59a26f4" + [tasks.ci] description = "CI Build" run = "./mvnw clean install" @@ -43,6 +47,10 @@ run = "./mvnw verify" description = "build all modules without tests" run = "./mvnw install -DskipTests -Dcoverage.skip=true" +[tasks."lint:super-linter"] +description = "Run Super-Linter with auto-fix on the repository" +file = "https://raw.githubusercontent.com/grafana/docker-otel-lgtm/main/.mise/tasks/lint/super-linter.sh" + [tasks."lint:rest"] description = "All lints not covered by super linter" depends = ["lint:links", "lint:bom"] From 39b7be77c78d870ade240791d6066f1b7464fdfa Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 5 Feb 2026 19:52:28 +0100 Subject: [PATCH 068/110] clean up link checking (#1850) Signed-off-by: Gregor Zeitlinger --- .github/workflows/lint-rest.yml | 5 +-- .mise/tasks/lint/links-in-modified-files.sh | 39 --------------------- .mise/tasks/lint/links.sh | 14 -------- .mise/tasks/lint/local-links.sh | 14 -------- mise.toml | 23 +++++++++++- 5 files changed, 23 insertions(+), 72 deletions(-) delete mode 100755 .mise/tasks/lint/links-in-modified-files.sh delete mode 100755 .mise/tasks/lint/links.sh delete mode 100755 .mise/tasks/lint/local-links.sh diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 4ae5b0f5a..89acf1dad 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -27,7 +27,4 @@ jobs: GITHUB_TOKEN: ${{ github.token }} GITHUB_BASE_REF: ${{ github.base_ref }} GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }} - run: | - mise run lint:bom - mise run lint:local-links - mise run lint:links-in-modified-files --base origin/"${GITHUB_BASE_REF}" --head "${GITHUB_HEAD_SHA}" + run: mise run lint:rest-ci diff --git a/.mise/tasks/lint/links-in-modified-files.sh b/.mise/tasks/lint/links-in-modified-files.sh deleted file mode 100755 index 3b39a133d..000000000 --- a/.mise/tasks/lint/links-in-modified-files.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash -#MISE description="Lint links in modified files" - -set -e - -#USAGE flag "--base " help="base branch to compare against (default: origin/main)" default="origin/main" -#USAGE flag "--head " help="head branch to compare against (empty for local changes) (default: empty)" default="" - -# shellcheck disable=SC2154 -if [ "$usage_head" = "''" ]; then - usage_head="" -fi - -# Check if lychee config was modified -# - because usage_head may be empty -# shellcheck disable=SC2086,SC2154 -config_modified=$(git diff --name-only --merge-base "$usage_base" $usage_head | - grep -E '^(\.github/config/lychee\.toml|\.mise/tasks/lint/.*|mise\.toml)$' || true) - -if [ -n "$config_modified" ]; then - echo "config changes, checking all files." - mise run lint:links -else - # Using lychee's default extension filter here to match when it runs against all files - # Note: --diff-filter=d filters out deleted files - # - because usage_head may be empty - # shellcheck disable=SC2086 - modified_files=$(git diff --name-only --diff-filter=d "$usage_base" $usage_head | - grep -E '\.(md|mkd|mdx|mdown|mdwn|mkdn|mkdown|markdown|html|htm|txt)$' | - tr '\n' ' ' || true) - - if [ -z "$modified_files" ]; then - echo "No modified files, skipping link linting." - exit 0 - fi - - # shellcheck disable=SC2086 - mise run lint:links $modified_files -fi diff --git a/.mise/tasks/lint/links.sh b/.mise/tasks/lint/links.sh deleted file mode 100755 index 19df7f20d..000000000 --- a/.mise/tasks/lint/links.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash -#MISE description="Lint links in all files" - -set -e - -#USAGE arg "" var=#true help="files to check" default="." - -# shellcheck disable=SC2154 -for f in $usage_file; do - echo "Checking links in file: $f" -done - -# shellcheck disable=SC2086 -lychee --verbose --config .github/config/lychee.toml $usage_file diff --git a/.mise/tasks/lint/local-links.sh b/.mise/tasks/lint/local-links.sh deleted file mode 100755 index 054bb4ab4..000000000 --- a/.mise/tasks/lint/local-links.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash -#MISE description="Lint links in local files" - -set -e - -#USAGE arg "" var=#true help="files to check" default="." - -# shellcheck disable=SC2154 -for f in $usage_file; do - echo "Checking links in file: $f" -done - -# shellcheck disable=SC2086 -lychee --verbose --scheme file --include-fragments --config .github/config/lychee.toml $usage_file diff --git a/mise.toml b/mise.toml index 267937d05..b75e5175f 100644 --- a/mise.toml +++ b/mise.toml @@ -51,9 +51,30 @@ run = "./mvnw install -DskipTests -Dcoverage.skip=true" description = "Run Super-Linter with auto-fix on the repository" file = "https://raw.githubusercontent.com/grafana/docker-otel-lgtm/main/.mise/tasks/lint/super-linter.sh" +[tasks."lint:links"] +file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/links.sh" + +[tasks."lint:local-links"] +file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/local-links.sh" + +[tasks."lint:links-in-modified-files"] +file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/links-in-modified-files.sh" + +[tasks."lint:links-in-modified-files-ci"] +description = "Lint links in modified files (CI configuration)" +run = "mise run lint:links-in-modified-files --base origin/$GITHUB_BASE_REF --head $GITHUB_HEAD_SHA" + +[tasks."lint:links-in-modified-files-local"] +description = "Lint links in modified files (local configuration)" +run = "mise run lint:links-in-modified-files --base origin/main --head HEAD" + [tasks."lint:rest"] description = "All lints not covered by super linter" -depends = ["lint:links", "lint:bom"] +depends = ["lint:bom", "lint:local-links", "lint:links-in-modified-files-local"] + +[tasks."lint:rest-ci"] +description = "All lints not covered by super linter (CI configuration)" +depends = ["lint:bom", "lint:local-links", "lint:links-in-modified-files-ci"] [tasks."lint:all"] description = "All lints" From 0c9d5bf33d6debfab8965146db3997df91516193 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Thu, 5 Feb 2026 16:47:23 -0500 Subject: [PATCH 069/110] Allow metrics with the same name different labels (#1800) Closes #696 Alternate approach to #1728 Validation occurs at registration time: - Metrics with the same name, type, unit, and help - but different labels, are allowed to be registered - Custom Collectors that do not implement the required fields (prometheus name, metric type) will skip validation and could risk creating duplicate series that will cause issues at scrape time. - I looked into adding a fallback, but it requires calling `collect()` at registration in order to introspect existing metadata and that seemed not great due to potential side effects --------- Signed-off-by: Jay DeLuca --- .gitignore | 2 + docs/content/getting-started/metric-types.md | 3 + docs/content/getting-started/registry.md | 24 +- docs/content/internals/model.md | 5 +- .../client/it/common/ExporterTest.java | 2 +- .../pom.xml | 59 ++ .../DuplicateMetricsSample.java | 91 ++ .../it/exporter/test/DuplicateMetricsIT.java | 181 ++++ integration-tests/it-exporter/pom.xml | 1 + prometheus-metrics-core/pom.xml | 4 +- .../metrics/core/metrics/Counter.java | 6 + .../core/metrics/CounterWithCallback.java | 6 + .../metrics/core/metrics/Gauge.java | 6 + .../core/metrics/GaugeWithCallback.java | 6 + .../metrics/core/metrics/Histogram.java | 6 + .../prometheus/metrics/core/metrics/Info.java | 6 + .../core/metrics/MetricWithFixedMetadata.java | 18 +- .../metrics/core/metrics/StateSet.java | 6 + .../metrics/core/metrics/Summary.java | 6 + .../core/metrics/SummaryWithCallback.java | 6 + .../metrics/core/metrics/CounterTest.java | 16 +- .../PrometheusProtobufWriterImpl.java | 7 +- .../DuplicateNamesProtobufTest.java | 300 ++++++ .../OpenMetricsTextFormatWriter.java | 3 +- .../PrometheusTextFormatWriter.java | 5 +- .../expositionformats/TextFormatUtil.java | 138 +++ .../DuplicateNamesExpositionTest.java | 258 +++++ .../expositionformats/TextFormatUtilTest.java | 129 +++ .../metrics/model/registry/Collector.java | 57 ++ .../metrics/model/registry/MetricType.java | 18 + .../model/registry/MultiCollector.java | 58 ++ .../model/registry/PrometheusRegistry.java | 317 +++++- .../model/snapshots/MetricSnapshots.java | 45 +- ...etryExporterRegistryCompatibilityTest.java | 116 +++ .../registry/PrometheusRegistryTest.java | 965 +++++++++++++++++- .../model/snapshots/MetricSnapshotsTest.java | 28 + 36 files changed, 2826 insertions(+), 78 deletions(-) create mode 100644 integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml create mode 100644 integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/src/main/java/io/prometheus/metrics/it/exporter/duplicatemetrics/DuplicateMetricsSample.java create mode 100644 integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/DuplicateMetricsIT.java create mode 100644 prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java create mode 100644 prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java create mode 100644 prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java create mode 100644 prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java diff --git a/.gitignore b/.gitignore index 83f5595ba..b98fa5703 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ docs/public benchmark-results/ benchmark-results.json benchmark-output.log + +*.DS_Store \ No newline at end of file diff --git a/docs/content/getting-started/metric-types.md b/docs/content/getting-started/metric-types.md index 844d63a9c..97424ef5c 100644 --- a/docs/content/getting-started/metric-types.md +++ b/docs/content/getting-started/metric-types.md @@ -364,3 +364,6 @@ in the `prometheus-metrics-core` API. However, `prometheus-metrics-model` implements the underlying data model for these types. To use these types, you need to implement your own `Collector` where the `collect()` method returns an `UnknownSnapshot` or a `HistogramSnapshot` with `.gaugeHistogram(true)`. +If your custom collector does not implement `getMetricType()` and `getLabelNames()`, ensure it does +not produce the same metric name and label set as another collector, or the exposition may contain +duplicate time series. diff --git a/docs/content/getting-started/registry.md b/docs/content/getting-started/registry.md index afebbb304..7f561ecef 100644 --- a/docs/content/getting-started/registry.md +++ b/docs/content/getting-started/registry.md @@ -6,7 +6,7 @@ weight: 2 In order to expose metrics, you need to register them with a `PrometheusRegistry`. We are using a counter as an example here, but the `register()` method is the same for all metric types. -## Registering a Metrics with the Default Registry +## Registering a Metric with the Default Registry ```java Counter eventsTotal = Counter.builder() @@ -18,7 +18,7 @@ Counter eventsTotal = Counter.builder() The `register()` call above builds the counter and registers it with the global static `PrometheusRegistry.defaultRegistry`. Using the default registry is recommended. -## Registering a Metrics with a Custom Registry +## Registering a Metric with a Custom Registry You can also register your metric with a custom registry: @@ -78,12 +78,30 @@ Counter eventsTotal2 = Counter.builder() .register(); // IllegalArgumentException, because a metric with that name is already registered ``` +## Validation at registration only + +Validation of duplicate metric names and label schemas happens at registration time only. +Built-in metrics (Counter, Gauge, Histogram, etc.) participate in this validation. + +Custom collectors that implement the `Collector` or `MultiCollector` interface can optionally +implement `getPrometheusName()` and `getMetricType()` (and the MultiCollector per-name variants) so +the registry can enforce consistency. **Validation is skipped when metric name or type is +unavailable:** if `getPrometheusName()` or `getMetricType()` returns `null`, the registry does not +validate that collector. If two such collectors produce the same metric name and same label set at +scrape time, the exposition output may contain duplicate time series and be invalid for Prometheus. + +When validation _is_ performed (name and type are non-null), **null label names are treated as an +empty label schema:** `getLabelNames()` returning `null` is normalized to `Collections.emptySet()` +and full label-schema validation and duplicate detection still apply. A collector that returns a +non-null type but leaves `getLabelNames()` as `null` is still validated, with its labels treated as +empty. + ## Unregistering a Metric There is no automatic expiry of unused metrics (yet), once a metric is registered it will remain registered forever. -However, you can programmatically unregistered an obsolete metric like this: +However, you can programmatically unregister an obsolete metric like this: ```java PrometheusRegistry.defaultRegistry.unregister(eventsTotal); diff --git a/docs/content/internals/model.md b/docs/content/internals/model.md index c54e79ee3..e1b2af644 100644 --- a/docs/content/internals/model.md +++ b/docs/content/internals/model.md @@ -19,7 +19,10 @@ All metric types implement the [Collector](/client_java/api/io/prometheus/metrics/model/registry/Collector.html) interface, i.e. they provide a [collect()]() -method to produce snapshots. +method to produce snapshots. Implementers that do not provide metric type or label names (returning +null from `getMetricType()` and `getLabelNames()`) are not validated at registration; they must +avoid producing the same metric name and label schema as another collector, or exposition may be +invalid. ## prometheus-metrics-model diff --git a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java index 515b00cf4..91a7ed712 100644 --- a/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java +++ b/integration-tests/it-common/src/test/java/io/prometheus/client/it/common/ExporterTest.java @@ -24,7 +24,7 @@ import org.testcontainers.containers.GenericContainer; public abstract class ExporterTest { - private final GenericContainer sampleAppContainer; + protected final GenericContainer sampleAppContainer; private final Volume sampleAppVolume; protected final String sampleApp; diff --git a/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml new file mode 100644 index 000000000..ca982769b --- /dev/null +++ b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + + io.prometheus + it-exporter + 1.5.0-SNAPSHOT + + + it-exporter-duplicate-metrics-sample + + Integration Tests - Duplicate Metrics Sample + + HTTPServer Sample demonstrating duplicate metric names with different label sets + + + + + io.prometheus + prometheus-metrics-exporter-httpserver + ${project.version} + + + io.prometheus + prometheus-metrics-core + ${project.version} + + + + + exporter-duplicate-metrics-sample + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + + + + io.prometheus.metrics.it.exporter.duplicatemetrics.DuplicateMetricsSample + + + + + + + + + + \ No newline at end of file diff --git a/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/src/main/java/io/prometheus/metrics/it/exporter/duplicatemetrics/DuplicateMetricsSample.java b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/src/main/java/io/prometheus/metrics/it/exporter/duplicatemetrics/DuplicateMetricsSample.java new file mode 100644 index 000000000..c6005674a --- /dev/null +++ b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/src/main/java/io/prometheus/metrics/it/exporter/duplicatemetrics/DuplicateMetricsSample.java @@ -0,0 +1,91 @@ +package io.prometheus.metrics.it.exporter.duplicatemetrics; + +import io.prometheus.metrics.core.metrics.Counter; +import io.prometheus.metrics.core.metrics.Gauge; +import io.prometheus.metrics.exporter.httpserver.HTTPServer; +import io.prometheus.metrics.model.snapshots.Unit; +import java.io.IOException; + +/** Integration test sample demonstrating metrics with duplicate names but different label sets. */ +public class DuplicateMetricsSample { + + public static void main(String[] args) throws IOException, InterruptedException { + if (args.length != 2) { + System.err.println("Usage: java -jar duplicate-metrics-sample.jar "); + System.err.println("Where outcome is \"success\" or \"error\"."); + System.exit(1); + } + + int port = parsePortOrExit(args[0]); + String outcome = args[1]; + run(port, outcome); + } + + private static void run(int port, String outcome) throws IOException, InterruptedException { + // Register multiple counters with the same Prometheus name "http_requests_total" + // but different label sets + Counter requestsSuccess = + Counter.builder() + .name("http_requests_total") + .help("Total HTTP requests by status") + .labelNames("status", "method") + .register(); + requestsSuccess.labelValues("success", "GET").inc(150); + requestsSuccess.labelValues("success", "POST").inc(45); + + Counter requestsError = + Counter.builder() + .name("http_requests_total") + .help("Total HTTP requests by status") + .labelNames("status", "endpoint") + .register(); + requestsError.labelValues("error", "/api").inc(5); + requestsError.labelValues("error", "/health").inc(2); + + // Register multiple gauges with the same Prometheus name "active_connections" + // but different label sets + Gauge connectionsByRegion = + Gauge.builder() + .name("active_connections") + .help("Active connections") + .labelNames("region", "protocol") + .register(); + connectionsByRegion.labelValues("us-east", "http").set(42); + connectionsByRegion.labelValues("us-west", "http").set(38); + connectionsByRegion.labelValues("eu-west", "https").set(55); + + Gauge connectionsByPool = + Gauge.builder() + .name("active_connections") + .help("Active connections") + .labelNames("pool", "type") + .register(); + connectionsByPool.labelValues("primary", "read").set(30); + connectionsByPool.labelValues("replica", "write").set(10); + + // Also add a regular metric without duplicates for reference + Counter uniqueMetric = + Counter.builder() + .name("unique_metric_total") + .help("A unique metric for reference") + .unit(Unit.BYTES) + .register(); + uniqueMetric.inc(1024); + + HTTPServer server = HTTPServer.builder().port(port).buildAndStart(); + + System.out.println( + "DuplicateMetricsSample listening on http://localhost:" + server.getPort() + "/metrics"); + Thread.currentThread().join(); // wait forever + } + + private static int parsePortOrExit(String port) { + try { + return Integer.parseInt(port); + } catch (NumberFormatException e) { + System.err.println("\"" + port + "\": Invalid port number."); + System.exit(1); + } + return 0; // this won't happen + } +} diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/DuplicateMetricsIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/DuplicateMetricsIT.java new file mode 100644 index 000000000..7530070ac --- /dev/null +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/DuplicateMetricsIT.java @@ -0,0 +1,181 @@ +package io.prometheus.metrics.it.exporter.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.prometheus.client.it.common.ExporterTest; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.List; +import org.junit.jupiter.api.Test; + +class DuplicateMetricsIT extends ExporterTest { + + public DuplicateMetricsIT() throws IOException, URISyntaxException { + super("exporter-duplicate-metrics-sample"); + } + + @Test + void testDuplicateMetricsInPrometheusTextFormat() throws IOException { + start(); + Response response = scrape("GET", ""); + assertThat(response.status).isEqualTo(200); + assertContentType( + "text/plain; version=0.0.4; charset=utf-8", response.getHeader("Content-Type")); + + String expected = + """ + # HELP active_connections Active connections + # TYPE active_connections gauge + active_connections{pool="primary",type="read"} 30.0 + active_connections{pool="replica",type="write"} 10.0 + active_connections{protocol="http",region="us-east"} 42.0 + active_connections{protocol="http",region="us-west"} 38.0 + active_connections{protocol="https",region="eu-west"} 55.0 + # HELP http_requests_total Total HTTP requests by status + # TYPE http_requests_total counter + http_requests_total{endpoint="/api",status="error"} 5.0 + http_requests_total{endpoint="/health",status="error"} 2.0 + http_requests_total{method="GET",status="success"} 150.0 + http_requests_total{method="POST",status="success"} 45.0 + # HELP unique_metric_bytes_total A unique metric for reference + # TYPE unique_metric_bytes_total counter + unique_metric_bytes_total 1024.0 + """; + + assertThat(response.stringBody()).isEqualTo(expected); + } + + @Test + void testDuplicateMetricsInOpenMetricsTextFormat() throws IOException { + start(); + Response response = + scrape("GET", "", "Accept", "application/openmetrics-text; version=1.0.0; charset=utf-8"); + assertThat(response.status).isEqualTo(200); + assertContentType( + "application/openmetrics-text; version=1.0.0; charset=utf-8", + response.getHeader("Content-Type")); + + // OpenMetrics format should have UNIT for unique_metric_bytes (base name without _total) + String expected = + """ + # TYPE active_connections gauge + # HELP active_connections Active connections + active_connections{pool="primary",type="read"} 30.0 + active_connections{pool="replica",type="write"} 10.0 + active_connections{protocol="http",region="us-east"} 42.0 + active_connections{protocol="http",region="us-west"} 38.0 + active_connections{protocol="https",region="eu-west"} 55.0 + # TYPE http_requests counter + # HELP http_requests Total HTTP requests by status + http_requests_total{endpoint="/api",status="error"} 5.0 + http_requests_total{endpoint="/health",status="error"} 2.0 + http_requests_total{method="GET",status="success"} 150.0 + http_requests_total{method="POST",status="success"} 45.0 + # TYPE unique_metric_bytes counter + # UNIT unique_metric_bytes bytes + # HELP unique_metric_bytes A unique metric for reference + unique_metric_bytes_total 1024.0 + # EOF + """; + + assertThat(response.stringBody()).isEqualTo(expected); + } + + @Test + void testDuplicateMetricsInPrometheusProtobufFormat() throws IOException { + start(); + Response response = + scrape( + "GET", + "", + "Accept", + "application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily;" + + " encoding=delimited"); + assertThat(response.status).isEqualTo(200); + assertContentType( + "application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily;" + + " encoding=delimited", + response.getHeader("Content-Type")); + + List metrics = response.protoBody(); + + assertThat(metrics).hasSize(3); + + // Metrics are sorted by name + assertThat(metrics.get(0).getName()).isEqualTo("active_connections"); + assertThat(metrics.get(1).getName()).isEqualTo("http_requests_total"); + assertThat(metrics.get(2).getName()).isEqualTo("unique_metric_bytes_total"); + + // Verify active_connections has all 5 data points merged + Metrics.MetricFamily activeConnections = metrics.get(0); + assertThat(activeConnections.getType()).isEqualTo(Metrics.MetricType.GAUGE); + assertThat(activeConnections.getHelp()).isEqualTo("Active connections"); + assertThat(activeConnections.getMetricList()).hasSize(5); + + // Verify http_requests_total has all 4 data points merged + Metrics.MetricFamily httpRequests = metrics.get(1); + assertThat(httpRequests.getType()).isEqualTo(Metrics.MetricType.COUNTER); + assertThat(httpRequests.getHelp()).isEqualTo("Total HTTP requests by status"); + assertThat(httpRequests.getMetricList()).hasSize(4); + + // Verify each data point has the expected labels + boolean foundSuccessGet = false; + boolean foundSuccessPost = false; + boolean foundErrorApi = false; + boolean foundErrorHealth = false; + + for (Metrics.Metric metric : httpRequests.getMetricList()) { + List labels = metric.getLabelList(); + if (hasLabel(labels, "status", "success") && hasLabel(labels, "method", "GET")) { + assertThat(metric.getCounter().getValue()).isEqualTo(150.0); + foundSuccessGet = true; + } else if (hasLabel(labels, "status", "success") && hasLabel(labels, "method", "POST")) { + assertThat(metric.getCounter().getValue()).isEqualTo(45.0); + foundSuccessPost = true; + } else if (hasLabel(labels, "status", "error") && hasLabel(labels, "endpoint", "/api")) { + assertThat(metric.getCounter().getValue()).isEqualTo(5.0); + foundErrorApi = true; + } else if (hasLabel(labels, "status", "error") && hasLabel(labels, "endpoint", "/health")) { + assertThat(metric.getCounter().getValue()).isEqualTo(2.0); + foundErrorHealth = true; + } + } + + assertThat(foundSuccessGet).isTrue(); + assertThat(foundSuccessPost).isTrue(); + assertThat(foundErrorApi).isTrue(); + assertThat(foundErrorHealth).isTrue(); + + Metrics.MetricFamily uniqueMetric = metrics.get(2); + assertThat(uniqueMetric.getType()).isEqualTo(Metrics.MetricType.COUNTER); + assertThat(uniqueMetric.getMetricList()).hasSize(1); + assertThat(uniqueMetric.getMetric(0).getCounter().getValue()).isEqualTo(1024.0); + } + + @Test + void testDuplicateMetricsWithNameFilter() throws IOException { + start(); + // Only scrape http_requests_total + Response response = scrape("GET", nameParam()); + assertThat(response.status).isEqualTo(200); + + String body = response.stringBody(); + + assertThat(body) + .contains("http_requests_total{method=\"GET\",status=\"success\"} 150.0") + .contains("http_requests_total{endpoint=\"/api\",status=\"error\"} 5.0"); + + // Should NOT contain active_connections or unique_metric_total + assertThat(body).doesNotContain("active_connections").doesNotContain("unique_metric_total"); + } + + private boolean hasLabel(List labels, String name, String value) { + return labels.stream() + .anyMatch(label -> label.getName().equals(name) && label.getValue().equals(value)); + } + + private String nameParam() { + return "name[]=" + "http_requests_total"; + } +} diff --git a/integration-tests/it-exporter/pom.xml b/integration-tests/it-exporter/pom.xml index a442b9086..c4a29fe74 100644 --- a/integration-tests/it-exporter/pom.xml +++ b/integration-tests/it-exporter/pom.xml @@ -21,6 +21,7 @@ it-exporter-servlet-tomcat-sample it-exporter-servlet-jetty-sample it-exporter-httpserver-sample + it-exporter-duplicate-metrics-sample it-exporter-no-protobuf it-exporter-test it-no-protobuf-test diff --git a/prometheus-metrics-core/pom.xml b/prometheus-metrics-core/pom.xml index 3a61050de..b3a043574 100644 --- a/prometheus-metrics-core/pom.xml +++ b/prometheus-metrics-core/pom.xml @@ -38,10 +38,10 @@ ${project.version} - + io.prometheus - prometheus-metrics-exposition-formats + prometheus-metrics-exposition-formats-no-protobuf ${project.version} test diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java index a2bac20d2..c5f2f1cff 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java @@ -5,6 +5,7 @@ import io.prometheus.metrics.core.datapoints.CounterDataPoint; import io.prometheus.metrics.core.exemplars.ExemplarSampler; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.Exemplar; import io.prometheus.metrics.model.snapshots.Labels; @@ -92,6 +93,11 @@ protected CounterSnapshot collect(List labels, List metricDat return new CounterSnapshot(getMetadata(), data); } + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + @Override protected DataPoint newDataPoint() { if (exemplarSamplerConfig != null) { diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java index 044644ec5..3a818c004 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java @@ -1,6 +1,7 @@ package io.prometheus.metrics.core.metrics; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import java.util.ArrayList; import java.util.Collections; @@ -50,6 +51,11 @@ public CounterSnapshot collect() { return new CounterSnapshot(getMetadata(), dataPoints); } + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + public static Builder builder() { return new Builder(PrometheusProperties.get()); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java index 5850a1cfe..8b1f31409 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java @@ -5,6 +5,7 @@ import io.prometheus.metrics.core.datapoints.GaugeDataPoint; import io.prometheus.metrics.core.exemplars.ExemplarSampler; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Exemplar; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; import io.prometheus.metrics.model.snapshots.Labels; @@ -94,6 +95,11 @@ protected GaugeSnapshot collect(List labels, List metricData) return new GaugeSnapshot(getMetadata(), dataPointSnapshots); } + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + @Override protected DataPoint newDataPoint() { if (exemplarSamplerConfig != null) { diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java index 82f26afe1..88aee225f 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java @@ -1,6 +1,7 @@ package io.prometheus.metrics.core.metrics; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; import java.util.ArrayList; import java.util.Collections; @@ -54,6 +55,11 @@ public GaugeSnapshot collect() { return new GaugeSnapshot(getMetadata(), dataPoints); } + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + public static Builder builder() { return new Builder(PrometheusProperties.get()); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java index 5a8265e08..930d9e67e 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java @@ -7,6 +7,7 @@ import io.prometheus.metrics.core.exemplars.ExemplarSampler; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig; import io.prometheus.metrics.core.util.Scheduler; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets; import io.prometheus.metrics.model.snapshots.Exemplars; import io.prometheus.metrics.model.snapshots.HistogramSnapshot; @@ -649,6 +650,11 @@ protected HistogramSnapshot collect(List labels, List metricD return new HistogramSnapshot(getMetadata(), data); } + @Override + public MetricType getMetricType() { + return MetricType.HISTOGRAM; + } + @Override protected DataPoint newDataPoint() { return new DataPoint(); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java index d7aa6be70..011f0bb73 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java @@ -1,6 +1,7 @@ package io.prometheus.metrics.core.metrics; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.InfoSnapshot; import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Unit; @@ -105,6 +106,11 @@ public InfoSnapshot collect() { return new InfoSnapshot(getMetadata(), data); } + @Override + public MetricType getMetricType() { + return MetricType.INFO; + } + public static Builder builder() { return new Builder(PrometheusProperties.get()); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java index 6f6afa482..12c48c51d 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java @@ -1,12 +1,15 @@ package io.prometheus.metrics.core.metrics; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.snapshots.Label; import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.PrometheusNaming; import io.prometheus.metrics.model.snapshots.Unit; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.annotation.Nullable; /** @@ -27,7 +30,8 @@ protected MetricWithFixedMetadata(Builder builder) { this.labelNames = Arrays.copyOf(builder.labelNames, builder.labelNames.length); } - protected MetricMetadata getMetadata() { + @Override + public MetricMetadata getMetadata() { return metadata; } @@ -48,6 +52,18 @@ public String getPrometheusName() { return metadata.getPrometheusName(); } + @Override + public Set getLabelNames() { + Set names = new HashSet<>(); + for (String labelName : labelNames) { + names.add(PrometheusNaming.prometheusName(labelName)); + } + for (Label label : constLabels) { + names.add(PrometheusNaming.prometheusName(label.getName())); + } + return names; + } + public abstract static class Builder, M extends MetricWithFixedMetadata> extends Metric.Builder { diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java index 4dbaf8ad5..740183f31 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java @@ -4,6 +4,7 @@ import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.datapoints.StateSetDataPoint; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.StateSetSnapshot; import java.util.ArrayList; @@ -84,6 +85,11 @@ protected StateSetSnapshot collect(List labels, List metricDa return new StateSetSnapshot(getMetadata(), data); } + @Override + public MetricType getMetricType() { + return MetricType.STATESET; + } + @Override public void setTrue(String state) { getNoLabels().setTrue(state); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java index 7a8fffe04..47b6e2a9c 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java @@ -7,6 +7,7 @@ import io.prometheus.metrics.core.datapoints.DistributionDataPoint; import io.prometheus.metrics.core.exemplars.ExemplarSampler; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Exemplars; import io.prometheus.metrics.model.snapshots.Labels; import io.prometheus.metrics.model.snapshots.Quantile; @@ -118,6 +119,11 @@ protected SummarySnapshot collect(List labels, List metricDat return new SummarySnapshot(getMetadata(), data); } + @Override + public MetricType getMetricType() { + return MetricType.SUMMARY; + } + @Override protected DataPoint newDataPoint() { return new DataPoint(); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java index 3c4a910ea..fa823e68e 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java @@ -1,6 +1,7 @@ package io.prometheus.metrics.core.metrics; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Exemplars; import io.prometheus.metrics.model.snapshots.Quantiles; import io.prometheus.metrics.model.snapshots.SummarySnapshot; @@ -63,6 +64,11 @@ public SummarySnapshot collect() { return new SummarySnapshot(getMetadata(), dataPoints); } + @Override + public MetricType getMetricType() { + return MetricType.SUMMARY; + } + public static Builder builder() { return new Builder(PrometheusProperties.get()); } diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java index 0456d8a80..b6d6779d7 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java @@ -12,6 +12,7 @@ import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; +import io.prometheus.metrics.model.registry.PrometheusRegistry; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.Exemplar; import io.prometheus.metrics.model.snapshots.Label; @@ -115,7 +116,7 @@ void testLabels() { "my_counter", "my_counter_seconds", }) - public void testTotalStrippedFromName(String name) { + void testTotalStrippedFromName(String name) { Counter counter = Counter.builder().name(name).unit(Unit.SECONDS).build(); Metrics.MetricFamily protobufData = new PrometheusProtobufWriterImpl().convert(counter.collect(), EscapingScheme.ALLOW_UTF8); @@ -377,4 +378,17 @@ void testConstLabelsSecond() { .constLabels(Labels.of("const_a", "const_b")) .build()); } + + @Test + void testLabelNormalizationInRegistration() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Counter.builder().name("requests").labelNames("request.count").register(registry); + + // request.count and request_count normalize to the same name + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy( + () -> Counter.builder().name("requests").labelNames("request_count").register(registry)) + .withMessageContaining("duplicate metric name with identical label schema"); + } } diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java index bd82c36bb..b552fa486 100644 --- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java +++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java @@ -6,6 +6,7 @@ import com.google.protobuf.TextFormat; import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.expositionformats.ExpositionFormatWriter; +import io.prometheus.metrics.expositionformats.TextFormatUtil; import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets; import io.prometheus.metrics.model.snapshots.CounterSnapshot; @@ -43,8 +44,9 @@ public String getContentType() { @Override public String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) { + MetricSnapshots merged = TextFormatUtil.mergeDuplicates(metricSnapshots); StringBuilder stringBuilder = new StringBuilder(); - for (MetricSnapshot s : metricSnapshots) { + for (MetricSnapshot s : merged) { MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme); if (!snapshot.getDataPoints().isEmpty()) { stringBuilder.append(TextFormat.printer().printToString(convert(snapshot, escapingScheme))); @@ -57,7 +59,8 @@ public String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme esca public void write( OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme escapingScheme) throws IOException { - for (MetricSnapshot s : metricSnapshots) { + MetricSnapshots merged = TextFormatUtil.mergeDuplicates(metricSnapshots); + for (MetricSnapshot s : merged) { MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme); if (!snapshot.getDataPoints().isEmpty()) { convert(snapshot, escapingScheme).writeDelimitedTo(out); diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java new file mode 100644 index 000000000..9b1caa8f6 --- /dev/null +++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java @@ -0,0 +1,300 @@ +package io.prometheus.metrics.expositionformats; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.prometheus.metrics.config.EscapingScheme; +import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; +import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; +import io.prometheus.metrics.model.registry.Collector; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.GaugeSnapshot; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.Test; + +class DuplicateNamesProtobufTest { + + private static PrometheusRegistry getPrometheusRegistry() { + PrometheusRegistry registry = new PrometheusRegistry(); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/hello", "outcome", "FAILURE", "error", "TIMEOUT")) + .value(10) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + return registry; + } + + @Test + void testDuplicateNames_differentLabels_producesSingleMetricFamily() throws IOException { + PrometheusRegistry registry = getPrometheusRegistry(); + + MetricSnapshots snapshots = registry.scrape(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrometheusProtobufWriterImpl writer = new PrometheusProtobufWriterImpl(); + writer.write(out, snapshots, EscapingScheme.UNDERSCORE_ESCAPING); + + List metricFamilies = parseProtobufOutput(out); + + assertThat(metricFamilies).hasSize(1); + Metrics.MetricFamily family = metricFamilies.get(0); + assertThat(family.getName()).isEqualTo("api_responses_total"); + assertThat(family.getHelp()).isEqualTo("API responses"); + assertThat(family.getType()).isEqualTo(Metrics.MetricType.COUNTER); + assertThat(family.getMetricCount()).isEqualTo(2); + + Metrics.Metric successMetric = + family.getMetricList().stream() + .filter( + m -> + m.getLabelList().stream() + .anyMatch( + l -> l.getName().equals("outcome") && l.getValue().equals("SUCCESS"))) + .findFirst() + .orElseThrow(() -> new AssertionError("SUCCESS metric not found")); + assertThat(successMetric.getCounter().getValue()).isEqualTo(100.0); + + Metrics.Metric failureMetric = + family.getMetricList().stream() + .filter( + m -> + m.getLabelList().stream() + .anyMatch( + l -> + l.getName().equals("outcome") && l.getValue().equals("FAILURE")) + && m.getLabelList().stream() + .anyMatch( + l -> l.getName().equals("error") && l.getValue().equals("TIMEOUT"))) + .findFirst() + .orElseThrow(() -> new AssertionError("FAILURE metric not found")); + assertThat(failureMetric.getCounter().getValue()).isEqualTo(10.0); + } + + @Test + void testDuplicateNames_multipleDataPoints_producesSingleMetricFamily() throws IOException { + PrometheusRegistry registry = new PrometheusRegistry(); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .build()) + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/world", "outcome", "SUCCESS")) + .value(200) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/hello", "outcome", "FAILURE", "error", "TIMEOUT")) + .value(10) + .build()) + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/world", "outcome", "FAILURE", "error", "NOT_FOUND")) + .value(5) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + MetricSnapshots snapshots = registry.scrape(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrometheusProtobufWriterImpl writer = new PrometheusProtobufWriterImpl(); + writer.write(out, snapshots, EscapingScheme.UNDERSCORE_ESCAPING); + + List metricFamilies = parseProtobufOutput(out); + + assertThat(metricFamilies).hasSize(1); + Metrics.MetricFamily family = metricFamilies.get(0); + assertThat(family.getName()).isEqualTo("api_responses_total"); + assertThat(family.getMetricCount()).isEqualTo(4); + + long successCount = + family.getMetricList().stream() + .filter( + m -> + m.getLabelList().stream() + .anyMatch( + l -> l.getName().equals("outcome") && l.getValue().equals("SUCCESS"))) + .count(); + + long failureCount = + family.getMetricList().stream() + .filter( + m -> + m.getLabelList().stream() + .anyMatch( + l -> l.getName().equals("outcome") && l.getValue().equals("FAILURE"))) + .count(); + + assertThat(successCount).isEqualTo(2); + assertThat(failureCount).isEqualTo(2); + } + + @Test + void testDifferentMetrics_producesSeparateMetricFamilies() throws IOException { + MetricSnapshots snapshots = getMetricSnapshots(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrometheusProtobufWriterImpl writer = new PrometheusProtobufWriterImpl(); + writer.write(out, snapshots, EscapingScheme.UNDERSCORE_ESCAPING); + + List metricFamilies = parseProtobufOutput(out); + + assertThat(metricFamilies).hasSize(2); + + Metrics.MetricFamily counterFamily = null; + Metrics.MetricFamily gaugeFamily = null; + for (Metrics.MetricFamily family : metricFamilies) { + if (family.getName().equals("http_requests_total")) { + counterFamily = family; + } else if (family.getName().equals("active_sessions")) { + gaugeFamily = family; + } + } + + assertThat(counterFamily).isNotNull(); + assertThat(counterFamily.getType()).isEqualTo(Metrics.MetricType.COUNTER); + assertThat(counterFamily.getMetricCount()).isEqualTo(1); + assertThat(counterFamily.getMetric(0).getCounter().getValue()).isEqualTo(100.0); + + assertThat(gaugeFamily).isNotNull(); + assertThat(gaugeFamily.getType()).isEqualTo(Metrics.MetricType.GAUGE); + assertThat(gaugeFamily.getMetricCount()).isEqualTo(1); + assertThat(gaugeFamily.getMetric(0).getGauge().getValue()).isEqualTo(50.0); + } + + private static MetricSnapshots getMetricSnapshots() { + PrometheusRegistry registry = new PrometheusRegistry(); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("http_requests") + .help("HTTP Request counter") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("method", "GET")) + .value(100) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "http_requests"; + } + }); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder() + .name("active_sessions") + .help("Active sessions gauge") + .dataPoint( + GaugeSnapshot.GaugeDataPointSnapshot.builder() + .labels(Labels.of("region", "us-east-1")) + .value(50) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "active_sessions"; + } + }); + + return registry.scrape(); + } + + private static List parseProtobufOutput(ByteArrayOutputStream out) + throws IOException { + List metricFamilies = new ArrayList<>(); + try (ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray())) { + Metrics.MetricFamily family; + while ((family = Metrics.MetricFamily.parseDelimitedFrom(in)) != null) { + metricFamilies.add(family); + } + } + return metricFamilies; + } +} diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java index 1ba1c627d..293fbfb8c 100644 --- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java +++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java @@ -113,7 +113,8 @@ public String getContentType() { public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingScheme scheme) throws IOException { Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8)); - for (MetricSnapshot s : metricSnapshots) { + MetricSnapshots merged = TextFormatUtil.mergeDuplicates(metricSnapshots); + for (MetricSnapshot s : merged) { MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, scheme); if (!snapshot.getDataPoints().isEmpty()) { if (snapshot instanceof CounterSnapshot) { diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java index 73d33504e..cc9f067ba 100644 --- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java +++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java @@ -115,7 +115,8 @@ public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingSch // "unknown", "gauge", "counter", "stateset", "info", "histogram", "gaugehistogram", and // "summary". Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8)); - for (MetricSnapshot s : metricSnapshots) { + MetricSnapshots merged = TextFormatUtil.mergeDuplicates(metricSnapshots); + for (MetricSnapshot s : merged) { MetricSnapshot snapshot = escapeMetricSnapshot(s, scheme); if (!snapshot.getDataPoints().isEmpty()) { if (snapshot instanceof CounterSnapshot) { @@ -136,7 +137,7 @@ public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingSch } } if (writeCreatedTimestamps) { - for (MetricSnapshot s : metricSnapshots) { + for (MetricSnapshot s : merged) { MetricSnapshot snapshot = escapeMetricSnapshot(s, scheme); if (!snapshot.getDataPoints().isEmpty()) { if (snapshot instanceof CounterSnapshot) { diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java index fb9d3f313..2891d544c 100644 --- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java +++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java @@ -1,14 +1,70 @@ package io.prometheus.metrics.expositionformats; import io.prometheus.metrics.config.EscapingScheme; +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.DataPointSnapshot; +import io.prometheus.metrics.model.snapshots.GaugeSnapshot; +import io.prometheus.metrics.model.snapshots.HistogramSnapshot; +import io.prometheus.metrics.model.snapshots.InfoSnapshot; import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; import io.prometheus.metrics.model.snapshots.PrometheusNaming; import io.prometheus.metrics.model.snapshots.SnapshotEscaper; +import io.prometheus.metrics.model.snapshots.StateSetSnapshot; +import io.prometheus.metrics.model.snapshots.SummarySnapshot; +import io.prometheus.metrics.model.snapshots.UnknownSnapshot; import java.io.IOException; import java.io.Writer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import javax.annotation.Nullable; +/** + * Utility methods for writing Prometheus text exposition formats. + * + *

This class provides low-level formatting utilities used by both Prometheus text format and + * OpenMetrics format writers. It handles escaping, label formatting, timestamp conversion, and + * merging of duplicate metric names. + */ public class TextFormatUtil { + /** + * Merges snapshots with duplicate Prometheus names by combining their data points. This ensures + * only one HELP/TYPE declaration per metric family. + */ + public static MetricSnapshots mergeDuplicates(MetricSnapshots metricSnapshots) { + if (metricSnapshots.size() <= 1) { + return metricSnapshots; + } + + Map> grouped = new LinkedHashMap<>(); + + for (MetricSnapshot snapshot : metricSnapshots) { + String prometheusName = snapshot.getMetadata().getPrometheusName(); + List list = grouped.get(prometheusName); + if (list == null) { + list = new ArrayList<>(); + grouped.put(prometheusName, list); + } + list.add(snapshot); + } + + MetricSnapshots.Builder builder = MetricSnapshots.builder(); + for (List group : grouped.values()) { + if (group.size() == 1) { + builder.metricSnapshot(group.get(0)); + } else { + MetricSnapshot merged = mergeSnapshots(group); + builder.metricSnapshot(merged); + } + } + + return builder.build(); + } static void writeLong(Writer writer, long value) throws IOException { writer.append(Long.toString(value)); @@ -155,4 +211,86 @@ static void writeName(Writer writer, String name, NameType nameType) throws IOEx writeEscapedString(writer, name); writer.write('"'); } + + /** + * Merges multiple snapshots of the same type into a single snapshot with combined data points. + */ + @SuppressWarnings("unchecked") + private static MetricSnapshot mergeSnapshots(List snapshots) { + MetricSnapshot first = snapshots.get(0); + + int totalDataPoints = 0; + for (MetricSnapshot snapshot : snapshots) { + if (snapshot.getClass() != first.getClass()) { + throw new IllegalArgumentException( + "Cannot merge snapshots of different types: " + + first.getClass().getName() + + " and " + + snapshot.getClass().getName()); + } + if (first instanceof HistogramSnapshot) { + HistogramSnapshot histogramFirst = (HistogramSnapshot) first; + HistogramSnapshot histogramSnapshot = (HistogramSnapshot) snapshot; + if (histogramFirst.isGaugeHistogram() != histogramSnapshot.isGaugeHistogram()) { + throw new IllegalArgumentException( + "Cannot merge histograms: gauge histogram and classic histogram"); + } + } + // Validate metadata consistency so we don't silently pick one help/unit when they differ. + if (!Objects.equals( + first.getMetadata().getPrometheusName(), snapshot.getMetadata().getPrometheusName())) { + throw new IllegalArgumentException("Cannot merge snapshots: inconsistent metric name"); + } + if (!Objects.equals(first.getMetadata().getHelp(), snapshot.getMetadata().getHelp())) { + throw new IllegalArgumentException( + "Cannot merge snapshots: conflicting help for metric " + + first.getMetadata().getPrometheusName()); + } + if (!Objects.equals(first.getMetadata().getUnit(), snapshot.getMetadata().getUnit())) { + throw new IllegalArgumentException( + "Cannot merge snapshots: conflicting unit for metric " + + first.getMetadata().getPrometheusName()); + } + totalDataPoints += snapshot.getDataPoints().size(); + } + + List allDataPoints = new ArrayList<>(totalDataPoints); + for (MetricSnapshot snapshot : snapshots) { + allDataPoints.addAll(snapshot.getDataPoints()); + } + + if (first instanceof CounterSnapshot) { + return new CounterSnapshot( + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else if (first instanceof GaugeSnapshot) { + return new GaugeSnapshot( + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else if (first instanceof HistogramSnapshot) { + HistogramSnapshot histFirst = (HistogramSnapshot) first; + return new HistogramSnapshot( + histFirst.isGaugeHistogram(), + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else if (first instanceof SummarySnapshot) { + return new SummarySnapshot( + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else if (first instanceof InfoSnapshot) { + return new InfoSnapshot( + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else if (first instanceof StateSetSnapshot) { + return new StateSetSnapshot( + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else if (first instanceof UnknownSnapshot) { + return new UnknownSnapshot( + first.getMetadata(), + (Collection) (Object) allDataPoints); + } else { + throw new IllegalArgumentException("Unknown snapshot type: " + first.getClass().getName()); + } + } } diff --git a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java new file mode 100644 index 000000000..bdd21440f --- /dev/null +++ b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java @@ -0,0 +1,258 @@ +package io.prometheus.metrics.expositionformats; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.assertj.core.api.Assertions.assertThat; + +import io.prometheus.metrics.model.registry.Collector; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import org.junit.jupiter.api.Test; + +class DuplicateNamesExpositionTest { + + private static PrometheusRegistry getPrometheusRegistry() { + PrometheusRegistry registry = new PrometheusRegistry(); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/hello", "outcome", "FAILURE", "error", "TIMEOUT")) + .value(10) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + return registry; + } + + @Test + void testDuplicateNames_differentLabels_producesValidOutput() throws IOException { + PrometheusRegistry registry = getPrometheusRegistry(); + + MetricSnapshots snapshots = registry.scrape(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrometheusTextFormatWriter writer = PrometheusTextFormatWriter.create(); + writer.write(out, snapshots); + String output = out.toString(UTF_8); + + String expected = + """ + # HELP api_responses_total API responses + # TYPE api_responses_total counter + api_responses_total{error="TIMEOUT",outcome="FAILURE",uri="/hello"} 10.0 + api_responses_total{outcome="SUCCESS",uri="/hello"} 100.0 + """; + + assertThat(output).isEqualTo(expected); + } + + @Test + void testDuplicateNames_multipleDataPoints_producesValidOutput() throws IOException { + PrometheusRegistry registry = new PrometheusRegistry(); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .build()) + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/world", "outcome", "SUCCESS")) + .value(200) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/hello", "outcome", "FAILURE", "error", "TIMEOUT")) + .value(10) + .build()) + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/world", "outcome", "FAILURE", "error", "NOT_FOUND")) + .value(5) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + MetricSnapshots snapshots = registry.scrape(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrometheusTextFormatWriter writer = PrometheusTextFormatWriter.create(); + writer.write(out, snapshots); + String output = out.toString(UTF_8); + + String expected = + """ + # HELP api_responses_total API responses + # TYPE api_responses_total counter + api_responses_total{error="NOT_FOUND",outcome="FAILURE",uri="/world"} 5.0 + api_responses_total{error="TIMEOUT",outcome="FAILURE",uri="/hello"} 10.0 + api_responses_total{outcome="SUCCESS",uri="/hello"} 100.0 + api_responses_total{outcome="SUCCESS",uri="/world"} 200.0 + """; + assertThat(output).isEqualTo(expected); + } + + @Test + void testOpenMetricsFormat_withDuplicateNames() throws IOException { + PrometheusRegistry registry = getPrometheusRegistry(); + + MetricSnapshots snapshots = registry.scrape(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + OpenMetricsTextFormatWriter writer = new OpenMetricsTextFormatWriter(false, false); + writer.write(out, snapshots); + String output = out.toString(UTF_8); + + String expected = + """ + # TYPE api_responses counter + # HELP api_responses API responses + api_responses_total{error="TIMEOUT",outcome="FAILURE",uri="/hello"} 10.0 + api_responses_total{outcome="SUCCESS",uri="/hello"} 100.0 + # EOF + """; + assertThat(output).isEqualTo(expected); + } + + @Test + void testDuplicateNames_withCreatedTimestamps_emitsSingleHelpTypeAndNoDuplicateCreatedSeries() + throws IOException { + long createdTs = 1672850385800L; + PrometheusRegistry registry = new PrometheusRegistry(); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .createdTimestampMillis(createdTs) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + registry.register( + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder() + .name("api_responses") + .help("API responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels( + Labels.of("uri", "/hello", "outcome", "FAILURE", "error", "TIMEOUT")) + .value(10) + .createdTimestampMillis(createdTs + 1000) + .build()) + .build(); + } + + @Override + public String getPrometheusName() { + return "api_responses"; + } + }); + + MetricSnapshots snapshots = registry.scrape(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrometheusTextFormatWriter writer = + PrometheusTextFormatWriter.builder().setIncludeCreatedTimestamps(true).build(); + writer.write(out, snapshots); + String output = out.toString(UTF_8); + + // Merged snapshots: one metric family with two data points. Created-timestamp section uses + // merged snapshots too, so single HELP/TYPE for _created and one _created line per label set. + String expected = + """ + # HELP api_responses_total API responses + # TYPE api_responses_total counter + api_responses_total{error="TIMEOUT",outcome="FAILURE",uri="/hello"} 10.0 + api_responses_total{outcome="SUCCESS",uri="/hello"} 100.0 + # HELP api_responses_created API responses + # TYPE api_responses_created gauge + api_responses_created{error="TIMEOUT",outcome="FAILURE",uri="/hello"} 1672850386800 + api_responses_created{outcome="SUCCESS",uri="/hello"} 1672850385800 + """; + + assertThat(output).isEqualTo(expected); + } +} diff --git a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/TextFormatUtilTest.java b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/TextFormatUtilTest.java index dbb707f51..3a6fea740 100644 --- a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/TextFormatUtilTest.java +++ b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/TextFormatUtilTest.java @@ -3,6 +3,11 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets; +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.HistogramSnapshot; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; import java.io.IOException; import java.io.StringWriter; import org.junit.jupiter.api.Test; @@ -34,4 +39,128 @@ private static String writePrometheusTimestamp(boolean timestampsInMs) throws IO TextFormatUtil.writePrometheusTimestamp(writer, 1000, timestampsInMs); return writer.toString(); } + + @Test + void testMergeDuplicates_sameName_mergesDataPoints() { + CounterSnapshot counter1 = + CounterSnapshot.builder() + .name("api_responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .build()) + .build(); + + CounterSnapshot counter2 = + CounterSnapshot.builder() + .name("api_responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "FAILURE")) + .value(10) + .build()) + .build(); + + MetricSnapshots snapshots = new MetricSnapshots(counter1, counter2); + MetricSnapshots result = TextFormatUtil.mergeDuplicates(snapshots); + + assertThat(result).hasSize(1); + assertThat(result.get(0).getMetadata().getName()).isEqualTo("api_responses"); + assertThat(result.get(0).getDataPoints()).hasSize(2); + + CounterSnapshot merged = (CounterSnapshot) result.get(0); + assertThat(merged.getDataPoints()) + .anyMatch( + dp -> + dp.getLabels().equals(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + && dp.getValue() == 100); + assertThat(merged.getDataPoints()) + .anyMatch( + dp -> + dp.getLabels().equals(Labels.of("uri", "/hello", "outcome", "FAILURE")) + && dp.getValue() == 10); + } + + @Test + void testMergeDuplicates_multipleDataPoints_allMerged() { + CounterSnapshot counter1 = + CounterSnapshot.builder() + .name("api_responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "SUCCESS")) + .value(100) + .build()) + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/world", "outcome", "SUCCESS")) + .value(200) + .build()) + .build(); + + CounterSnapshot counter2 = + CounterSnapshot.builder() + .name("api_responses") + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/hello", "outcome", "FAILURE")) + .value(10) + .build()) + .dataPoint( + CounterSnapshot.CounterDataPointSnapshot.builder() + .labels(Labels.of("uri", "/world", "outcome", "FAILURE")) + .value(5) + .build()) + .build(); + + MetricSnapshots snapshots = new MetricSnapshots(counter1, counter2); + MetricSnapshots result = TextFormatUtil.mergeDuplicates(snapshots); + + assertThat(result).hasSize(1); + assertThat(result.get(0).getDataPoints()).hasSize(4); + } + + @Test + void testMergeDuplicates_emptySnapshots_returnsEmpty() { + MetricSnapshots snapshots = MetricSnapshots.builder().build(); + MetricSnapshots result = TextFormatUtil.mergeDuplicates(snapshots); + + assertThat(result).isEmpty(); + } + + @Test + void testMergeDuplicates_histogramSameGaugeFlag_preservesGaugeHistogram() { + HistogramSnapshot gauge1 = + HistogramSnapshot.builder() + .name("my_histogram") + .gaugeHistogram(true) + .dataPoint( + HistogramSnapshot.HistogramDataPointSnapshot.builder() + .labels(Labels.of("a", "1")) + .classicHistogramBuckets( + ClassicHistogramBuckets.of( + new double[] {Double.POSITIVE_INFINITY}, new long[] {0})) + .build()) + .build(); + HistogramSnapshot gauge2 = + HistogramSnapshot.builder() + .name("my_histogram") + .gaugeHistogram(true) + .dataPoint( + HistogramSnapshot.HistogramDataPointSnapshot.builder() + .labels(Labels.of("a", "2")) + .classicHistogramBuckets( + ClassicHistogramBuckets.of( + new double[] {Double.POSITIVE_INFINITY}, new long[] {0})) + .build()) + .build(); + MetricSnapshots snapshots = new MetricSnapshots(gauge1, gauge2); + MetricSnapshots result = TextFormatUtil.mergeDuplicates(snapshots); + + assertThat(result).hasSize(1); + HistogramSnapshot merged = (HistogramSnapshot) result.get(0); + assertThat(merged.isGaugeHistogram()).isTrue(); + assertThat(merged.getDataPoints()).hasSize(2); + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java index b7154ae70..dbd7c36f5 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java @@ -1,6 +1,8 @@ package io.prometheus.metrics.model.registry; +import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import java.util.Set; import java.util.function.Predicate; import javax.annotation.Nullable; @@ -78,4 +80,59 @@ default MetricSnapshot collect( default String getPrometheusName() { return null; } + + /** + * Returns the metric type for registration-time validation. + * + *

This is used to prevent different metric types (e.g., Counter and Gauge) from sharing the + * same name. Returning {@code null} means type validation is skipped for this collector. + * + *

Validation is performed only at registration time. If this method returns {@code null}, no + * type validation is performed for this collector, and duplicate or conflicting metrics may + * result in invalid exposition output. + * + * @return the metric type, or {@code null} to skip validation + */ + @Nullable + default MetricType getMetricType() { + return null; + } + + /** + * Returns the complete set of label names for this metric. + * + *

This includes both dynamic label names (specified in {@code labelNames()}) and constant + * label names (specified in {@code constLabels()}). Label names are normalized using Prometheus + * naming conventions. + * + *

This is used for registration-time validation to prevent duplicate label schemas for the + * same metric name. Two collectors with the same name and type can coexist if they have different + * label name sets. + * + *

Returning {@code null} is treated as an empty label set: the registry normalizes it to + * {@code Collections.emptySet()} and performs full label-schema validation and duplicate + * detection. Two collectors with the same name, type, and {@code null} (or empty) label names are + * considered duplicate and registration of the second will fail. + * + * @return the set of all label names, or {@code null} (treated as empty) for a metric with no + * labels + */ + @Nullable + default Set getLabelNames() { + return null; + } + + /** + * Returns the metric metadata (name, help, unit) for registration-time validation. + * + *

When non-null, the registry uses this to validate that metrics with the same name have + * consistent help and unit. Returning {@code null} means help/unit validation is skipped for this + * collector. + * + * @return the metric metadata, or {@code null} to skip help/unit validation + */ + @Nullable + default MetricMetadata getMetadata() { + return null; + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java new file mode 100644 index 000000000..5258da84e --- /dev/null +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java @@ -0,0 +1,18 @@ +package io.prometheus.metrics.model.registry; + +/** + * Represents the type of Prometheus metric. + * + *

This enum is used for registration-time validation to ensure that metrics with the same name + * have consistent types across all registered collectors. + */ +public enum MetricType { + COUNTER, + GAUGE, + HISTOGRAM, + SUMMARY, + INFO, + STATESET, + /** Unknown metric type, used as a fallback. */ + UNKNOWN +} diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java index d1051958d..e4a224bdf 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java @@ -1,9 +1,11 @@ package io.prometheus.metrics.model.registry; +import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; import java.util.Collections; import java.util.List; +import java.util.Set; import java.util.function.Predicate; import javax.annotation.Nullable; @@ -70,4 +72,60 @@ default MetricSnapshots collect( default List getPrometheusNames() { return Collections.emptyList(); } + + /** + * Returns the metric type for the given Prometheus name. + * + *

This is used for per-name type validation during registration. Returning {@code null} means + * type validation is skipped for that specific metric name. + * + *

Validation is performed only at registration time. If this method returns {@code null}, no + * type validation is performed for that name, and duplicate or conflicting metrics may result in + * invalid exposition output. + * + * @param prometheusName the Prometheus metric name + * @return the metric type for the given name, or {@code null} to skip validation + */ + @Nullable + default MetricType getMetricType(String prometheusName) { + return null; + } + + /** + * Returns the complete set of label names for the given Prometheus name. + * + *

This includes both dynamic label names and constant label names. Label names are normalized + * using Prometheus naming conventions (dots converted to underscores). + * + *

This is used for per-name label schema validation during registration. Two collectors with + * the same name and type can coexist if they have different label name sets. + * + *

Returning {@code null} is treated as an empty label set: the registry normalizes it to + * {@code Collections.emptySet()} and performs full label-schema validation and duplicate + * detection. Two collectors with the same name, type, and {@code null} (or empty) label names are + * considered duplicate and registration of the second will fail. + * + * @param prometheusName the Prometheus metric name + * @return the set of all label names for the given name, or {@code null} (treated as empty) for a + * metric with no labels + */ + @Nullable + default Set getLabelNames(String prometheusName) { + return null; + } + + /** + * Returns the metric metadata (name, help, unit) for the given Prometheus name. + * + *

When non-null, the registry uses this to validate that metrics with the same name have + * consistent help and unit. Returning {@code null} means help/unit validation is skipped for that + * name. + * + * @param prometheusName the Prometheus metric name + * @return the metric metadata for that name, or {@code null} to skip help/unit validation + */ + @Nullable + default MetricMetadata getMetadata(String prometheusName) { + return null; + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java index 7db568d95..f66824972 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java @@ -1,13 +1,18 @@ package io.prometheus.metrics.model.registry; -import static io.prometheus.metrics.model.snapshots.PrometheusNaming.prometheusName; +import static java.util.Collections.emptySet; +import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import io.prometheus.metrics.model.snapshots.Unit; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Predicate; import javax.annotation.Nullable; @@ -15,52 +20,286 @@ public class PrometheusRegistry { public static final PrometheusRegistry defaultRegistry = new PrometheusRegistry(); - private final Set prometheusNames = ConcurrentHashMap.newKeySet(); - private final List collectors = new CopyOnWriteArrayList<>(); - private final List multiCollectors = new CopyOnWriteArrayList<>(); + private final Set collectors = ConcurrentHashMap.newKeySet(); + private final Set multiCollectors = ConcurrentHashMap.newKeySet(); + private final ConcurrentHashMap registered = new ConcurrentHashMap<>(); + private final ConcurrentHashMap collectorMetadata = + new ConcurrentHashMap<>(); + private final ConcurrentHashMap> + multiCollectorMetadata = new ConcurrentHashMap<>(); + + /** Stores the registration details for a Collector at registration time. */ + private static class CollectorRegistration { + final String prometheusName; + final Set labelNames; + + CollectorRegistration(String prometheusName, @Nullable Set labelNames) { + this.prometheusName = prometheusName; + this.labelNames = immutableLabelNames(labelNames); + } + } + + /** + * Stores the registration details for a single metric within a MultiCollector. A MultiCollector + * can produce multiple metrics, so we need one of these per metric name. + */ + private static class MultiCollectorRegistration { + final String prometheusName; + final Set labelNames; + + MultiCollectorRegistration(String prometheusName, @Nullable Set labelNames) { + this.prometheusName = prometheusName; + this.labelNames = immutableLabelNames(labelNames); + } + } + + /** + * Tracks registration information for each metric name to enable validation of type consistency, + * label schema uniqueness, and help/unit consistency. + */ + private static class RegistrationInfo { + private final MetricType type; + private final Set> labelSchemas; + @Nullable private String help; + @Nullable private Unit unit; + + private RegistrationInfo( + MetricType type, + Set> labelSchemas, + @Nullable String help, + @Nullable Unit unit) { + this.type = type; + this.labelSchemas = labelSchemas; + this.help = help; + this.unit = unit; + } + + static RegistrationInfo of( + MetricType type, + @Nullable Set labelNames, + @Nullable String help, + @Nullable Unit unit) { + Set> labelSchemas = ConcurrentHashMap.newKeySet(); + Set normalized = + (labelNames == null || labelNames.isEmpty()) ? emptySet() : labelNames; + labelSchemas.add(normalized); + return new RegistrationInfo(type, labelSchemas, help, unit); + } + + /** + * Validates that the given help and unit are exactly equal to this registration. Throws if + * values differ, including when one is null and the other is non-null. This ensures consistent + * metadata across all collectors sharing the same metric name. + */ + void validateMetadata(@Nullable String newHelp, @Nullable Unit newUnit) { + if (!Objects.equals(help, newHelp)) { + throw new IllegalArgumentException( + "Conflicting help strings. Existing: \"" + help + "\", new: \"" + newHelp + "\""); + } + if (!Objects.equals(unit, newUnit)) { + throw new IllegalArgumentException( + "Conflicting unit. Existing: " + unit + ", new: " + newUnit); + } + } + + /** + * Adds a label schema to this registration. + * + * @param labelNames the label names to add (null or empty sets are normalized to empty set) + * @return true if the schema was added (new), false if it already existed + */ + boolean addLabelSet(@Nullable Set labelNames) { + Set normalized = + (labelNames == null || labelNames.isEmpty()) ? emptySet() : labelNames; + return labelSchemas.add(normalized); + } + + /** + * Removes a label schema from this registration. + * + * @param labelNames the label names to remove (null or empty sets are normalized to empty set) + */ + void removeLabelSet(@Nullable Set labelNames) { + Set normalized = + (labelNames == null || labelNames.isEmpty()) ? emptySet() : labelNames; + labelSchemas.remove(normalized); + } + + /** Returns true if all label schemas have been unregistered. */ + boolean isEmpty() { + return labelSchemas.isEmpty(); + } + + MetricType getType() { + return type; + } + } + + /** + * Returns an immutable set of label names for storage. Defends against mutation of the set + * returned by {@code Collector.getLabelNames()} after registration, which would break duplicate + * detection and unregistration. + */ + private static Set immutableLabelNames(@Nullable Set labelNames) { + if (labelNames == null || labelNames.isEmpty()) { + return emptySet(); + } + return Collections.unmodifiableSet(new HashSet<>(labelNames)); + } + + /** + * Validates the registration of a metric with the given parameters. Ensures type consistency, + * label schema uniqueness, and help/unit consistency. + */ + private void validateRegistration( + String prometheusName, + MetricType metricType, + Set normalizedLabels, + @Nullable String help, + @Nullable Unit unit) { + final MetricType type = metricType; + final Set names = normalizedLabels; + final String helpForValidation = help; + final Unit unitForValidation = unit; + registered.compute( + prometheusName, + (n, existingInfo) -> { + if (existingInfo == null) { + return RegistrationInfo.of(type, names, helpForValidation, unitForValidation); + } else { + if (existingInfo.getType() != type) { + throw new IllegalArgumentException( + prometheusName + + ": Conflicting metric types. Existing: " + + existingInfo.getType() + + ", new: " + + type); + } + // Check label set first; only mutate help/unit after validation passes. + if (!existingInfo.addLabelSet(names)) { + throw new IllegalArgumentException( + prometheusName + ": duplicate metric name with identical label schema " + names); + } + // Roll back label schema if metadata validation fails + try { + existingInfo.validateMetadata(helpForValidation, unitForValidation); + } catch (IllegalArgumentException e) { + existingInfo.removeLabelSet(names); + throw e; + } + return existingInfo; + } + }); + } public void register(Collector collector) { - String prometheusName = collector.getPrometheusName(); - if (prometheusName != null) { - if (!prometheusNames.add(prometheusName)) { - throw new IllegalStateException( - "Can't register " - + prometheusName - + " because a metric with that name is already registered."); + if (!collectors.add(collector)) { + throw new IllegalArgumentException("Collector instance is already registered"); + } + try { + String prometheusName = collector.getPrometheusName(); + MetricType metricType = collector.getMetricType(); + Set normalizedLabels = immutableLabelNames(collector.getLabelNames()); + MetricMetadata metadata = collector.getMetadata(); + String help = metadata != null ? metadata.getHelp() : null; + Unit unit = metadata != null ? metadata.getUnit() : null; + + // Only perform validation if collector provides sufficient metadata. + // Collectors that don't implement getPrometheusName()/getMetricType() will skip validation. + if (prometheusName != null && metricType != null) { + validateRegistration(prometheusName, metricType, normalizedLabels, help, unit); + collectorMetadata.put( + collector, new CollectorRegistration(prometheusName, normalizedLabels)); } + // Catch RuntimeException broadly because collector methods (getPrometheusName, getMetricType, + // etc.) are user-implemented and could throw any RuntimeException. Ensures cleanup on + // failure. + } catch (RuntimeException e) { + collectors.remove(collector); + CollectorRegistration reg = collectorMetadata.remove(collector); + if (reg != null && reg.prometheusName != null) { + unregisterLabelSchema(reg.prometheusName, reg.labelNames); + } + throw e; } - collectors.add(collector); } public void register(MultiCollector collector) { - for (String prometheusName : collector.getPrometheusNames()) { - if (!prometheusNames.add(prometheusName)) { - throw new IllegalStateException( - "Can't register " + prometheusName + " because that name is already registered."); + if (!multiCollectors.add(collector)) { + throw new IllegalArgumentException("MultiCollector instance is already registered"); + } + List prometheusNamesList = collector.getPrometheusNames(); + List registrations = new ArrayList<>(); + + try { + for (String prometheusName : prometheusNamesList) { + MetricType metricType = collector.getMetricType(prometheusName); + Set normalizedLabels = immutableLabelNames(collector.getLabelNames(prometheusName)); + MetricMetadata metadata = collector.getMetadata(prometheusName); + String help = metadata != null ? metadata.getHelp() : null; + Unit unit = metadata != null ? metadata.getUnit() : null; + + if (metricType != null) { + validateRegistration(prometheusName, metricType, normalizedLabels, help, unit); + registrations.add(new MultiCollectorRegistration(prometheusName, normalizedLabels)); + } } + + multiCollectorMetadata.put(collector, registrations); + // Catch RuntimeException broadly because collector methods (getPrometheusNames, + // getMetricType, etc.) are user-implemented and could throw any RuntimeException. + // Ensures cleanup on failure. + } catch (RuntimeException e) { + multiCollectors.remove(collector); + for (MultiCollectorRegistration registration : registrations) { + unregisterLabelSchema(registration.prometheusName, registration.labelNames); + } + throw e; } - multiCollectors.add(collector); } public void unregister(Collector collector) { collectors.remove(collector); - String prometheusName = collector.getPrometheusName(); - if (prometheusName != null) { - prometheusNames.remove(collector.getPrometheusName()); + + CollectorRegistration registration = collectorMetadata.remove(collector); + if (registration != null && registration.prometheusName != null) { + unregisterLabelSchema(registration.prometheusName, registration.labelNames); } } public void unregister(MultiCollector collector) { multiCollectors.remove(collector); - for (String prometheusName : collector.getPrometheusNames()) { - prometheusNames.remove(prometheusName(prometheusName)); + + List registrations = multiCollectorMetadata.remove(collector); + if (registrations != null) { + for (MultiCollectorRegistration registration : registrations) { + unregisterLabelSchema(registration.prometheusName, registration.labelNames); + } } } + /** + * Removes the label schema for the given metric name. If no label schemas remain for that name, + * removes the metric name entirely from the registry. + */ + private void unregisterLabelSchema(String prometheusName, Set labelNames) { + registered.computeIfPresent( + prometheusName, + (name, info) -> { + info.removeLabelSet(labelNames); + if (info.isEmpty()) { + return null; + } + return info; + }); + } + public void clear() { collectors.clear(); multiCollectors.clear(); - prometheusNames.clear(); + registered.clear(); + collectorMetadata.clear(); + multiCollectorMetadata.clear(); } public MetricSnapshots scrape() { @@ -68,29 +307,26 @@ public MetricSnapshots scrape() { } public MetricSnapshots scrape(@Nullable PrometheusScrapeRequest scrapeRequest) { - MetricSnapshots.Builder result = MetricSnapshots.builder(); + List allSnapshots = new ArrayList<>(); for (Collector collector : collectors) { MetricSnapshot snapshot = scrapeRequest == null ? collector.collect() : collector.collect(scrapeRequest); if (snapshot != null) { - if (result.containsMetricName(snapshot.getMetadata().getName())) { - throw new IllegalStateException( - snapshot.getMetadata().getPrometheusName() + ": duplicate metric name."); - } - result.metricSnapshot(snapshot); + allSnapshots.add(snapshot); } } for (MultiCollector collector : multiCollectors) { MetricSnapshots snapshots = scrapeRequest == null ? collector.collect() : collector.collect(scrapeRequest); for (MetricSnapshot snapshot : snapshots) { - if (result.containsMetricName(snapshot.getMetadata().getName())) { - throw new IllegalStateException( - snapshot.getMetadata().getPrometheusName() + ": duplicate metric name."); - } - result.metricSnapshot(snapshot); + allSnapshots.add(snapshot); } } + + MetricSnapshots.Builder result = MetricSnapshots.builder(); + for (MetricSnapshot snapshot : allSnapshots) { + result.metricSnapshot(snapshot); + } return result.build(); } @@ -106,7 +342,7 @@ public MetricSnapshots scrape( if (includedNames == null) { return scrape(scrapeRequest); } - MetricSnapshots.Builder result = MetricSnapshots.builder(); + List allSnapshots = new ArrayList<>(); for (Collector collector : collectors) { String prometheusName = collector.getPrometheusName(); // prometheusName == null means the name is unknown, and we have to scrape to learn the name. @@ -117,7 +353,7 @@ public MetricSnapshots scrape( ? collector.collect(includedNames) : collector.collect(includedNames, scrapeRequest); if (snapshot != null) { - result.metricSnapshot(snapshot); + allSnapshots.add(snapshot); } } } @@ -141,11 +377,16 @@ public MetricSnapshots scrape( : collector.collect(includedNames, scrapeRequest); for (MetricSnapshot snapshot : snapshots) { if (snapshot != null) { - result.metricSnapshot(snapshot); + allSnapshots.add(snapshot); } } } } + + MetricSnapshots.Builder result = MetricSnapshots.builder(); + for (MetricSnapshot snapshot : allSnapshots) { + result.metricSnapshot(snapshot); + } return result.build(); } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java index ecee897e4..cdec0ddaf 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java @@ -28,23 +28,46 @@ public MetricSnapshots(MetricSnapshot... snapshots) { * #builder()}. * * @param snapshots the constructor creates a sorted copy of snapshots. - * @throws IllegalArgumentException if snapshots contains duplicate metric names. To avoid - * duplicate metric names use {@link #builder()} and check {@link - * Builder#containsMetricName(String)} before calling {@link - * Builder#metricSnapshot(MetricSnapshot)}. + * @throws IllegalArgumentException if snapshots contain conflicting metric types (same name but + * different metric types like Counter vs Gauge), or if two HistogramSnapshots share a name + * but differ in gauge histogram vs classic histogram. */ public MetricSnapshots(Collection snapshots) { List list = new ArrayList<>(snapshots); list.sort(comparing(s -> s.getMetadata().getPrometheusName())); - for (int i = 0; i < snapshots.size() - 1; i++) { - if (list.get(i) - .getMetadata() - .getPrometheusName() - .equals(list.get(i + 1).getMetadata().getPrometheusName())) { - throw new IllegalArgumentException( - list.get(i).getMetadata().getPrometheusName() + ": duplicate metric name"); + + // Validate no conflicting metric types + for (int i = 0; i < list.size() - 1; i++) { + String name1 = list.get(i).getMetadata().getPrometheusName(); + String name2 = list.get(i + 1).getMetadata().getPrometheusName(); + + if (name1.equals(name2)) { + MetricSnapshot s1 = list.get(i); + MetricSnapshot s2 = list.get(i + 1); + Class type1 = s1.getClass(); + Class type2 = s2.getClass(); + + if (!type1.equals(type2)) { + throw new IllegalArgumentException( + name1 + + ": conflicting metric types: " + + type1.getSimpleName() + + " and " + + type2.getSimpleName()); + } + + // HistogramSnapshot: gauge histogram vs classic histogram are semantically different + if (s1 instanceof HistogramSnapshot) { + HistogramSnapshot h1 = (HistogramSnapshot) s1; + HistogramSnapshot h2 = (HistogramSnapshot) s2; + if (h1.isGaugeHistogram() != h2.isGaugeHistogram()) { + throw new IllegalArgumentException( + name1 + ": conflicting histogram types: gauge histogram and classic histogram"); + } + } } } + this.snapshots = unmodifiableList(list); } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java new file mode 100644 index 000000000..166b374b8 --- /dev/null +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java @@ -0,0 +1,116 @@ +package io.prometheus.metrics.model.registry; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; + +import io.prometheus.metrics.model.snapshots.CounterSnapshot; +import io.prometheus.metrics.model.snapshots.GaugeSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +/** + * Tests that use the Prometheus registry in the same way as the OpenTelemetry Java SDK Prometheus + * exporter ({@code io.opentelemetry.exporter.prometheus}). The SDK's {@code PrometheusMetricReader} + * implements {@link MultiCollector} with default implementations for all optional methods: {@link + * MultiCollector#getPrometheusNames()} returns an empty list, and {@link + * MultiCollector#getMetricType(String)}, {@link MultiCollector#getLabelNames(String)}, and {@link + * MultiCollector#getMetadata(String)} return null. This test suite ensures that registration, + * scrape, and unregister continue to work for that usage pattern and that a shared registry with + * both SDK-style and validated collectors behaves correctly. + */ +class OpenTelemetryExporterRegistryCompatibilityTest { + + /** + * A MultiCollector that mimics the OpenTelemetry Java SDK's PrometheusMetricReader: it does not + * override getPrometheusNames() (empty list), getMetricType(String), getLabelNames(String), or + * getMetadata(String) (all null). Only collect() is implemented and returns MetricSnapshots. + */ + private static final MultiCollector OTEL_STYLE_MULTI_COLLECTOR = + new MultiCollector() { + @Override + public MetricSnapshots collect() { + return new MetricSnapshots( + CounterSnapshot.builder() + .name("otel_metric") + .help("A metric produced by an OTel-style converter") + .dataPoint(CounterSnapshot.CounterDataPointSnapshot.builder().value(42.0).build()) + .build()); + } + }; + + @Test + void registerOtelStyleMultiCollector_succeeds() { + PrometheusRegistry registry = new PrometheusRegistry(); + + assertThatCode(() -> registry.register(OTEL_STYLE_MULTI_COLLECTOR)).doesNotThrowAnyException(); + } + + @Test + void scrape_afterRegisteringOtelStyleMultiCollector_returnsSnapshotsFromCollector() { + PrometheusRegistry registry = new PrometheusRegistry(); + registry.register(OTEL_STYLE_MULTI_COLLECTOR); + + MetricSnapshots snapshots = registry.scrape(); + + assertThat(snapshots).hasSize(1); + MetricSnapshot snapshot = snapshots.get(0); + assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("otel_metric"); + } + + @Test + void unregisterOtelStyleMultiCollector_succeedsAndScrapeNoLongerIncludesIt() { + PrometheusRegistry registry = new PrometheusRegistry(); + registry.register(OTEL_STYLE_MULTI_COLLECTOR); + + assertThat(registry.scrape()).hasSize(1); + + assertThatCode(() -> registry.unregister(OTEL_STYLE_MULTI_COLLECTOR)) + .doesNotThrowAnyException(); + + assertThat(registry.scrape()).isEmpty(); + } + + @Test + void sharedRegistry_otelStyleMultiCollectorAndValidatedCollector_bothParticipateInScrape() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector validatedCollector = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("app_gauge").help("App gauge").build(); + } + + @Override + public String getPrometheusName() { + return "app_gauge"; + } + + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + + @Override + public java.util.Set getLabelNames() { + return Collections.emptySet(); + } + }; + + registry.register(validatedCollector); + registry.register(OTEL_STYLE_MULTI_COLLECTOR); + + MetricSnapshots snapshots = registry.scrape(); + + assertThat(snapshots).hasSize(2); + assertThat(snapshots) + .extracting(s -> s.getMetadata().getPrometheusName()) + .containsExactlyInAnyOrder("app_gauge", "otel_metric"); + + registry.unregister(OTEL_STYLE_MULTI_COLLECTOR); + assertThat(registry.scrape()).hasSize(1); + assertThat(registry.scrape().get(0).getMetadata().getPrometheusName()).isEqualTo("app_gauge"); + } +} diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java index 3197dabb0..90a04934e 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java @@ -1,15 +1,19 @@ package io.prometheus.metrics.model.registry; +import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; +import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.junit.jupiter.api.Test; class PrometheusRegistryTest { @@ -82,25 +86,425 @@ public List getPrometheusNames() { }; @Test - void registerNoName() { + void register_sameInstanceTwice_notAllowed() { PrometheusRegistry registry = new PrometheusRegistry(); - // If the collector does not have a name at registration time, there is no conflict during - // registration. - registry.register(noName); + registry.register(noName); - // However, at scrape time the collector has to provide a metric name, and then we'll get a - // duplicate name error. - assertThatCode(registry::scrape) - .hasMessageContaining("duplicate") - .hasMessageContaining("no_name_gauge"); + + assertThatThrownBy(() -> registry.register(noName)) + .hasMessageContaining("Collector instance is already registered"); } @Test - void registerDuplicateName() { + void register_duplicateName_differentTypes_notAllowed() { PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counterA1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("counter_a").build(); + } + + @Override + public String getPrometheusName() { + return "counter_a"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + }; + + Collector gaugeA1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("counter_a").build(); + } + + @Override + public String getPrometheusName() { + return "counter_a"; + } + + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + }; + registry.register(counterA1); - assertThatExceptionOfType(IllegalStateException.class) - .isThrownBy(() -> registry.register(counterA2)); + + assertThatThrownBy(() -> registry.register(gaugeA1)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Conflicting metric types"); + } + + @Test + void register_sameName_sameType_differentLabelSchemas_allowed() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counterWithPathLabel = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + Collector counterWithRegionLabel = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("region")); + } + }; + + // Both collectors have same name and type, but different label schemas + // This should succeed + registry.register(counterWithPathLabel); + assertThatCode(() -> registry.register(counterWithRegionLabel)).doesNotThrowAnyException(); + } + + @Test + void register_sameName_sameType_sameLabelSchema_notAllowed() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counter1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + Collector counter2 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + registry.register(counter1); + + // Second collector has same name, type, and label schema - should fail + assertThatThrownBy(() -> registry.register(counter2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("duplicate metric name with identical label schema"); + } + + @Test + void register_duplicateLabelSchema_rollsBackCollectorOnFailure() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counter1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("http_requests").build(); + } + + @Override + public String getPrometheusName() { + return "http_requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + Collector counter2 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("http_requests").build(); + } + + @Override + public String getPrometheusName() { + return "http_requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + registry.register(counter1); + + // Second collector has same name and label schema - registration fails during metadata + // validation. The failed collector must be rolled back (not present in the registry). + assertThatThrownBy(() -> registry.register(counter2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("duplicate metric name with identical label schema"); + + // Only the first collector should be in the registry; counter2 was removed on rollback. + assertThat(registry.scrape().size()).isEqualTo(1); + } + + @Test + void register_metadataValidationFailure_rollsBackLabelSchema() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counterWithHelpOne = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "First help", null); + } + }; + + Collector counterWithHelpTwo = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("status")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "Second help", null); + } + }; + + Collector counterWithCorrectHelp = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("status")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "First help", null); + } + }; + + registry.register(counterWithHelpOne); + + // Second collector has conflicting help - should fail and roll back its label schema + assertThatThrownBy(() -> registry.register(counterWithHelpTwo)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Conflicting help strings"); + + // Third collector has same label schema as second (which failed), but correct help. + // If label schema wasn't rolled back, this would fail with "duplicate label schema". + // If rollback worked, this should succeed. + assertThatCode(() -> registry.register(counterWithCorrectHelp)).doesNotThrowAnyException(); + + // Verify both collectors are in the registry + assertThat(registry.scrape().size()).isEqualTo(2); + } + + @Test + void register_nullType_skipsValidation() { + PrometheusRegistry registry = new PrometheusRegistry(); + + // Collectors without getMetricType() skip registration-time validation. + // This allows legacy collectors to work without implementing all getters. + Collector legacyCollector1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("legacy_metric").build(); + } + + @Override + public String getPrometheusName() { + return "legacy_metric"; + } + }; + + Collector legacyCollector2 = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("legacy_metric").build(); + } + + @Override + public String getPrometheusName() { + return "legacy_metric"; + } + }; + + // Both collectors can register successfully since validation is skipped + assertThatCode(() -> registry.register(legacyCollector1)).doesNotThrowAnyException(); + assertThatCode(() -> registry.register(legacyCollector2)).doesNotThrowAnyException(); + } + + @Test + void register_multiCollector_withTypeValidation() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counter = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("shared_metric").build(); + } + + @Override + public String getPrometheusName() { + return "shared_metric"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + }; + + MultiCollector multiWithGauge = + new MultiCollector() { + @Override + public MetricSnapshots collect() { + return new MetricSnapshots(GaugeSnapshot.builder().name("shared_metric").build()); + } + + @Override + public List getPrometheusNames() { + return asList("shared_metric"); + } + + @Override + public MetricType getMetricType(String prometheusName) { + return MetricType.GAUGE; + } + }; + + registry.register(counter); + + // MultiCollector tries to register a Gauge with the same name as existing Counter + assertThatThrownBy(() -> registry.register(multiWithGauge)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Conflicting metric types"); } @Test @@ -125,8 +529,10 @@ void registerOk() { void registerDuplicateMultiCollector() { PrometheusRegistry registry = new PrometheusRegistry(); registry.register(multiCollector); - assertThatExceptionOfType(IllegalStateException.class) - .isThrownBy(() -> registry.register(multiCollector)); + // Registering the same instance twice should fail + assertThatThrownBy(() -> registry.register(multiCollector)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("already registered"); } @Test @@ -152,4 +558,533 @@ void clearOk() { registry.clear(); assertThat(registry.scrape().size()).isZero(); } + + @Test + void unregister_shouldRemoveLabelSchemaFromRegistrationInfo() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counterWithPathLabel = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + Collector counterWithRegionLabel = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("region")); + } + }; + + Collector counterWithPathLabelAgain = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public String getPrometheusName() { + return "requests_total"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path", "status")); + } + }; + + registry.register(counterWithPathLabel); + registry.register(counterWithRegionLabel); + + registry.unregister(counterWithPathLabel); + + assertThatCode(() -> registry.register(counterWithPathLabelAgain)).doesNotThrowAnyException(); + } + + @Test + void register_withEmptyLabelSets_shouldDetectDuplicates() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector collector1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + + // getLabelNames() returns null by default + }; + + // Register another collector with same name and type, also no labels + Collector collector2 = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + + // getLabelNames() returns null by default + }; + + registry.register(collector1); + + assertThatThrownBy(() -> registry.register(collector2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("duplicate metric name with identical label schema"); + } + + @Test + void register_withMixedNullAndEmptyLabelSets_shouldDetectDuplicates() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector collector1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(); + } + }; + + Collector collector2 = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.GAUGE; + } + + // getLabelNames() returns null by default + }; + + registry.register(collector1); + + // null and empty should be treated the same + assertThatThrownBy(() -> registry.register(collector2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("duplicate metric name with identical label schema"); + } + + @Test + void register_sameName_differentHelp_notAllowed() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector withHelpOne = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").help("First help").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "First help", null); + } + }; + + Collector withHelpTwo = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").help("Second help").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("status")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "Second help", null); + } + }; + + registry.register(withHelpOne); + assertThatThrownBy(() -> registry.register(withHelpTwo)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Conflicting help strings"); + } + + @Test + void register_sameName_nullVsNonNullHelp_notAllowed() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector withHelp = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").help("Total requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "Total requests", null); + } + }; + + Collector withoutHelp = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("status")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", null, null); + } + }; + + registry.register(withHelp); + assertThatThrownBy(() -> registry.register(withoutHelp)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Conflicting help strings"); + } + + @Test + void register_sameName_sameHelpAndUnit_allowed() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector withPath = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").help("Total requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "Total requests", null); + } + }; + + Collector withStatus = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").help("Total requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("status")); + } + + @Override + public MetricMetadata getMetadata() { + return new MetricMetadata("requests", "Total requests", null); + } + }; + + registry.register(withPath); + assertThatCode(() -> registry.register(withStatus)).doesNotThrowAnyException(); + } + + @Test + void unregister_lastCollector_removesPrometheusName() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counter1 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("path")); + } + }; + + Collector counter2 = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + + @Override + public Set getLabelNames() { + return new HashSet<>(asList("status")); + } + }; + + registry.register(counter1); + registry.register(counter2); + + // Unregister first collector - name should still be registered + registry.unregister(counter1); + MetricSnapshots snapshots = registry.scrape(); + assertThat(snapshots.size()).isEqualTo(1); + + // Unregister second collector - name should be removed + registry.unregister(counter2); + snapshots = registry.scrape(); + assertThat(snapshots.size()).isEqualTo(0); + + // Should be able to register again with same name + assertThatCode(() -> registry.register(counter1)).doesNotThrowAnyException(); + } + + @Test + void unregister_multiCollector_removesAllLabelSchemas() { + PrometheusRegistry registry = new PrometheusRegistry(); + + MultiCollector multi = + new MultiCollector() { + @Override + public MetricSnapshots collect() { + return new MetricSnapshots( + CounterSnapshot.builder().name("requests").build(), + GaugeSnapshot.builder().name("connections").build()); + } + + @Override + public List getPrometheusNames() { + return asList("requests", "connections"); + } + + @Override + public MetricType getMetricType(String prometheusName) { + return prometheusName.equals("requests") ? MetricType.COUNTER : MetricType.GAUGE; + } + }; + + registry.register(multi); + assertThat(registry.scrape().size()).isEqualTo(2); + + registry.unregister(multi); + assertThat(registry.scrape().size()).isEqualTo(0); + + // Should be able to register collectors with same names again + Collector counter = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests").build(); + } + + @Override + public String getPrometheusName() { + return "requests"; + } + + @Override + public MetricType getMetricType() { + return MetricType.COUNTER; + } + }; + + assertThatCode(() -> registry.register(counter)).doesNotThrowAnyException(); + } + + @Test + void unregister_legacyCollector_noErrors() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector legacy = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("legacy_metric").build(); + } + + @Override + public String getPrometheusName() { + return "legacy_metric"; + } + // No getMetricType() - returns null + }; + + registry.register(legacy); + assertThat(registry.scrape().size()).isEqualTo(1); + + // Unregister should work without errors even for legacy collectors + assertThatCode(() -> registry.unregister(legacy)).doesNotThrowAnyException(); + assertThat(registry.scrape().size()).isEqualTo(0); + } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java index 5d82a06a0..224ca691a 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricSnapshotsTest.java @@ -61,6 +61,34 @@ void testDuplicateName() { .isThrownBy(() -> new MetricSnapshots(c, g)); } + @Test + void testDuplicateName_histogramGaugeVsClassic_throws() { + HistogramSnapshot classic = + HistogramSnapshot.builder() + .name("my_histogram") + .dataPoint( + HistogramSnapshot.HistogramDataPointSnapshot.builder() + .classicHistogramBuckets( + ClassicHistogramBuckets.of( + new double[] {Double.POSITIVE_INFINITY}, new long[] {0})) + .build()) + .build(); + HistogramSnapshot gauge = + HistogramSnapshot.builder() + .name("my_histogram") + .gaugeHistogram(true) + .dataPoint( + HistogramSnapshot.HistogramDataPointSnapshot.builder() + .classicHistogramBuckets( + ClassicHistogramBuckets.of( + new double[] {Double.POSITIVE_INFINITY}, new long[] {0})) + .build()) + .build(); + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> new MetricSnapshots(classic, gauge)) + .withMessageContaining("conflicting histogram types"); + } + @Test void testBuilder() { CounterSnapshot counter = From e07e6dd2f4651ccd082ec1872d44e36e125d61ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Feb 2026 05:51:17 +0000 Subject: [PATCH 070/110] chore(deps): update eclipse-temurin docker tag to v25.0.2_10-jre (#1853) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `25.0.1_8-jre` โ†’ `25.0.2_10-jre` | | eclipse-temurin | | patch | `25.0.1_8-jre` โ†’ `25.0.2_10-jre` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-custom-buckets/docker-compose.yaml | 2 +- .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile | 2 +- .../example-exporter-opentelemetry/oats-tests/http/Dockerfile | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml index 7579faa3f..63ff76f6b 100644 --- a/examples/example-custom-buckets/docker-compose.yaml +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a + image: eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f network_mode: host volumes: - ./target/example-custom-buckets.jar:/example-custom-buckets.jar diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile index 96c33c029..49f971ee6 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a +FROM eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f COPY target/example-exporter-opentelemetry.jar ./app.jar # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile index b5cfb792e..e2c173239 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a +FROM eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f COPY target/example-exporter-opentelemetry.jar ./app.jar diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index 2768d915a..e399212a7 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.1_8-jre@sha256:9d1d3068b16f2c4127be238ca06439012ff14a8fdf38f8f62472160f9058464a + image: eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f network_mode: host volumes: - ./target/example-native-histogram.jar:/example-native-histogram.jar From 86533fd71cb9e1b051f1b6a00e7bc127ed63c9af Mon Sep 17 00:00:00 2001 From: Jack Berg <34418638+jack-berg@users.noreply.github.com> Date: Fri, 6 Feb 2026 03:34:01 -0600 Subject: [PATCH 071/110] Improve histogram, summary performance under contention by striping observationCount (#1794) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Was working on improving the performance of opentelemetry-java metrics under high contention, and realized that the same strategy I identified to help over there helps for the prometheus implementation as well! The idea here is recognizing that `Buffer.observationCount` is the bottleneck under contention. In contrast to the other histogram / summary `LongAdder` fields, `Buffer.observationCount` is `AtomicLong` which performs much worse than `LongAdder` under high contention. Its necessary that the type is `AtomicLong` because the CAS APIs accommodate the two way communication that the record / collect paths need to signal that a collection has started and all records have successfully completed (preventing partial writes). However, we can "have our cake and eat it to" by striping `Buffer.observationCount` into many instances, such that the contention on any instance is reduced. This is actually what `LongAdder` does under the covers. This implementation stripes it into `Runtime.getRuntime().availableProcessors()` instances, and uses `Thread.currentThread().getId()) % stripedObservationCounts.length` to select which instance any particular record thread should use. Performance increase is substantial. Here's the before and after of `HistogramBenchmark` on my machine (Apple M4 Mac Pro w/ 48gb RAM): Before: ``` Benchmark Mode Cnt Score Error Units HistogramBenchmark.openTelemetryClassic thrpt 25 1138.465 ยฑ 165.921 ops/s HistogramBenchmark.openTelemetryExponential thrpt 25 677.483 ยฑ 28.765 ops/s HistogramBenchmark.prometheusClassic thrpt 25 5126.048 ยฑ 153.878 ops/s HistogramBenchmark.prometheusNative thrpt 25 3854.323 ยฑ 107.789 ops/s HistogramBenchmark.simpleclient thrpt 25 13285.351 ยฑ 1784.506 ops/s ``` After: ``` Benchmark Mode Cnt Score Error Units HistogramBenchmark.openTelemetryClassic thrpt 25 925.528 ยฑ 13.744 ops/s HistogramBenchmark.openTelemetryExponential thrpt 25 584.404 ยฑ 32.762 ops/s HistogramBenchmark.prometheusClassic thrpt 25 14623.971 ยฑ 2117.588 ops/s HistogramBenchmark.prometheusNative thrpt 25 7405.672 ยฑ 857.611 ops/s HistogramBenchmark.simpleclient thrpt 25 13102.822 ยฑ 3081.096 ops/s ``` --------- Signed-off-by: Jack Berg <34418638+jack-berg@users.noreply.github.com> --- .../metrics/core/metrics/Buffer.java | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java index d4ff33a37..1c47f867c 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Buffer.java @@ -18,7 +18,15 @@ class Buffer { private static final long bufferActiveBit = 1L << 63; - private final AtomicLong observationCount = new AtomicLong(0); + // Tracking observation counts requires an AtomicLong for coordination between recording and + // collecting. AtomicLong does much worse under contention than the LongAdder instances used + // elsewhere to hold aggregated state. To improve, we stripe the AtomicLong into N instances, + // where N is the number of available processors. Each record operation chooses the appropriate + // instance to use based on the modulo of its thread id and N. This is a more naive / simple + // implementation compared to the striping used under the hood in java.util.concurrent classes + // like LongAdder - contention and hot spots can still occur if recording thread ids happen to + // resolve to the same index. Further improvement is possible. + private final AtomicLong[] stripedObservationCounts; private double[] observationBuffer = new double[0]; private int bufferPos = 0; private boolean reset = false; @@ -27,8 +35,17 @@ class Buffer { ReentrantLock runLock = new ReentrantLock(); Condition bufferFilled = appendLock.newCondition(); + Buffer() { + stripedObservationCounts = new AtomicLong[Runtime.getRuntime().availableProcessors()]; + for (int i = 0; i < stripedObservationCounts.length; i++) { + stripedObservationCounts[i] = new AtomicLong(0); + } + } + boolean append(double value) { - long count = observationCount.incrementAndGet(); + int index = Math.abs((int) Thread.currentThread().getId()) % stripedObservationCounts.length; + AtomicLong observationCountForThread = stripedObservationCounts[index]; + long count = observationCountForThread.incrementAndGet(); if ((count & bufferActiveBit) == 0) { return false; // sign bit not set -> buffer not active. } else { @@ -69,7 +86,10 @@ T run( runLock.lock(); try { // Signal that the buffer is active. - Long expectedCount = observationCount.getAndAdd(bufferActiveBit); + long expectedCount = 0L; + for (AtomicLong observationCount : stripedObservationCounts) { + expectedCount += observationCount.getAndAdd(bufferActiveBit); + } while (!complete.apply(expectedCount)) { // Wait until all in-flight threads have added their observations to the histogram / @@ -81,14 +101,18 @@ T run( result = createResult.get(); // Signal that the buffer is inactive. - int expectedBufferSize; + long expectedBufferSize = 0; if (reset) { - expectedBufferSize = - (int) ((observationCount.getAndSet(0) & ~bufferActiveBit) - expectedCount); + for (AtomicLong observationCount : stripedObservationCounts) { + expectedBufferSize += observationCount.getAndSet(0) & ~bufferActiveBit; + } reset = false; } else { - expectedBufferSize = (int) (observationCount.addAndGet(bufferActiveBit) - expectedCount); + for (AtomicLong observationCount : stripedObservationCounts) { + expectedBufferSize += observationCount.addAndGet(bufferActiveBit); + } } + expectedBufferSize -= expectedCount; appendLock.lock(); try { From 801277dda26b51f15c776354ea34e1bc1e643e93 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 6 Feb 2026 12:42:04 +0100 Subject: [PATCH 072/110] support environment variables in properties (#1828) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary No Breaking Changes. This is fully backward compatible: - โœ… Existing camelCase properties in files still work - โœ… Existing system properties still work - โœ… Property precedence maintains existing behavior (external > system > file) - โœ… New environment variable layer added between external and system properties ## Migration Guide No migration required. However, to adopt the new features: 1. **To use environment variables:** Convert property names to uppercase with underscores - `io.prometheus.exporter.httpServer.port` โ†’ `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT` 2. **To use snake_case (recommended):** Update properties files - `io.prometheus.metrics.exemplarsEnabled` โ†’ `io.prometheus.metrics.exemplars_enabled` - Old camelCase names continue to work ## Notes - [ ] adjust new property added in https://github.com/prometheus/client_java/pull/1738 --------- Signed-off-by: Gregor Zeitlinger --- .editorconfig | 2 +- docs/content/config/config.md | 156 ++++++++++------- docs/content/exporters/httpserver.md | 2 +- docs/content/getting-started/performance.md | 8 +- .../src/main/resources/prometheus.properties | 8 +- .../metrics/config/ExemplarsProperties.java | 19 +- .../config/ExporterFilterProperties.java | 23 ++- .../config/ExporterHttpServerProperties.java | 17 +- .../ExporterOpenTelemetryProperties.java | 40 ++--- .../metrics/config/ExporterProperties.java | 20 +-- .../config/ExporterPushgatewayProperties.java | 25 ++- .../metrics/config/MetricsProperties.java | 93 ++++++---- .../metrics/config/PrometheusProperties.java | 79 ++++++++- .../config/PrometheusPropertiesLoader.java | 162 ++++++++++++----- .../metrics/config/PropertySource.java | 165 ++++++++++++++++++ .../io/prometheus/metrics/config/Util.java | 81 +++++---- .../config/ExemplarsPropertiesTest.java | 24 +-- .../config/ExporterFilterPropertiesTest.java | 12 +- .../ExporterHttpServerPropertiesTest.java | 10 +- .../ExporterOpenTelemetryPropertiesTest.java | 18 +- .../config/ExporterPropertiesTest.java | 16 +- .../ExporterPushgatewayPropertiesTest.java | 4 +- .../metrics/config/MetricsPropertiesTest.java | 28 +-- .../PrometheusPropertiesLoaderTest.java | 157 ++++++++++++++++- .../config/PrometheusPropertiesTest.java | 7 +- .../prometheus/metrics/config/UtilTest.java | 26 +-- .../resources/emptyUpperBounds.properties | 2 +- .../src/test/resources/prometheus.properties | 36 ++-- .../exporter/pushgateway/PushGateway.java | 2 +- 29 files changed, 888 insertions(+), 354 deletions(-) create mode 100644 prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PropertySource.java diff --git a/.editorconfig b/.editorconfig index 1cf9052df..8bf486f51 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,7 +4,7 @@ root = true max_line_length = 100 indent_size = 2 -[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,.gitleaksignore}] +[{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,.gitleaksignore,prometheus.properties}] max_line_length = 200 [{grafana-dashboard-*.json,.editorconfig,super-linter.env,renovate.json5}] diff --git a/docs/content/config/config.md b/docs/content/config/config.md index deceae000..cd7f7af7b 100644 --- a/docs/content/config/config.md +++ b/docs/content/config/config.md @@ -9,21 +9,21 @@ The Prometheus metrics library provides multiple options how to override configu - Properties file - System properties - -Future releases will add more options, like configuration via environment variables. +- Environment variables Example: ```properties -io.prometheus.exporter.httpServer.port=9401 +io.prometheus.exporter.http_server.port=9401 ``` The property above changes the port for the [HTTPServer exporter]({{< relref "/exporters/httpserver.md" >}}) to _9401_. -- Properties file: Add the line above to the properties file. -- System properties: Use the command line parameter `-Dio.prometheus.exporter.httpServer.port=9401` -- when starting your application. +- **Properties file**: Add the line above to the properties file. +- **System properties**: Use the command line parameter + `-Dio.prometheus.exporter.http_server.port=9401` when starting your application. +- **Environment variables**: Set `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT=9401` ## Location of the Properties File @@ -34,25 +34,61 @@ The properties file is searched in the following locations: - System property `-Dprometheus.config=/path/to/prometheus.properties`. - Environment variable `PROMETHEUS_CONFIG=/path/to/prometheus.properties`. +## Property Naming Conventions + +Properties use **snake_case** format with underscores separating words +(e.g., `http_server`, `exemplars_enabled`). + +For backward compatibility, camelCase property names are also supported in +properties files and system properties, but snake_case is the preferred format. + +### Environment Variables + +Environment variables follow standard conventions: + +- All uppercase letters: `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT` +- Underscores for all separators (both package and word boundaries) +- Prefix must be `IO_PROMETHEUS` + +The library automatically converts environment variables to the correct property format. + +**Examples:** + +| Environment Variable | Property Equivalent | +| --------------------------------------------- | --------------------------------------------- | +| `IO_PROMETHEUS_METRICS_EXEMPLARS_ENABLED` | `io.prometheus.metrics.exemplars_enabled` | +| `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT` | `io.prometheus.exporter.http_server.port` | +| `IO_PROMETHEUS_METRICS_HISTOGRAM_NATIVE_ONLY` | `io.prometheus.metrics.histogram_native_only` | + +### Property Precedence + +When the same property is defined in multiple sources, the following precedence order applies +(highest to lowest): + +1. **External properties** (passed explicitly via API) +2. **Environment variables** +3. **System properties** (command line `-D` flags) +4. **Properties file** (from file or classpath) + ## Metrics Properties -| Name | Javadoc | Note | -| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| io.prometheus.metrics.exemplarsEnabled | [Counter.Builder.withExemplars()]() | (1) (2) | -| io.prometheus.metrics.histogramNativeOnly | [Histogram.Builder.nativeOnly()]() | (2) | -| io.prometheus.metrics.histogramClassicOnly | [Histogram.Builder.classicOnly()]() | (2) | -| io.prometheus.metrics.histogramClassicUpperBounds | [Histogram.Builder.classicUpperBounds()]() | (3) | -| io.prometheus.metrics.histogramNativeInitialSchema | [Histogram.Builder.nativeInitialSchema()]() | | -| io.prometheus.metrics.histogramNativeMinZeroThreshold | [Histogram.Builder.nativeMinZeroThreshold()]() | | -| io.prometheus.metrics.histogramNativeMaxZeroThreshold | [Histogram.Builder.nativeMaxZeroThreshold()]() | | -| io.prometheus.metrics.histogramNativeMaxNumberOfBuckets | [Histogram.Builder.nativeMaxNumberOfBuckets()]() | | -| io.prometheus.metrics.histogramNativeResetDurationSeconds | [Histogram.Builder.nativeResetDuration()]() | | -| io.prometheus.metrics.summaryQuantiles | [Summary.Builder.quantile(double)]() | (4) | -| io.prometheus.metrics.summaryQuantileErrors | [Summary.Builder.quantile(double, double)]() | (5) | -| io.prometheus.metrics.summaryMaxAgeSeconds | [Summary.Builder.maxAgeSeconds()]() | | -| io.prometheus.metrics.summaryNumberOfAgeBuckets | [Summary.Builder.numberOfAgeBuckets()]() | | +| Name | Javadoc | Note | +| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| io.prometheus.metrics.exemplars_enabled | [Counter.Builder.withExemplars()]() | (1) (2) | +| io.prometheus.metrics.histogram_native_only | [Histogram.Builder.nativeOnly()]() | (2) | +| io.prometheus.metrics.histogram_classic_only | [Histogram.Builder.classicOnly()]() | (2) | +| io.prometheus.metrics.histogram_classic_upper_bounds | [Histogram.Builder.classicUpperBounds()]() | (3) | +| io.prometheus.metrics.histogram_native_initial_schema | [Histogram.Builder.nativeInitialSchema()]() | | +| io.prometheus.metrics.histogram_native_min_zero_threshold | [Histogram.Builder.nativeMinZeroThreshold()]() | | +| io.prometheus.metrics.histogram_native_max_zero_threshold | [Histogram.Builder.nativeMaxZeroThreshold()]() | | +| io.prometheus.metrics.histogram_native_max_number_of_buckets | [Histogram.Builder.nativeMaxNumberOfBuckets()]() | | +| io.prometheus.metrics.histogram_native_reset_duration_seconds | [Histogram.Builder.nativeResetDuration()]() | | +| io.prometheus.metrics.summary_quantiles | [Summary.Builder.quantile(double)]() | (4) | +| io.prometheus.metrics.summary_quantile_errors | [Summary.Builder.quantile(double, double)]() | (5) | +| io.prometheus.metrics.summary_max_age_seconds | [Summary.Builder.maxAgeSeconds()]() | | +| io.prometheus.metrics.summary_number_of_age_buckets | [Summary.Builder.numberOfAgeBuckets()]() | | @@ -64,20 +100,20 @@ not just for counters
(3) Comma-separated list. Example: `.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10`.
(4) Comma-separated list. Example: `0.5, 0.95, 0.99`.
(5) Comma-separated list. If specified, the list must have the same length as -`io.prometheus.metrics.summaryQuantiles`. Example: `0.01, 0.005, 0.005`. +`io.prometheus.metrics.summary_quantiles`. Example: `0.01, 0.005, 0.005`. There's one special feature about metric properties: You can set a property for one specific metric only by specifying the metric name. Example: Let's say you have a histogram named `latency_seconds`. ```properties -io.prometheus.metrics.histogramClassicUpperBounds=0.2, 0.4, 0.8, 1.0 +io.prometheus.metrics.histogram_classic_upper_bounds=0.2, 0.4, 0.8, 1.0 ``` The line above sets histogram buckets for all histograms. However: ```properties -io.prometheus.metrics.latency_seconds.histogramClassicUpperBounds=0.2, 0.4, 0.8, 1.0 +io.prometheus.metrics.latency_seconds.histogram_classic_upper_bounds=0.2, 0.4, 0.8, 1.0 ``` The line above sets histogram buckets only for the histogram named `latency_seconds`. @@ -88,11 +124,11 @@ This works for all Metrics properties. -| Name | Javadoc | Note | -| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | -| io.prometheus.exemplars.minRetentionPeriodSeconds | [ExemplarsProperties.getMinRetentionPeriodSeconds()]() | | -| io.prometheus.exemplars.maxRetentionPeriodSeconds | [ExemplarsProperties.getMaxRetentionPeriodSeconds()]() | | -| io.prometheus.exemplars.sampleIntervalMilliseconds | [ExemplarsProperties.getSampleIntervalMilliseconds()]() | | +| Name | Javadoc | Note | +| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| io.prometheus.exemplars.min_retention_period_seconds | [ExemplarsProperties.getMinRetentionPeriodSeconds()]() | | +| io.prometheus.exemplars.max_retention_period_seconds | [ExemplarsProperties.getMaxRetentionPeriodSeconds()]() | | +| io.prometheus.exemplars.sample_interval_milliseconds | [ExemplarsProperties.getSampleIntervalMilliseconds()]() | | @@ -100,10 +136,10 @@ This works for all Metrics properties. -| Name | Javadoc | Note | -| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | -| io.prometheus.exporter.includeCreatedTimestamps | [ExporterProperties.getIncludeCreatedTimestamps()]() | (1) | -| io.prometheus.exporter.exemplarsOnAllMetricTypes | [ExporterProperties.getExemplarsOnAllMetricTypes()]() | (1) | +| Name | Javadoc | Note | +| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| io.prometheus.exporter.include_created_timestamps | [ExporterProperties.getIncludeCreatedTimestamps()]() | (1) | +| io.prometheus.exporter.exemplars_on_all_metric_types | [ExporterProperties.getExemplarsOnAllMetricTypes()]() | (1) | @@ -113,12 +149,12 @@ This works for all Metrics properties. -| Name | Javadoc | Note | -| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | -| io.prometheus.exporter.filter.metricNameMustBeEqualTo | [ExporterFilterProperties.getAllowedMetricNames()]() | (1) | -| io.prometheus.exporter.filter.metricNameMustNotBeEqualTo | [ExporterFilterProperties.getExcludedMetricNames()]() | (2) | -| io.prometheus.exporter.filter.metricNameMustStartWith | [ExporterFilterProperties.getAllowedMetricNamePrefixes()]() | (3) | -| io.prometheus.exporter.filter.metricNameMustNotStartWith | [ExporterFilterProperties.getExcludedMetricNamePrefixes()]() | (4) | +| Name | Javadoc | Note | +| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| io.prometheus.exporter.filter.metric_name_must_be_equal_to | [ExporterFilterProperties.getAllowedMetricNames()]() | (1) | +| io.prometheus.exporter.filter.metric_name_must_not_be_equal_to | [ExporterFilterProperties.getExcludedMetricNames()]() | (2) | +| io.prometheus.exporter.filter.metric_name_must_start_with | [ExporterFilterProperties.getAllowedMetricNamePrefixes()]() | (3) | +| io.prometheus.exporter.filter.metric_name_must_not_start_with | [ExporterFilterProperties.getExcludedMetricNamePrefixes()]() | (4) | @@ -132,9 +168,9 @@ Only metrics starting with these prefixes will be exposed.
-| Name | Javadoc | Note | -| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---- | -| io.prometheus.exporter.httpServer.port | [HTTPServer.Builder.port()]() | | +| Name | Javadoc | Note | +| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---- | +| io.prometheus.exporter.http_server.port | [HTTPServer.Builder.port()]() | | @@ -142,18 +178,18 @@ Only metrics starting with these prefixes will be exposed.
-| Name | Javadoc | Note | -| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | -| io.prometheus.exporter.opentelemetry.protocol | [OpenTelemetryExporter.Builder.protocol()]() | (1) | -| io.prometheus.exporter.opentelemetry.endpoint | [OpenTelemetryExporter.Builder.endpoint()]() | | -| io.prometheus.exporter.opentelemetry.headers | [OpenTelemetryExporter.Builder.headers()]() | (2) | -| io.prometheus.exporter.opentelemetry.intervalSeconds | [OpenTelemetryExporter.Builder.intervalSeconds()]() | | -| io.prometheus.exporter.opentelemetry.timeoutSeconds | [OpenTelemetryExporter.Builder.timeoutSeconds()]() | | -| io.prometheus.exporter.opentelemetry.serviceName | [OpenTelemetryExporter.Builder.serviceName()]() | | -| io.prometheus.exporter.opentelemetry.serviceNamespace | [OpenTelemetryExporter.Builder.serviceNamespace()]() | | -| io.prometheus.exporter.opentelemetry.serviceInstanceId | [OpenTelemetryExporter.Builder.serviceInstanceId()]() | | -| io.prometheus.exporter.opentelemetry.serviceVersion | [OpenTelemetryExporter.Builder.serviceVersion()]() | | -| io.prometheus.exporter.opentelemetry.resourceAttributes | [OpenTelemetryExporter.Builder.resourceAttributes()]() | (3) | +| Name | Javadoc | Note | +| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| io.prometheus.exporter.opentelemetry.protocol | [OpenTelemetryExporter.Builder.protocol()]() | (1) | +| io.prometheus.exporter.opentelemetry.endpoint | [OpenTelemetryExporter.Builder.endpoint()]() | | +| io.prometheus.exporter.opentelemetry.headers | [OpenTelemetryExporter.Builder.headers()]() | (2) | +| io.prometheus.exporter.opentelemetry.interval_seconds | [OpenTelemetryExporter.Builder.intervalSeconds()]() | | +| io.prometheus.exporter.opentelemetry.timeout_seconds | [OpenTelemetryExporter.Builder.timeoutSeconds()]() | | +| io.prometheus.exporter.opentelemetry.service_name | [OpenTelemetryExporter.Builder.serviceName()]() | | +| io.prometheus.exporter.opentelemetry.service_namespace | [OpenTelemetryExporter.Builder.serviceNamespace()]() | | +| io.prometheus.exporter.opentelemetry.service_instance_id | [OpenTelemetryExporter.Builder.serviceInstanceId()]() | | +| io.prometheus.exporter.opentelemetry.service_version | [OpenTelemetryExporter.Builder.serviceVersion()]() | | +| io.prometheus.exporter.opentelemetry.resource_attributes | [OpenTelemetryExporter.Builder.resourceAttributes()]() | (3) | @@ -170,12 +206,12 @@ See Javadoc for details. -| Name | Javadoc | Note | -| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- | -| io.prometheus.exporter.pushgateway.address | [PushGateway.Builder.address()]() | | -| io.prometheus.exporter.pushgateway.scheme | [PushGateway.Builder.scheme()]() | | -| io.prometheus.exporter.pushgateway.job | [PushGateway.Builder.job()]() | | -| io.prometheus.exporter.pushgateway.escapingScheme | [PushGateway.Builder.escapingScheme()]() | (1) | +| Name | Javadoc | Note | +| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- | +| io.prometheus.exporter.pushgateway.address | [PushGateway.Builder.address()]() | | +| io.prometheus.exporter.pushgateway.scheme | [PushGateway.Builder.scheme()]() | | +| io.prometheus.exporter.pushgateway.job | [PushGateway.Builder.job()]() | | +| io.prometheus.exporter.pushgateway.escaping_scheme | [PushGateway.Builder.escapingScheme()]() | (1) | diff --git a/docs/content/exporters/httpserver.md b/docs/content/exporters/httpserver.md index 801ad60eb..a9017b0de 100644 --- a/docs/content/exporters/httpserver.md +++ b/docs/content/exporters/httpserver.md @@ -40,4 +40,4 @@ You can find an example of authentication and SSL in the See _config_ section (_todo_) on runtime configuration options. -- `io.prometheus.exporter.httpServer.port`: The port to bind to. +- `io.prometheus.exporter.http_server.port`: The port to bind to. diff --git a/docs/content/getting-started/performance.md b/docs/content/getting-started/performance.md index 31b8de162..435f0d18a 100644 --- a/docs/content/getting-started/performance.md +++ b/docs/content/getting-started/performance.md @@ -60,13 +60,13 @@ or you use the corresponding [config options]({{< relref "../config/config.md" > One way to do this is with system properties in the command line when you start your application ```sh -java -Dio.prometheus.metrics.histogramClassicOnly=true my-app.jar +java -Dio.prometheus.metrics.histogram_classic_only=true my-app.jar ``` or ```sh -java -Dio.prometheus.metrics.histogramNativeOnly=true my-app.jar +java -Dio.prometheus.metrics.histogram_native_only=true my-app.jar ``` If you don't want to add a command line parameter every time you start your application, you can add @@ -75,13 +75,13 @@ that it gets packed into your JAR file). The `prometheus.properties` file should line: ```properties -io.prometheus.metrics.histogramClassicOnly=true +io.prometheus.metrics.histogram_classic_only=true ``` or ```properties -io.prometheus.metrics.histogramNativeOnly=true +io.prometheus.metrics.histogram_native_only=true ``` Future releases will add more configuration options, like support for configuration via environment diff --git a/examples/example-prometheus-properties/src/main/resources/prometheus.properties b/examples/example-prometheus-properties/src/main/resources/prometheus.properties index a786fd370..be895f2fe 100644 --- a/examples/example-prometheus-properties/src/main/resources/prometheus.properties +++ b/examples/example-prometheus-properties/src/main/resources/prometheus.properties @@ -1,8 +1,8 @@ -io.prometheus.exporter.httpServer.port = 9401 -io.prometheus.exporter.includeCreatedTimestamps = true +io.prometheus.exporter.http_server.port = 9401 +io.prometheus.exporter.include_created_timestamps = true # Set a new default for all histograms -io.prometheus.metrics.histogramClassicUpperBounds = .2, .4, .8, .1 +io.prometheus.metrics.histogram_classic_upper_bounds = .2, .4, .8, .1 # Override the default for one specific histogram -io.prometheus.metrics.request_size_bytes.histogramClassicUpperBounds = 256, 512, 768, 1024 +io.prometheus.metrics.request_size_bytes.histogram_classic_upper_bounds = 256, 512, 768, 1024 diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java index 20933bfdc..765d33ac5 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java @@ -1,15 +1,14 @@ package io.prometheus.metrics.config; -import java.util.Map; import javax.annotation.Nullable; /** Properties starting with io.prometheus.exemplars */ public class ExemplarsProperties { private static final String PREFIX = "io.prometheus.exemplars"; - private static final String MIN_RETENTION_PERIOD_SECONDS = "minRetentionPeriodSeconds"; - private static final String MAX_RETENTION_PERIOD_SECONDS = "maxRetentionPeriodSeconds"; - private static final String SAMPLE_INTERVAL_MILLISECONDS = "sampleIntervalMilliseconds"; + private static final String MIN_RETENTION_PERIOD_SECONDS = "min_retention_period_seconds"; + private static final String MAX_RETENTION_PERIOD_SECONDS = "max_retention_period_seconds"; + private static final String SAMPLE_INTERVAL_MILLISECONDS = "sample_interval_milliseconds"; @Nullable private final Integer minRetentionPeriodSeconds; @Nullable private final Integer maxRetentionPeriodSeconds; @@ -57,17 +56,17 @@ public Integer getSampleIntervalMilliseconds() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static ExemplarsProperties load(Map properties) + static ExemplarsProperties load(PropertySource propertySource) throws PrometheusPropertiesException { Integer minRetentionPeriodSeconds = - Util.loadInteger(PREFIX + "." + MIN_RETENTION_PERIOD_SECONDS, properties); + Util.loadInteger(PREFIX, MIN_RETENTION_PERIOD_SECONDS, propertySource); Integer maxRetentionPeriodSeconds = - Util.loadInteger(PREFIX + "." + MAX_RETENTION_PERIOD_SECONDS, properties); + Util.loadInteger(PREFIX, MAX_RETENTION_PERIOD_SECONDS, propertySource); Integer sampleIntervalMilliseconds = - Util.loadInteger(PREFIX + "." + SAMPLE_INTERVAL_MILLISECONDS, properties); + Util.loadInteger(PREFIX, SAMPLE_INTERVAL_MILLISECONDS, propertySource); Util.assertValue( minRetentionPeriodSeconds, diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java index 7f3b46842..d59330cb9 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java @@ -4,16 +4,15 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Map; import javax.annotation.Nullable; /** Properties starting with io.prometheus.exporter.filter */ public class ExporterFilterProperties { - public static final String METRIC_NAME_MUST_BE_EQUAL_TO = "metricNameMustBeEqualTo"; - public static final String METRIC_NAME_MUST_NOT_BE_EQUAL_TO = "metricNameMustNotBeEqualTo"; - public static final String METRIC_NAME_MUST_START_WITH = "metricNameMustStartWith"; - public static final String METRIC_NAME_MUST_NOT_START_WITH = "metricNameMustNotStartWith"; + public static final String METRIC_NAME_MUST_BE_EQUAL_TO = "metric_name_must_be_equal_to"; + public static final String METRIC_NAME_MUST_NOT_BE_EQUAL_TO = "metric_name_must_not_be_equal_to"; + public static final String METRIC_NAME_MUST_START_WITH = "metric_name_must_start_with"; + public static final String METRIC_NAME_MUST_NOT_START_WITH = "metric_name_must_not_start_with"; private static final String PREFIX = "io.prometheus.exporter.filter"; @Nullable private final List allowedNames; @@ -61,19 +60,19 @@ public List getExcludedMetricNamePrefixes() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static ExporterFilterProperties load(Map properties) + static ExporterFilterProperties load(PropertySource propertySource) throws PrometheusPropertiesException { List allowedNames = - Util.loadStringList(PREFIX + "." + METRIC_NAME_MUST_BE_EQUAL_TO, properties); + Util.loadStringList(PREFIX, METRIC_NAME_MUST_BE_EQUAL_TO, propertySource); List excludedNames = - Util.loadStringList(PREFIX + "." + METRIC_NAME_MUST_NOT_BE_EQUAL_TO, properties); + Util.loadStringList(PREFIX, METRIC_NAME_MUST_NOT_BE_EQUAL_TO, propertySource); List allowedPrefixes = - Util.loadStringList(PREFIX + "." + METRIC_NAME_MUST_START_WITH, properties); + Util.loadStringList(PREFIX, METRIC_NAME_MUST_START_WITH, propertySource); List excludedPrefixes = - Util.loadStringList(PREFIX + "." + METRIC_NAME_MUST_NOT_START_WITH, properties); + Util.loadStringList(PREFIX, METRIC_NAME_MUST_NOT_START_WITH, propertySource); return new ExporterFilterProperties( allowedNames, excludedNames, allowedPrefixes, excludedPrefixes); } diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java index 01849f55a..0623f78e1 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java @@ -1,14 +1,13 @@ package io.prometheus.metrics.config; -import java.util.Map; import javax.annotation.Nullable; -/** Properties starting with io.prometheus.exporter.httpServer */ +/** Properties starting with io.prometheus.exporter.http_server */ public class ExporterHttpServerProperties { private static final String PORT = "port"; - private static final String PREFER_UNCOMPRESSED_RESPONSE = "preferUncompressedResponse"; - private static final String PREFIX = "io.prometheus.exporter.httpServer"; + private static final String PREFER_UNCOMPRESSED_RESPONSE = "prefer_uncompressed_response"; + private static final String PREFIX = "io.prometheus.exporter.http_server"; @Nullable private final Integer port; private final boolean preferUncompressedResponse; @@ -27,16 +26,16 @@ public boolean isPreferUncompressedResponse() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static ExporterHttpServerProperties load(Map properties) + static ExporterHttpServerProperties load(PropertySource propertySource) throws PrometheusPropertiesException { - Integer port = Util.loadInteger(PREFIX + "." + PORT, properties); + Integer port = Util.loadInteger(PREFIX, PORT, propertySource); Util.assertValue(port, t -> t > 0, "Expecting value > 0.", PREFIX, PORT); Boolean preferUncompressedResponse = - Util.loadBoolean(PREFIX + "." + PREFER_UNCOMPRESSED_RESPONSE, properties); + Util.loadBoolean(PREFIX, PREFER_UNCOMPRESSED_RESPONSE, propertySource); return new ExporterHttpServerProperties( port, preferUncompressedResponse != null && preferUncompressedResponse); diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java index 3e747d4d2..bd1dcdaf2 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java @@ -38,14 +38,14 @@ public class ExporterOpenTelemetryProperties { private static final String PROTOCOL = "protocol"; // otel.exporter.otlp.protocol private static final String ENDPOINT = "endpoint"; // otel.exporter.otlp.endpoint private static final String HEADERS = "headers"; // otel.exporter.otlp.headers - private static final String INTERVAL_SECONDS = "intervalSeconds"; // otel.metric.export.interval - private static final String TIMEOUT_SECONDS = "timeoutSeconds"; // otel.exporter.otlp.timeout - private static final String SERVICE_NAME = "serviceName"; // otel.service.name - private static final String SERVICE_NAMESPACE = "serviceNamespace"; - private static final String SERVICE_INSTANCE_ID = "serviceInstanceId"; - private static final String SERVICE_VERSION = "serviceVersion"; + private static final String INTERVAL_SECONDS = "interval_seconds"; // otel.metric.export.interval + private static final String TIMEOUT_SECONDS = "timeout_seconds"; // otel.exporter.otlp.timeout + private static final String SERVICE_NAME = "service_name"; // otel.service.name + private static final String SERVICE_NAMESPACE = "service_namespace"; + private static final String SERVICE_INSTANCE_ID = "service_instance_id"; + private static final String SERVICE_VERSION = "service_version"; private static final String RESOURCE_ATTRIBUTES = - "resourceAttributes"; // otel.resource.attributes + "resource_attributes"; // otel.resource.attributes private static final String PREFIX = "io.prometheus.exporter.opentelemetry"; @Nullable private final String endpoint; @@ -131,22 +131,22 @@ public Map getResourceAttributes() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static ExporterOpenTelemetryProperties load(Map properties) + static ExporterOpenTelemetryProperties load(PropertySource propertySource) throws PrometheusPropertiesException { - String protocol = Util.loadString(PREFIX + "." + PROTOCOL, properties); - String endpoint = Util.loadString(PREFIX + "." + ENDPOINT, properties); - Map headers = Util.loadMap(PREFIX + "." + HEADERS, properties); - String interval = Util.loadStringAddSuffix(PREFIX + "." + INTERVAL_SECONDS, properties, "s"); - String timeout = Util.loadStringAddSuffix(PREFIX + "." + TIMEOUT_SECONDS, properties, "s"); - String serviceName = Util.loadString(PREFIX + "." + SERVICE_NAME, properties); - String serviceNamespace = Util.loadString(PREFIX + "." + SERVICE_NAMESPACE, properties); - String serviceInstanceId = Util.loadString(PREFIX + "." + SERVICE_INSTANCE_ID, properties); - String serviceVersion = Util.loadString(PREFIX + "." + SERVICE_VERSION, properties); + String protocol = Util.loadString(PREFIX, PROTOCOL, propertySource); + String endpoint = Util.loadString(PREFIX, ENDPOINT, propertySource); + Map headers = Util.loadMap(PREFIX, HEADERS, propertySource); + String interval = Util.loadStringAddSuffix(PREFIX, INTERVAL_SECONDS, propertySource, "s"); + String timeout = Util.loadStringAddSuffix(PREFIX, TIMEOUT_SECONDS, propertySource, "s"); + String serviceName = Util.loadString(PREFIX, SERVICE_NAME, propertySource); + String serviceNamespace = Util.loadString(PREFIX, SERVICE_NAMESPACE, propertySource); + String serviceInstanceId = Util.loadString(PREFIX, SERVICE_INSTANCE_ID, propertySource); + String serviceVersion = Util.loadString(PREFIX, SERVICE_VERSION, propertySource); Map resourceAttributes = - Util.loadMap(PREFIX + "." + RESOURCE_ATTRIBUTES, properties); + Util.loadMap(PREFIX, RESOURCE_ATTRIBUTES, propertySource); return new ExporterOpenTelemetryProperties( protocol, endpoint, diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java index 6b081816d..460a5cae2 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java @@ -1,15 +1,14 @@ package io.prometheus.metrics.config; -import java.util.Map; import javax.annotation.Nullable; /** Properties starting with io.prometheus.exporter */ public class ExporterProperties { - private static final String INCLUDE_CREATED_TIMESTAMPS = "includeCreatedTimestamps"; + private static final String INCLUDE_CREATED_TIMESTAMPS = "include_created_timestamps"; // milliseconds is the default - we only provide a boolean flag to avoid a breaking change - private static final String PROMETHEUS_TIMESTAMPS_IN_MS = "prometheusTimestampsInMs"; - private static final String EXEMPLARS_ON_ALL_METRIC_TYPES = "exemplarsOnAllMetricTypes"; + private static final String PROMETHEUS_TIMESTAMPS_IN_MS = "prometheus_timestamps_in_ms"; + private static final String EXEMPLARS_ON_ALL_METRIC_TYPES = "exemplars_on_all_metric_types"; private static final String PREFIX = "io.prometheus.exporter"; @Nullable private final Boolean includeCreatedTimestamps; @@ -44,17 +43,16 @@ public boolean getExemplarsOnAllMetricTypes() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static ExporterProperties load(Map properties) + static ExporterProperties load(PropertySource propertySource) throws PrometheusPropertiesException { Boolean includeCreatedTimestamps = - Util.loadBoolean(PREFIX + "." + INCLUDE_CREATED_TIMESTAMPS, properties); - Boolean timestampsInMs = - Util.loadBoolean(PREFIX + "." + PROMETHEUS_TIMESTAMPS_IN_MS, properties); + Util.loadBoolean(PREFIX, INCLUDE_CREATED_TIMESTAMPS, propertySource); + Boolean timestampsInMs = Util.loadBoolean(PREFIX, PROMETHEUS_TIMESTAMPS_IN_MS, propertySource); Boolean exemplarsOnAllMetricTypes = - Util.loadBoolean(PREFIX + "." + EXEMPLARS_ON_ALL_METRIC_TYPES, properties); + Util.loadBoolean(PREFIX, EXEMPLARS_ON_ALL_METRIC_TYPES, propertySource); return new ExporterProperties( includeCreatedTimestamps, timestampsInMs, exemplarsOnAllMetricTypes); } diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java index bd53f8b76..aea4b2d8f 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java @@ -1,7 +1,6 @@ package io.prometheus.metrics.config; import java.time.Duration; -import java.util.Map; import javax.annotation.Nullable; public class ExporterPushgatewayProperties { @@ -9,9 +8,9 @@ public class ExporterPushgatewayProperties { private static final String ADDRESS = "address"; private static final String JOB = "job"; private static final String SCHEME = "scheme"; - private static final String ESCAPING_SCHEME = "escapingScheme"; - private static final String READ_TIMEOUT = "readTimeoutSeconds"; - private static final String CONNECT_TIMEOUT = "connectTimeoutSeconds"; + private static final String ESCAPING_SCHEME = "escaping_scheme"; + private static final String READ_TIMEOUT = "read_timeout_seconds"; + private static final String CONNECT_TIMEOUT = "connect_timeout_seconds"; private static final String PREFIX = "io.prometheus.exporter.pushgateway"; @Nullable private final String scheme; @Nullable private final String address; @@ -78,17 +77,17 @@ public Duration getReadTimeout() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static ExporterPushgatewayProperties load(Map properties) + static ExporterPushgatewayProperties load(PropertySource propertySource) throws PrometheusPropertiesException { - String address = Util.loadString(PREFIX + "." + ADDRESS, properties); - String job = Util.loadString(PREFIX + "." + JOB, properties); - String scheme = Util.loadString(PREFIX + "." + SCHEME, properties); - String escapingScheme = Util.loadString(PREFIX + "." + ESCAPING_SCHEME, properties); - Duration connectTimeout = Util.loadOptionalDuration(PREFIX + "." + CONNECT_TIMEOUT, properties); - Duration readTimeout = Util.loadOptionalDuration(PREFIX + "." + READ_TIMEOUT, properties); + String address = Util.loadString(PREFIX, ADDRESS, propertySource); + String job = Util.loadString(PREFIX, JOB, propertySource); + String scheme = Util.loadString(PREFIX, SCHEME, propertySource); + String escapingScheme = Util.loadString(PREFIX, ESCAPING_SCHEME, propertySource); + Duration connectTimeout = Util.loadOptionalDuration(PREFIX, CONNECT_TIMEOUT, propertySource); + Duration readTimeout = Util.loadOptionalDuration(PREFIX, READ_TIMEOUT, propertySource); if (scheme != null) { if (!scheme.equals("http") && !scheme.equals("https")) { diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java index 6c8942713..a530f35e1 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java @@ -5,29 +5,49 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Map; import javax.annotation.Nullable; /** Properties starting with io.prometheus.metrics */ public class MetricsProperties { - private static final String EXEMPLARS_ENABLED = "exemplarsEnabled"; - private static final String HISTOGRAM_NATIVE_ONLY = "histogramNativeOnly"; - private static final String HISTOGRAM_CLASSIC_ONLY = "histogramClassicOnly"; - private static final String HISTOGRAM_CLASSIC_UPPER_BOUNDS = "histogramClassicUpperBounds"; - private static final String HISTOGRAM_NATIVE_INITIAL_SCHEMA = "histogramNativeInitialSchema"; + private static final String EXEMPLARS_ENABLED = "exemplars_enabled"; + private static final String HISTOGRAM_NATIVE_ONLY = "histogram_native_only"; + private static final String HISTOGRAM_CLASSIC_ONLY = "histogram_classic_only"; + private static final String HISTOGRAM_CLASSIC_UPPER_BOUNDS = "histogram_classic_upper_bounds"; + private static final String HISTOGRAM_NATIVE_INITIAL_SCHEMA = "histogram_native_initial_schema"; private static final String HISTOGRAM_NATIVE_MIN_ZERO_THRESHOLD = - "histogramNativeMinZeroThreshold"; + "histogram_native_min_zero_threshold"; private static final String HISTOGRAM_NATIVE_MAX_ZERO_THRESHOLD = - "histogramNativeMaxZeroThreshold"; + "histogram_native_max_zero_threshold"; private static final String HISTOGRAM_NATIVE_MAX_NUMBER_OF_BUCKETS = - "histogramNativeMaxNumberOfBuckets"; // 0 means unlimited number of buckets + "histogram_native_max_number_of_buckets"; // 0 means unlimited number of buckets private static final String HISTOGRAM_NATIVE_RESET_DURATION_SECONDS = - "histogramNativeResetDurationSeconds"; // 0 means no reset - private static final String SUMMARY_QUANTILES = "summaryQuantiles"; - private static final String SUMMARY_QUANTILE_ERRORS = "summaryQuantileErrors"; - private static final String SUMMARY_MAX_AGE_SECONDS = "summaryMaxAgeSeconds"; - private static final String SUMMARY_NUMBER_OF_AGE_BUCKETS = "summaryNumberOfAgeBuckets"; + "histogram_native_reset_duration_seconds"; // 0 means no reset + private static final String SUMMARY_QUANTILES = "summary_quantiles"; + private static final String SUMMARY_QUANTILE_ERRORS = "summary_quantile_errors"; + private static final String SUMMARY_MAX_AGE_SECONDS = "summary_max_age_seconds"; + private static final String SUMMARY_NUMBER_OF_AGE_BUCKETS = "summary_number_of_age_buckets"; + + /** + * All known property suffixes that can be configured for metrics. + * + *

This list is used to parse metric-specific configuration keys from environment variables. + */ + static final String[] PROPERTY_SUFFIXES = { + EXEMPLARS_ENABLED, + HISTOGRAM_NATIVE_ONLY, + HISTOGRAM_CLASSIC_ONLY, + HISTOGRAM_CLASSIC_UPPER_BOUNDS, + HISTOGRAM_NATIVE_INITIAL_SCHEMA, + HISTOGRAM_NATIVE_MIN_ZERO_THRESHOLD, + HISTOGRAM_NATIVE_MAX_ZERO_THRESHOLD, + HISTOGRAM_NATIVE_MAX_NUMBER_OF_BUCKETS, + HISTOGRAM_NATIVE_RESET_DURATION_SECONDS, + SUMMARY_QUANTILES, + SUMMARY_QUANTILE_ERRORS, + SUMMARY_MAX_AGE_SECONDS, + SUMMARY_NUMBER_OF_AGE_BUCKETS + }; @Nullable private final Boolean exemplarsEnabled; @Nullable private final Boolean histogramNativeOnly; @@ -226,17 +246,16 @@ private void validate(String prefix) throws PrometheusPropertiesException { + SUMMARY_QUANTILES); } if (summaryQuantileErrors.size() != summaryQuantiles.size()) { + String fullKey = + prefix.isEmpty() ? SUMMARY_QUANTILE_ERRORS : prefix + "." + SUMMARY_QUANTILE_ERRORS; throw new PrometheusPropertiesException( - prefix - + "." - + SUMMARY_QUANTILE_ERRORS - + ": must have the same length as " - + SUMMARY_QUANTILES); + fullKey + ": must have the same length as " + SUMMARY_QUANTILES); } for (double error : summaryQuantileErrors) { if (error < 0 || error > 1) { - throw new PrometheusPropertiesException( - prefix + "." + SUMMARY_QUANTILE_ERRORS + ": Expecting 0.0 <= error <= 1.0"); + String fullKey = + prefix.isEmpty() ? SUMMARY_QUANTILE_ERRORS : prefix + "." + SUMMARY_QUANTILE_ERRORS; + throw new PrometheusPropertiesException(fullKey + ": Expecting 0.0 <= error <= 1.0"); } } } @@ -335,25 +354,25 @@ public Integer getSummaryNumberOfAgeBuckets() { } /** - * Note that this will remove entries from {@code properties}. This is because we want to know if - * there are unused properties remaining after all properties have been loaded. + * Note that this will remove entries from {@code propertySource}. This is because we want to know + * if there are unused properties remaining after all properties have been loaded. */ - static MetricsProperties load(String prefix, Map properties) + static MetricsProperties load(String prefix, PropertySource propertySource) throws PrometheusPropertiesException { return new MetricsProperties( - Util.loadBoolean(prefix + "." + EXEMPLARS_ENABLED, properties), - Util.loadBoolean(prefix + "." + HISTOGRAM_NATIVE_ONLY, properties), - Util.loadBoolean(prefix + "." + HISTOGRAM_CLASSIC_ONLY, properties), - Util.loadDoubleList(prefix + "." + HISTOGRAM_CLASSIC_UPPER_BOUNDS, properties), - Util.loadInteger(prefix + "." + HISTOGRAM_NATIVE_INITIAL_SCHEMA, properties), - Util.loadDouble(prefix + "." + HISTOGRAM_NATIVE_MIN_ZERO_THRESHOLD, properties), - Util.loadDouble(prefix + "." + HISTOGRAM_NATIVE_MAX_ZERO_THRESHOLD, properties), - Util.loadInteger(prefix + "." + HISTOGRAM_NATIVE_MAX_NUMBER_OF_BUCKETS, properties), - Util.loadLong(prefix + "." + HISTOGRAM_NATIVE_RESET_DURATION_SECONDS, properties), - Util.loadDoubleList(prefix + "." + SUMMARY_QUANTILES, properties), - Util.loadDoubleList(prefix + "." + SUMMARY_QUANTILE_ERRORS, properties), - Util.loadLong(prefix + "." + SUMMARY_MAX_AGE_SECONDS, properties), - Util.loadInteger(prefix + "." + SUMMARY_NUMBER_OF_AGE_BUCKETS, properties), + Util.loadBoolean(prefix, EXEMPLARS_ENABLED, propertySource), + Util.loadBoolean(prefix, HISTOGRAM_NATIVE_ONLY, propertySource), + Util.loadBoolean(prefix, HISTOGRAM_CLASSIC_ONLY, propertySource), + Util.loadDoubleList(prefix, HISTOGRAM_CLASSIC_UPPER_BOUNDS, propertySource), + Util.loadInteger(prefix, HISTOGRAM_NATIVE_INITIAL_SCHEMA, propertySource), + Util.loadDouble(prefix, HISTOGRAM_NATIVE_MIN_ZERO_THRESHOLD, propertySource), + Util.loadDouble(prefix, HISTOGRAM_NATIVE_MAX_ZERO_THRESHOLD, propertySource), + Util.loadInteger(prefix, HISTOGRAM_NATIVE_MAX_NUMBER_OF_BUCKETS, propertySource), + Util.loadLong(prefix, HISTOGRAM_NATIVE_RESET_DURATION_SECONDS, propertySource), + Util.loadDoubleList(prefix, SUMMARY_QUANTILES, propertySource), + Util.loadDoubleList(prefix, SUMMARY_QUANTILE_ERRORS, propertySource), + Util.loadLong(prefix, SUMMARY_MAX_AGE_SECONDS, propertySource), + Util.loadInteger(prefix, SUMMARY_NUMBER_OF_AGE_BUCKETS, propertySource), prefix); } diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java index ab78b48e3..055fe4aa3 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java @@ -14,7 +14,7 @@ public class PrometheusProperties { private static final PrometheusProperties instance = PrometheusPropertiesLoader.load(); private final MetricsProperties defaultMetricsProperties; - private final Map metricProperties = new HashMap<>(); + private final MetricPropertiesMap metricProperties; private final ExemplarsProperties exemplarProperties; private final ExporterProperties exporterProperties; private final ExporterFilterProperties exporterFilterProperties; @@ -22,6 +22,67 @@ public class PrometheusProperties { private final ExporterOpenTelemetryProperties exporterOpenTelemetryProperties; private final ExporterPushgatewayProperties exporterPushgatewayProperties; + /** + * Map that stores metric-specific properties keyed by metric name in exposition format + * (underscores instead of dots). + * + *

This wrapper makes it explicit that metric names are normalized to underscore format for + * storage, so that environment variables and properties with dots in metric names can be + * correctly looked up using normalized names. + */ + static class MetricPropertiesMap { + private final Map map = new HashMap<>(); + + void set(Map properties) { + map.clear(); + properties.forEach(this::put); + } + + void put(String metricName, MetricsProperties properties) { + map.put(normalize(metricName), properties); + } + + /** + * Get metric properties by metric name. + * + *

Accepts metric names in any format (with dots or underscores) and automatically converts + * them to the normalized underscore format used for storage. + * + * @param metricName the metric name (dots will be converted to underscores) + * @return the metric properties, or null if not configured + */ + @Nullable + MetricsProperties get(String metricName) { + return map.get(normalize(metricName)); + } + + // copied from PrometheusNaming - but we can't reuse that class here because it's in a module + // that + // depends on PrometheusProperties, which would create a circular dependency. + private static String normalize(String name) { + StringBuilder escaped = new StringBuilder(); + + for (int i = 0; i < name.length(); ) { + int c = name.codePointAt(i); + if (isValidLegacyChar(c, i)) { + escaped.appendCodePoint(c); + } else { + escaped.append('_'); + } + i += Character.charCount(c); + } + return escaped.toString(); + } + } + + private static boolean isValidLegacyChar(int c, int i) { + return (c >= 'a' && c <= 'z') + || (c >= 'A' && c <= 'Z') + || c == '_' + || c == ':' + || (c >= '0' && c <= '9' && i > 0); + } + /** * Get the properties instance. When called for the first time, {@code get()} loads the properties * from the following locations: @@ -41,9 +102,10 @@ public static Builder builder() { return new Builder(); } - public PrometheusProperties( + // Package-private constructor for PrometheusPropertiesLoader and Builder + PrometheusProperties( MetricsProperties defaultMetricsProperties, - Map metricProperties, + MetricPropertiesMap metricProperties, ExemplarsProperties exemplarProperties, ExporterProperties exporterProperties, ExporterFilterProperties exporterFilterProperties, @@ -51,7 +113,7 @@ public PrometheusProperties( ExporterPushgatewayProperties pushgatewayProperties, ExporterOpenTelemetryProperties otelConfig) { this.defaultMetricsProperties = defaultMetricsProperties; - this.metricProperties.putAll(metricProperties); + this.metricProperties = metricProperties; this.exemplarProperties = exemplarProperties; this.exporterProperties = exporterProperties; this.exporterFilterProperties = exporterFilterProperties; @@ -72,10 +134,13 @@ public MetricsProperties getDefaultMetricProperties() { * Properties specific for one metric. Should be merged with {@link * #getDefaultMetricProperties()}. May return {@code null} if no metric-specific properties are * configured for a metric name. + * + * @param metricName the metric name (dots will be automatically converted to underscores to match + * exposition format) */ @Nullable public MetricsProperties getMetricProperties(String metricName) { - return metricProperties.get(metricName.replace(".", "_")); + return metricProperties.get(metricName); } public ExemplarsProperties getExemplarProperties() { @@ -104,7 +169,7 @@ public ExporterOpenTelemetryProperties getExporterOpenTelemetryProperties() { public static class Builder { private MetricsProperties defaultMetricsProperties = MetricsProperties.builder().build(); - private Map metricProperties = new HashMap<>(); + private final MetricPropertiesMap metricProperties = new MetricPropertiesMap(); private ExemplarsProperties exemplarProperties = ExemplarsProperties.builder().build(); private ExporterProperties exporterProperties = ExporterProperties.builder().build(); private ExporterFilterProperties exporterFilterProperties = @@ -124,7 +189,7 @@ public Builder defaultMetricsProperties(MetricsProperties defaultMetricsProperti } public Builder metricProperties(Map metricProperties) { - this.metricProperties = metricProperties; + this.metricProperties.set(metricProperties); return this; } diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java index a847a8dba..9119c2f65 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java @@ -5,12 +5,9 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * The Properties Loader is early stages. @@ -29,20 +26,21 @@ public static PrometheusProperties load() throws PrometheusPropertiesException { public static PrometheusProperties load(Map externalProperties) throws PrometheusPropertiesException { - Map properties = loadProperties(externalProperties); - Map metricsConfigs = loadMetricsConfigs(properties); + PropertySource propertySource = loadProperties(externalProperties); + PrometheusProperties.MetricPropertiesMap metricsConfigs = loadMetricsConfigs(propertySource); MetricsProperties defaultMetricsProperties = - MetricsProperties.load("io.prometheus.metrics", properties); - ExemplarsProperties exemplarConfig = ExemplarsProperties.load(properties); - ExporterProperties exporterProperties = ExporterProperties.load(properties); - ExporterFilterProperties exporterFilterProperties = ExporterFilterProperties.load(properties); + MetricsProperties.load("io.prometheus.metrics", propertySource); + ExemplarsProperties exemplarConfig = ExemplarsProperties.load(propertySource); + ExporterProperties exporterProperties = ExporterProperties.load(propertySource); + ExporterFilterProperties exporterFilterProperties = + ExporterFilterProperties.load(propertySource); ExporterHttpServerProperties exporterHttpServerProperties = - ExporterHttpServerProperties.load(properties); + ExporterHttpServerProperties.load(propertySource); ExporterPushgatewayProperties exporterPushgatewayProperties = - ExporterPushgatewayProperties.load(properties); + ExporterPushgatewayProperties.load(propertySource); ExporterOpenTelemetryProperties exporterOpenTelemetryProperties = - ExporterOpenTelemetryProperties.load(properties); - validateAllPropertiesProcessed(properties); + ExporterOpenTelemetryProperties.load(propertySource); + validateAllPropertiesProcessed(propertySource); return new PrometheusProperties( defaultMetricsProperties, metricsConfigs, @@ -54,28 +52,49 @@ public static PrometheusProperties load(Map externalProperties) exporterOpenTelemetryProperties); } - // This will remove entries from properties when they are processed. - private static Map loadMetricsConfigs(Map properties) { - Map result = new HashMap<>(); + // This will remove entries from propertySource when they are processed. + static PrometheusProperties.MetricPropertiesMap loadMetricsConfigs( + PropertySource propertySource) { + PrometheusProperties.MetricPropertiesMap result = + new PrometheusProperties.MetricPropertiesMap(); // Note that the metric name in the properties file must be as exposed in the Prometheus // exposition formats, // i.e. all dots replaced with underscores. - Pattern pattern = Pattern.compile("io\\.prometheus\\.metrics\\.([^.]+)\\."); - // Create a copy of the keySet() for iterating. We cannot iterate directly over keySet() - // because entries are removed when MetricsConfig.load(...) is called. - Set propertyNames = new HashSet<>(); - for (Object key : properties.keySet()) { - propertyNames.add(key.toString()); - } + + // Get a snapshot of all keys for pattern matching. Entries will be removed + // when MetricsProperties.load(...) is called. + Set propertyNames = propertySource.getAllKeys(); for (String propertyName : propertyNames) { - Matcher matcher = pattern.matcher(propertyName); - if (matcher.find()) { - String metricName = matcher.group(1).replace(".", "_"); - if (!result.containsKey(metricName)) { - result.put( - metricName, - MetricsProperties.load("io.prometheus.metrics." + metricName, properties)); + String metricName = null; + + if (propertyName.startsWith("io.prometheus.metrics.")) { + // Dot-separated format (from regular properties, system properties, or files) + String remainder = propertyName.substring("io.prometheus.metrics.".length()); + // Try to match against known property suffixes + for (String suffix : MetricsProperties.PROPERTY_SUFFIXES) { + if (remainder.endsWith("." + suffix)) { + // Metric name in dot format, convert dots to underscores for exposition format + metricName = + remainder.substring(0, remainder.length() - suffix.length() - 1).replace(".", "_"); + break; + } } + } else if (propertyName.startsWith("io_prometheus_metrics_")) { + // Underscore-separated format (from environment variables) + String remainder = propertyName.substring("io_prometheus_metrics_".length()); + // Try to match against known property suffixes + for (String suffix : MetricsProperties.PROPERTY_SUFFIXES) { + if (remainder.endsWith("_" + suffix)) { + metricName = remainder.substring(0, remainder.length() - suffix.length() - 1); + break; + } + } + } + + if (metricName != null && result.get(metricName) == null) { + result.put( + metricName, + MetricsProperties.load("io.prometheus.metrics." + metricName, propertySource)); } } return result; @@ -84,26 +103,43 @@ private static Map loadMetricsConfigs(Map properties) { - for (Object key : properties.keySet()) { - if (key.toString().startsWith("io.prometheus")) { + private static void validateAllPropertiesProcessed(PropertySource propertySource) { + for (String key : propertySource.getRemainingKeys()) { + if (key.startsWith("io.prometheus") || key.startsWith("io_prometheus")) { throw new PrometheusPropertiesException(key + ": Unknown property"); } } } - private static Map loadProperties(Map externalProperties) { - Map properties = new HashMap<>(); - properties.putAll(loadPropertiesFromClasspath()); - properties.putAll(loadPropertiesFromFile()); // overriding the entries from the classpath file + private static PropertySource loadProperties(Map externalProperties) { + // Regular properties (lowest priority): classpath, file, system properties + Map regularProperties = new HashMap<>(); + // Normalize all properties at load time to handle camelCase in files for backward compatibility + normalizeAndPutAll(regularProperties, loadPropertiesFromClasspath()); + normalizeAndPutAll( + regularProperties, + loadPropertiesFromFile()); // overriding the entries from the classpath file // overriding the entries from the properties file // copy System properties to avoid ConcurrentModificationException + // normalize camelCase system properties to snake_case for backward compatibility System.getProperties().stringPropertyNames().stream() .filter(key -> key.startsWith("io.prometheus")) - .forEach(key -> properties.put(key, System.getProperty(key))); - properties.putAll(externalProperties); // overriding all the entries above - // TODO: Add environment variables like EXEMPLARS_ENABLED. - return properties; + .forEach(key -> regularProperties.put(normalizePropertyKey(key), System.getProperty(key))); + + // Environment variables (second priority): just lowercase, keep underscores + Map envVarProperties = loadPropertiesFromEnvironment(); + + // External properties (highest priority): normalize camelCase for backward compatibility + Map normalizedExternalProperties = new HashMap<>(); + externalProperties.forEach( + (key, value) -> + normalizedExternalProperties.put(normalizePropertyKey(key.toString()), value)); + + return new PropertySource(normalizedExternalProperties, envVarProperties, regularProperties); + } + + private static void normalizeAndPutAll(Map target, Map source) { + source.forEach((key, value) -> target.put(normalizePropertyKey(key.toString()), value)); } private static Properties loadPropertiesFromClasspath() { @@ -135,4 +171,48 @@ private static Properties loadPropertiesFromFile() throws PrometheusPropertiesEx } return properties; } + + /** + * Load properties from environment variables. + * + *

Environment variables are converted to lowercase but keep underscores as-is. For example, + * the environment variable IO_PROMETHEUS_METRICS_EXEMPLARS_ENABLED becomes + * io_prometheus_metrics_exemplars_enabled. + * + *

The transformation to dot notation happens at access time in PropertySource. + * + *

Only environment variables starting with IO_PROMETHEUS are considered. + * + * @return properties loaded from environment variables (with lowercase keys and underscores) + */ + private static Map loadPropertiesFromEnvironment() { + Map properties = new HashMap<>(); + System.getenv() + .forEach( + (key, value) -> { + if (key.startsWith("IO_PROMETHEUS")) { + String normalizedKey = key.toLowerCase(java.util.Locale.ROOT); + properties.put(normalizedKey, value); + } + }); + return properties; + } + + /** + * Normalize a property key for consistent lookup. + * + *

Converts camelCase property keys to snake_case. This allows both snake_case (preferred) and + * camelCase (deprecated) property names to be used. + * + *

For example: exemplarsEnabled โ†’ exemplars_enabled exemplars_enabled โ†’ exemplars_enabled + * (unchanged) + * + * @param key the property key + * @return the normalized property key + */ + static String normalizePropertyKey(String key) { + // Insert underscores before uppercase letters to convert camelCase to snake_case + String withUnderscores = key.replaceAll("([a-z])([A-Z])", "$1_$2"); + return withUnderscores.toLowerCase(java.util.Locale.ROOT); + } } diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PropertySource.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PropertySource.java new file mode 100644 index 000000000..a85212469 --- /dev/null +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PropertySource.java @@ -0,0 +1,165 @@ +package io.prometheus.metrics.config; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +/** + * PropertySource encapsulates three separate property maps with different priorities and + * transformation rules. + * + *

Properties are checked in the following order: + * + *

    + *
  1. External properties (highest priority) - exact key match + *
  2. Environment variables (second priority) - with dot-to-underscore transformation + *
  3. Regular properties (lowest priority) - from system properties, files, and classpath + *
+ * + *

Property lookups remove entries from the maps. This allows detecting unused properties at the + * end of configuration loading. + */ +class PropertySource { + + private final Map externalProperties; // Highest priority + private final Map envVarProperties; // Second priority + private final Map regularProperties; // Lowest priority + + /** + * Creates a PropertySource with three separate property maps. + * + * @param externalProperties properties passed explicitly (e.g., from application code) + * @param envVarProperties properties from environment variables (keys in env var format with + * underscores, lowercase) + * @param regularProperties properties from system properties, files, and classpath (keys + * normalized to snake_case) + */ + PropertySource( + Map externalProperties, + Map envVarProperties, + Map regularProperties) { + this.externalProperties = externalProperties; + this.envVarProperties = envVarProperties; + this.regularProperties = regularProperties; + } + + /** + * Creates a PropertySource with only regular properties (for testing). + * + *

Creates empty maps for external and environment variable properties. + * + * @param regularProperties properties from system properties, files, and classpath (keys + * normalized to snake_case) + */ + PropertySource(Map regularProperties) { + this(new HashMap<>(), new HashMap<>(), regularProperties); + } + + /** + * Gets a property value by key, checking all three sources in priority order. + * + *

For external and regular properties, performs exact key match. For environment variables, + * transforms dots to underscores before lookup (e.g., "io.prometheus.metrics.exemplars_enabled" + * becomes "io_prometheus_metrics_exemplars_enabled"). + * + *

Removes the property from ALL source maps to prevent duplicate detection during validation. + * + * @param key the property key to look up + * @return the property value, or null if not found + */ + @Nullable + String getProperty(String key) { + String result = null; + + // Check external properties first (highest priority) + Object value = externalProperties.remove(key); + if (value != null) { + result = value.toString(); + } + + // Check env vars with transformation (second priority) + // Transform dots to underscores: io.prometheus.metrics.exemplars_enabled + // -> io_prometheus_metrics_exemplars_enabled + String envKey = key.replace(".", "_"); + Object envValue = envVarProperties.remove(envKey); + if (result == null && envValue != null) { + result = envValue.toString(); + } + + // Check regular properties last (lowest priority) + Object regularValue = regularProperties.remove(key); + if (result == null && regularValue != null) { + result = regularValue.toString(); + } + + return result; + } + + /** + * Gets a property value by prefix and property name. + * + *

This is a convenience method that concatenates the prefix and property name with a dot and + * calls {@link #getProperty(String)}. + * + * @param prefix the property prefix (e.g., "io.prometheus.metrics"), or empty string for no + * prefix + * @param propertyName the property name (e.g., "exemplars_enabled") + * @return the property value, or null if not found + */ + @Nullable + String getProperty(String prefix, String propertyName) { + String fullKey = prefix.isEmpty() ? propertyName : prefix + "." + propertyName; + return getProperty(fullKey); + } + + /** + * Returns all keys from all three property sources. + * + *

Keys are returned in the format they are stored in each source: external and regular + * properties typically use dot-separated keys, while environment variables are exposed in their + * underscore form (e.g., "io_prometheus_metrics_exemplars_enabled"). + * + *

This is used for pattern matching to find metric-specific configurations. + * + * @return a set of all property keys + */ + Set getAllKeys() { + Set allKeys = new HashSet<>(); + for (Object key : externalProperties.keySet()) { + allKeys.add(key.toString()); + } + // Include env var keys as stored (underscore-separated, lowercase) + for (Object key : envVarProperties.keySet()) { + String envKey = key.toString(); + allKeys.add(envKey); + } + for (Object key : regularProperties.keySet()) { + allKeys.add(key.toString()); + } + return allKeys; + } + + /** + * Returns all remaining keys from all three property sources. + * + *

This is used for validation to detect unused properties that might indicate configuration + * errors. + * + * @return a set of all remaining property keys + */ + Set getRemainingKeys() { + Set remainingKeys = new HashSet<>(); + for (Object key : externalProperties.keySet()) { + remainingKeys.add(key.toString()); + } + for (Object key : envVarProperties.keySet()) { + remainingKeys.add(key.toString()); + } + for (Object key : regularProperties.keySet()) { + remainingKeys.add(key.toString()); + } + return remainingKeys; + } +} diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java index 04eb78a19..20bd75699 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java @@ -12,22 +12,19 @@ class Util { @Nullable - static String getProperty(String name, Map properties) { - Object object = properties.remove(name); - if (object != null) { - return object.toString(); - } - return null; + static String getProperty(String prefix, String propertyName, PropertySource propertySource) { + return propertySource.getProperty(prefix, propertyName); } @Nullable - static Boolean loadBoolean(String name, Map properties) + static Boolean loadBoolean(String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { + String fullKey = prefix.isEmpty() ? propertyName : prefix + "." + propertyName; if (!"true".equalsIgnoreCase(property) && !"false".equalsIgnoreCase(property)) { throw new PrometheusPropertiesException( - String.format("%s: Expecting 'true' or 'false'. Found: %s", name, property)); + String.format("%s: Expecting 'true' or 'false'. Found: %s", fullKey, property)); } return Boolean.parseBoolean(property); } @@ -47,24 +44,26 @@ static List toList(@Nullable double... values) { } @Nullable - static String loadString(String name, Map properties) + static String loadString(String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - return getProperty(name, properties); + return getProperty(prefix, propertyName, propertySource); } @Nullable - static String loadStringAddSuffix(String name, Map properties, String suffix) { - Object object = properties.remove(name); - if (object != null) { - return object + suffix; + static String loadStringAddSuffix( + String prefix, String propertyName, PropertySource propertySource, String suffix) { + String value = propertySource.getProperty(prefix, propertyName); + if (value != null) { + return value + suffix; } return null; } @Nullable - static List loadStringList(String name, Map properties) + static List loadStringList( + String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { return Arrays.asList(property.split("\\s*,\\s*")); } @@ -72,10 +71,12 @@ static List loadStringList(String name, Map properties) } @Nullable - static List loadDoubleList(String name, Map properties) + static List loadDoubleList( + String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { + String fullKey = prefix.isEmpty() ? propertyName : prefix + "." + propertyName; String[] numbers = property.split("\\s*,\\s*"); Double[] result = new Double[numbers.length]; for (int i = 0; i < numbers.length; i++) { @@ -87,7 +88,7 @@ static List loadDoubleList(String name, Map properties) } } catch (NumberFormatException e) { throw new PrometheusPropertiesException( - name + "=" + property + ": Expecting comma separated list of double values"); + fullKey + "=" + property + ": Expecting comma separated list of double values"); } } return Arrays.asList(result); @@ -96,10 +97,11 @@ static List loadDoubleList(String name, Map properties) } // Map is represented as "key1=value1,key2=value2" - static Map loadMap(String name, Map properties) + static Map loadMap( + String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { Map result = new HashMap<>(); - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { String[] pairs = property.split(","); for (String pair : pairs) { @@ -119,55 +121,61 @@ static Map loadMap(String name, Map properties) } @Nullable - static Integer loadInteger(String name, Map properties) + static Integer loadInteger(String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { + String fullKey = prefix.isEmpty() ? propertyName : prefix + "." + propertyName; try { return Integer.parseInt(property); } catch (NumberFormatException e) { throw new PrometheusPropertiesException( - name + "=" + property + ": Expecting integer value"); + fullKey + "=" + property + ": Expecting integer value"); } } return null; } @Nullable - static Double loadDouble(String name, Map properties) + static Double loadDouble(String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { + String fullKey = prefix.isEmpty() ? propertyName : prefix + "." + propertyName; try { return Double.parseDouble(property); } catch (NumberFormatException e) { - throw new PrometheusPropertiesException(name + "=" + property + ": Expecting double value"); + throw new PrometheusPropertiesException( + fullKey + "=" + property + ": Expecting double value"); } } return null; } @Nullable - static Long loadLong(String name, Map properties) + static Long loadLong(String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - String property = getProperty(name, properties); + String property = getProperty(prefix, propertyName, propertySource); if (property != null) { + String fullKey = prefix.isEmpty() ? propertyName : prefix + "." + propertyName; try { return Long.parseLong(property); } catch (NumberFormatException e) { - throw new PrometheusPropertiesException(name + "=" + property + ": Expecting long value"); + throw new PrometheusPropertiesException( + fullKey + "=" + property + ": Expecting long value"); } } return null; } @Nullable - static Duration loadOptionalDuration(String name, Map properties) + static Duration loadOptionalDuration( + String prefix, String propertyName, PropertySource propertySource) throws PrometheusPropertiesException { - Long value = loadLong(name, properties); + Long value = loadLong(prefix, propertyName, propertySource); - assertValue(value, t -> t >= 0, "Expecting value >= 0.", null, name); + assertValue(value, t -> t >= 0, "Expecting value >= 0.", prefix, propertyName); if (value == null || value == 0) { return null; @@ -180,10 +188,11 @@ static void assertValue( Predicate predicate, String message, @Nullable String prefix, - String name) + String propertyName) throws PrometheusPropertiesException { if (number != null && !predicate.test(number)) { - String fullKey = prefix == null ? name : prefix + "." + name; + String fullKey = + (prefix == null || prefix.isEmpty()) ? propertyName : prefix + "." + propertyName; String fullMessage = String.format("%s: %s Found: %s", fullKey, message, number); throw new PrometheusPropertiesException(fullMessage); } diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExemplarsPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExemplarsPropertiesTest.java index 53f7ae072..aa87ed105 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExemplarsPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExemplarsPropertiesTest.java @@ -14,31 +14,35 @@ void load() { ExemplarsProperties properties = load( Map.of( - "io.prometheus.exemplars.minRetentionPeriodSeconds", "1", - "io.prometheus.exemplars.maxRetentionPeriodSeconds", "2", - "io.prometheus.exemplars.sampleIntervalMilliseconds", "3")); + "io.prometheus.exemplars.min_retention_period_seconds", "1", + "io.prometheus.exemplars.max_retention_period_seconds", "2", + "io.prometheus.exemplars.sample_interval_milliseconds", "3")); assertThat(properties.getMinRetentionPeriodSeconds()).isOne(); assertThat(properties.getMaxRetentionPeriodSeconds()).isEqualTo(2); assertThat(properties.getSampleIntervalMilliseconds()).isEqualTo(3); assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy(() -> load(Map.of("io.prometheus.exemplars.minRetentionPeriodSeconds", "-1"))) + .isThrownBy( + () -> load(Map.of("io.prometheus.exemplars.min_retention_period_seconds", "-1"))) .withMessage( - "io.prometheus.exemplars.minRetentionPeriodSeconds: Expecting value > 0. Found: -1"); + "io.prometheus.exemplars.min_retention_period_seconds: Expecting value > 0. Found: -1"); assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy(() -> load(Map.of("io.prometheus.exemplars.maxRetentionPeriodSeconds", "0"))) + .isThrownBy(() -> load(Map.of("io.prometheus.exemplars.max_retention_period_seconds", "0"))) .withMessage( - "io.prometheus.exemplars.maxRetentionPeriodSeconds: Expecting value > 0. Found: 0"); + "io.prometheus.exemplars.max_retention_period_seconds: Expecting value > 0. Found: 0"); assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy(() -> load(Map.of("io.prometheus.exemplars.sampleIntervalMilliseconds", "-1"))) + .isThrownBy( + () -> load(Map.of("io.prometheus.exemplars.sample_interval_milliseconds", "-1"))) .withMessage( - "io.prometheus.exemplars.sampleIntervalMilliseconds: Expecting value > 0. Found: -1"); + "io.prometheus.exemplars.sample_interval_milliseconds: Expecting value > 0. Found: -1"); } private static ExemplarsProperties load(Map map) { - return ExemplarsProperties.load(new HashMap<>(map)); + Map regularProperties = new HashMap<>(map); + PropertySource propertySource = new PropertySource(regularProperties); + return ExemplarsProperties.load(propertySource); } @Test diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterFilterPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterFilterPropertiesTest.java index 0b30fbd43..c7b9124af 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterFilterPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterFilterPropertiesTest.java @@ -13,10 +13,10 @@ void load() { ExporterFilterProperties properties = load( Map.of( - "io.prometheus.exporter.filter.metricNameMustBeEqualTo", "a,b,c", - "io.prometheus.exporter.filter.metricNameMustNotBeEqualTo", "d,e,f", - "io.prometheus.exporter.filter.metricNameMustStartWith", "g,h,i", - "io.prometheus.exporter.filter.metricNameMustNotStartWith", "j,k,l")); + "io.prometheus.exporter.filter.metric_name_must_be_equal_to", "a,b,c", + "io.prometheus.exporter.filter.metric_name_must_not_be_equal_to", "d,e,f", + "io.prometheus.exporter.filter.metric_name_must_start_with", "g,h,i", + "io.prometheus.exporter.filter.metric_name_must_not_start_with", "j,k,l")); assertThat(properties.getAllowedMetricNames()).containsExactly("a", "b", "c"); assertThat(properties.getExcludedMetricNames()).containsExactly("d", "e", "f"); assertThat(properties.getAllowedMetricNamePrefixes()).containsExactly("g", "h", "i"); @@ -24,7 +24,9 @@ void load() { } private static ExporterFilterProperties load(Map map) { - return ExporterFilterProperties.load(new HashMap<>(map)); + Map regularProperties = new HashMap<>(map); + PropertySource propertySource = new PropertySource(regularProperties); + return ExporterFilterProperties.load(propertySource); } @Test diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterHttpServerPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterHttpServerPropertiesTest.java index ae83c305e..fc4faf141 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterHttpServerPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterHttpServerPropertiesTest.java @@ -12,13 +12,13 @@ class ExporterHttpServerPropertiesTest { @Test void load() { ExporterHttpServerProperties properties = - load(Map.of("io.prometheus.exporter.httpServer.port", "1")); + load(Map.of("io.prometheus.exporter.http_server.port", "1")); assertThat(properties.getPort()).isOne(); assertThat(properties.isPreferUncompressedResponse()).isFalse(); assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy(() -> load(Map.of("io.prometheus.exporter.httpServer.port", "0"))) - .withMessage("io.prometheus.exporter.httpServer.port: Expecting value > 0. Found: 0"); + .isThrownBy(() -> load(Map.of("io.prometheus.exporter.http_server.port", "0"))) + .withMessage("io.prometheus.exporter.http_server.port: Expecting value > 0. Found: 0"); } @Test @@ -34,6 +34,8 @@ void builder() { } private static ExporterHttpServerProperties load(Map map) { - return ExporterHttpServerProperties.load(new HashMap<>(map)); + Map regularProperties = new HashMap<>(map); + PropertySource propertySource = new PropertySource(regularProperties); + return ExporterHttpServerProperties.load(propertySource); } } diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java index 7ba275570..4a2aefe1e 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java @@ -16,13 +16,13 @@ void load() { "io.prometheus.exporter.opentelemetry.protocol", "grpc", "io.prometheus.exporter.opentelemetry.endpoint", "http://localhost:8080", "io.prometheus.exporter.opentelemetry.headers", "key1=value1,key2=value2", - "io.prometheus.exporter.opentelemetry.intervalSeconds", "10", - "io.prometheus.exporter.opentelemetry.timeoutSeconds", "5", - "io.prometheus.exporter.opentelemetry.serviceName", "serviceName", - "io.prometheus.exporter.opentelemetry.serviceNamespace", "serviceNamespace", - "io.prometheus.exporter.opentelemetry.serviceInstanceId", "serviceInstanceId", - "io.prometheus.exporter.opentelemetry.serviceVersion", "serviceVersion", - "io.prometheus.exporter.opentelemetry.resourceAttributes", + "io.prometheus.exporter.opentelemetry.interval_seconds", "10", + "io.prometheus.exporter.opentelemetry.timeout_seconds", "5", + "io.prometheus.exporter.opentelemetry.service_name", "serviceName", + "io.prometheus.exporter.opentelemetry.service_namespace", "serviceNamespace", + "io.prometheus.exporter.opentelemetry.service_instance_id", "serviceInstanceId", + "io.prometheus.exporter.opentelemetry.service_version", "serviceVersion", + "io.prometheus.exporter.opentelemetry.resource_attributes", "key1=value1,key2=value2")); assertValues(properties); @@ -44,7 +44,9 @@ private static void assertValues(ExporterOpenTelemetryProperties properties) { } private static ExporterOpenTelemetryProperties load(Map map) { - return ExporterOpenTelemetryProperties.load(new HashMap<>(map)); + Map regularProperties = new HashMap<>(map); + PropertySource propertySource = new PropertySource(regularProperties); + return ExporterOpenTelemetryProperties.load(propertySource); } @Test diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java index dec9e03a5..f8dd74c13 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java @@ -15,8 +15,8 @@ void load() { load( new HashMap<>( Map.of( - "io.prometheus.exporter.includeCreatedTimestamps", "true", - "io.prometheus.exporter.exemplarsOnAllMetricTypes", "true"))); + "io.prometheus.exporter.include_created_timestamps", "true", + "io.prometheus.exporter.exemplars_on_all_metric_types", "true"))); assertThat(properties.getIncludeCreatedTimestamps()).isTrue(); assertThat(properties.getExemplarsOnAllMetricTypes()).isTrue(); @@ -25,23 +25,25 @@ void load() { () -> load( new HashMap<>( - Map.of("io.prometheus.exporter.includeCreatedTimestamps", "invalid")))) + Map.of("io.prometheus.exporter.include_created_timestamps", "invalid")))) .withMessage( - "io.prometheus.exporter.includeCreatedTimestamps: Expecting 'true' or 'false'. Found:" + "io.prometheus.exporter.include_created_timestamps: Expecting 'true' or 'false'. Found:" + " invalid"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy( () -> load( new HashMap<>( - Map.of("io.prometheus.exporter.exemplarsOnAllMetricTypes", "invalid")))) + Map.of("io.prometheus.exporter.exemplars_on_all_metric_types", "invalid")))) .withMessage( - "io.prometheus.exporter.exemplarsOnAllMetricTypes: Expecting 'true' or 'false'. Found:" + "io.prometheus.exporter.exemplars_on_all_metric_types: Expecting 'true' or 'false'. Found:" + " invalid"); } private static ExporterProperties load(Map map) { - return ExporterProperties.load(new HashMap<>(map)); + Map regularProperties = new HashMap<>(map); + PropertySource propertySource = new PropertySource(regularProperties); + return ExporterProperties.load(propertySource); } @Test diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java index e1e06348a..147a2856e 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java @@ -31,7 +31,9 @@ void load() { } private static ExporterPushgatewayProperties load(Map map) { - return ExporterPushgatewayProperties.load(new HashMap<>(map)); + Map regularProperties = new HashMap<>(map); + PropertySource propertySource = new PropertySource(regularProperties); + return ExporterPushgatewayProperties.load(propertySource); } @Test diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/MetricsPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/MetricsPropertiesTest.java index 4f4c56755..9f7684a8d 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/MetricsPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/MetricsPropertiesTest.java @@ -47,17 +47,17 @@ void builder() { assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().summaryNumberOfAgeBuckets(0).build()) - .withMessage(".summaryNumberOfAgeBuckets: Expecting value > 0. Found: 0"); + .withMessage("summary_number_of_age_buckets: Expecting value > 0. Found: 0"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().summaryQuantiles(2L).build()) - .withMessage(".summaryQuantiles: Expecting 0.0 <= quantile <= 1.0. Found: 2.0"); + .withMessage(".summary_quantiles: Expecting 0.0 <= quantile <= 1.0. Found: 2.0"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().summaryQuantileErrors(0.9).build()) .withMessage( - ".summaryQuantileErrors: Can't configure summaryQuantileErrors without configuring" - + " summaryQuantiles"); + ".summary_quantile_errors: Can't configure summary_quantile_errors without configuring" + + " summary_quantiles"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy( @@ -66,7 +66,7 @@ void builder() { .summaryQuantiles(0.1) .summaryQuantileErrors(0.1, 0.9) .build()) - .withMessage(".summaryQuantileErrors: must have the same length as summaryQuantiles"); + .withMessage("summary_quantile_errors: must have the same length as summary_quantiles"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy( @@ -75,7 +75,7 @@ void builder() { .summaryQuantiles(0.1) .summaryQuantileErrors(-0.9) .build()) - .withMessage(".summaryQuantileErrors: Expecting 0.0 <= error <= 1.0"); + .withMessage("summary_quantile_errors: Expecting 0.0 <= error <= 1.0"); } @Test @@ -114,24 +114,24 @@ void nativeBuilder() { assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().histogramNativeInitialSchema(10).build()) .withMessage( - ".histogramNativeInitialSchema: Expecting number between -4 and +8. Found: 10"); + "histogram_native_initial_schema: Expecting number between -4 and +8. Found: 10"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().histogramNativeMinZeroThreshold(-1.0).build()) - .withMessage(".histogramNativeMinZeroThreshold: Expecting value >= 0. Found: -1.0"); + .withMessage("histogram_native_min_zero_threshold: Expecting value >= 0. Found: -1.0"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().histogramNativeMaxZeroThreshold(-1.0).build()) - .withMessage(".histogramNativeMaxZeroThreshold: Expecting value >= 0. Found: -1.0"); + .withMessage("histogram_native_max_zero_threshold: Expecting value >= 0. Found: -1.0"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy(() -> MetricsProperties.builder().histogramNativeMaxNumberOfBuckets(-1).build()) - .withMessage(".histogramNativeMaxNumberOfBuckets: Expecting value >= 0. Found: -1"); + .withMessage("histogram_native_max_number_of_buckets: Expecting value >= 0. Found: -1"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy( () -> MetricsProperties.builder().histogramNativeResetDurationSeconds(-1L).build()) - .withMessage(".histogramNativeResetDurationSeconds: Expecting value >= 0. Found: -1"); + .withMessage("histogram_native_reset_duration_seconds: Expecting value >= 0. Found: -1"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy( @@ -140,7 +140,7 @@ void nativeBuilder() { .histogramNativeOnly(true) .histogramClassicOnly(true) .build()) - .withMessage(".histogramNativeOnly and .histogramClassicOnly cannot both be true"); + .withMessage(".histogram_native_only and .histogram_classic_only cannot both be true"); assertThatExceptionOfType(PrometheusPropertiesException.class) .isThrownBy( @@ -150,7 +150,7 @@ void nativeBuilder() { .histogramNativeMaxZeroThreshold(0.01) .build()) .withMessage( - ".histogramNativeMinZeroThreshold cannot be greater than" - + " .histogramNativeMaxZeroThreshold"); + ".histogram_native_min_zero_threshold cannot be greater than" + + " .histogram_native_max_zero_threshold"); } } diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java index c4eebb551..532b00295 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java @@ -3,6 +3,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; import org.junit.jupiter.api.Test; import org.junitpioneer.jupiter.SetSystemProperty; @@ -28,10 +30,7 @@ void propertiesShouldBeLoadedFromPropertiesFile() { @SetSystemProperty(key = "prometheus.config", value = "nonexistent.properties") void cantLoadPropertiesFile() { assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy( - () -> { - PrometheusPropertiesLoader.load(new Properties()); - }) + .isThrownBy(() -> PrometheusPropertiesLoader.load(new Properties())) .withMessage( "Failed to read Prometheus properties from nonexistent.properties:" + " nonexistent.properties"); @@ -40,11 +39,11 @@ void cantLoadPropertiesFile() { @Test void externalPropertiesShouldOverridePropertiesFile() { Properties properties = new Properties(); - properties.setProperty("io.prometheus.metrics.histogramClassicUpperBounds", ".005, .01"); + properties.setProperty("io.prometheus.metrics.histogram_classic_upper_bounds", ".005, .01"); properties.setProperty( - "io.prometheus.metrics.http_duration_seconds.histogramClassicUpperBounds", + "io.prometheus.metrics.http_duration_seconds.histogram_classic_upper_bounds", ".005, .01, .015"); - properties.setProperty("io.prometheus.exporter.exemplarsOnAllMetricTypes", "false"); + properties.setProperty("io.prometheus.exporter.exemplars_on_all_metric_types", "false"); PrometheusProperties prometheusProperties = PrometheusPropertiesLoader.load(properties); assertThat(prometheusProperties.getDefaultMetricProperties().getHistogramClassicUpperBounds()) @@ -57,4 +56,148 @@ void externalPropertiesShouldOverridePropertiesFile() { assertThat(prometheusProperties.getExporterProperties().getExemplarsOnAllMetricTypes()) .isFalse(); } + + @Test + void environmentVariablesShouldConfigureMetrics() { + // Simulate environment variables as they would be loaded + Map envVarProperties = new HashMap<>(); + envVarProperties.put( + "io_prometheus_metrics_http_duration_seconds_histogram_classic_upper_bounds", + ".001, .005, .01"); + envVarProperties.put("io_prometheus_metrics_exemplars_enabled", "false"); + + PropertySource propertySource = + new PropertySource(new HashMap<>(), envVarProperties, new HashMap<>()); + PrometheusProperties.MetricPropertiesMap metricsConfigs = + PrometheusPropertiesLoader.loadMetricsConfigs(propertySource); + + assertThat(metricsConfigs.get("http_duration_seconds").getHistogramClassicUpperBounds()) + .hasSize(3) + .containsExactly(0.001, 0.005, 0.01); + + MetricsProperties defaultMetrics = + MetricsProperties.load("io.prometheus.metrics", propertySource); + assertThat(defaultMetrics.getExemplarsEnabled()).isFalse(); + } + + @Test + void environmentVariablesShouldHandleSnakeCaseMetricNames() { + // Simulate environment variable for metric with snake_case name + Map envVarProperties = new HashMap<>(); + envVarProperties.put("io_prometheus_metrics_http_server_histogram_native_only", "true"); + + PropertySource propertySource = + new PropertySource(new HashMap<>(), envVarProperties, new HashMap<>()); + PrometheusProperties.MetricPropertiesMap metricsConfigs = + PrometheusPropertiesLoader.loadMetricsConfigs(propertySource); + + assertThat(metricsConfigs.get("http_server").getHistogramNativeOnly()).isTrue(); + } + + @Test + void environmentVariablesShouldHandleMultipleSnakeCaseSegments() { + // Simulate environment variable for metric with multiple snake_case segments + Map envVarProperties = new HashMap<>(); + envVarProperties.put("io_prometheus_metrics_my_custom_metric_histogram_native_only", "true"); + + PropertySource propertySource = + new PropertySource(new HashMap<>(), envVarProperties, new HashMap<>()); + PrometheusProperties.MetricPropertiesMap metricsConfigs = + PrometheusPropertiesLoader.loadMetricsConfigs(propertySource); + + assertThat(metricsConfigs.get("my_custom_metric").getHistogramNativeOnly()).isTrue(); + } + + @Test + void environmentVariablesShouldHandleMetricNamesContainingPropertyKeywords() { + // Metric names can contain words like "summary" or "histogram" + // This should not confuse the parser + Map envVarProperties = new HashMap<>(); + envVarProperties.put("io_prometheus_metrics_my_summary_metric_histogram_native_only", "true"); + envVarProperties.put( + "io_prometheus_metrics_histogram_processor_summary_quantiles", "0.5, 0.95"); + + PropertySource propertySource = + new PropertySource(new HashMap<>(), envVarProperties, new HashMap<>()); + PrometheusProperties.MetricPropertiesMap metricsConfigs = + PrometheusPropertiesLoader.loadMetricsConfigs(propertySource); + + assertThat(metricsConfigs.get("my_summary_metric").getHistogramNativeOnly()).isTrue(); + assertThat(metricsConfigs.get("histogram_processor").getSummaryQuantiles()) + .containsExactly(0.5, 0.95); + } + + @Test + void regularPropertiesShouldHandleComplexMetricNames() { + // Test that suffix-based matching works correctly for regular properties + // Metric names already use underscores (exposition format) + Properties properties = new Properties(); + properties.setProperty( + "io.prometheus.metrics.http_server_requests_total.histogram_native_only", "true"); + properties.setProperty( + "io.prometheus.metrics.my_app_custom_metric.summary_quantiles", "0.5, 0.99"); + + PropertySource propertySource = new PropertySource(properties); + PrometheusProperties.MetricPropertiesMap metricsConfigs = + PrometheusPropertiesLoader.loadMetricsConfigs(propertySource); + + assertThat(metricsConfigs.get("http_server_requests_total").getHistogramNativeOnly()).isTrue(); + assertThat(metricsConfigs.get("my_app_custom_metric").getSummaryQuantiles()) + .containsExactly(0.5, 0.99); + } + + @Test + void normalizePropertyKeyShouldConvertCamelCaseToSnakeCase() { + // Test that camelCase keys are correctly converted to snake_case for backward compatibility + assertThat( + PrometheusPropertiesLoader.normalizePropertyKey( + "io.prometheus.exporter.httpServer.port")) + .isEqualTo("io.prometheus.exporter.http_server.port"); + assertThat( + PrometheusPropertiesLoader.normalizePropertyKey( + "io.prometheus.metrics.exemplarsEnabled")) + .isEqualTo("io.prometheus.metrics.exemplars_enabled"); + assertThat( + PrometheusPropertiesLoader.normalizePropertyKey( + "io.prometheus.exporter.openTelemetry.serviceName")) + .isEqualTo("io.prometheus.exporter.open_telemetry.service_name"); + + // Test that snake_case keys remain unchanged + assertThat( + PrometheusPropertiesLoader.normalizePropertyKey( + "io.prometheus.exporter.http_server.port")) + .isEqualTo("io.prometheus.exporter.http_server.port"); + assertThat( + PrometheusPropertiesLoader.normalizePropertyKey( + "io.prometheus.metrics.exemplars_enabled")) + .isEqualTo("io.prometheus.metrics.exemplars_enabled"); + } + + @Test + void environmentVariablesShouldHaveCorrectPrecedence() { + // Test that environment variables override system properties and files, + // but are overridden by external properties + Properties fileProperties = new Properties(); + fileProperties.setProperty("io.prometheus.metrics.histogram_native_only", "false"); + + Map envVarProperties = new HashMap<>(); + envVarProperties.put("io_prometheus_metrics_histogram_native_only", "true"); + + Map externalProperties = new HashMap<>(); + externalProperties.put("io.prometheus.metrics.histogram_native_only", "false"); + + // Test that env vars override file properties + PropertySource propertySourceWithEnv = + new PropertySource(new HashMap<>(), envVarProperties, fileProperties); + MetricsProperties metricsWithEnv = + MetricsProperties.load("io.prometheus.metrics", propertySourceWithEnv); + assertThat(metricsWithEnv.getHistogramNativeOnly()).isTrue(); + + // Test that external properties override env vars + PropertySource propertySourceWithExternal = + new PropertySource(externalProperties, envVarProperties, fileProperties); + MetricsProperties metricsWithExternal = + MetricsProperties.load("io.prometheus.metrics", propertySourceWithExternal); + assertThat(metricsWithExternal.getHistogramNativeOnly()).isFalse(); + } } diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java index 42e21c7d9..7248a187d 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java @@ -6,6 +6,7 @@ import java.io.InputStream; import java.util.Collections; import java.util.HashMap; +import java.util.Map; import java.util.Properties; import org.junit.jupiter.api.Test; @@ -29,8 +30,10 @@ void testEmptyUpperBounds() throws IOException { properties.load(stream); } assertThat(properties).hasSize(1); - MetricsProperties.load("io.prometheus.metrics", properties); - assertThat(properties).isEmpty(); + Map regularProperties = new HashMap<>(properties); + PropertySource propertySource = new PropertySource(regularProperties); + MetricsProperties.load("io.prometheus.metrics", propertySource); + assertThat(regularProperties).isEmpty(); } @Test diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/UtilTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/UtilTest.java index 23ffbd33b..e4d7fa829 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/UtilTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/UtilTest.java @@ -11,40 +11,46 @@ class UtilTest { @Test void loadOptionalDuration_positive() { - Map properties = new HashMap<>(Map.of("foo", "5")); + Map regularProperties = new HashMap<>(Map.of("foo", "5")); + PropertySource propertySource = new PropertySource(regularProperties); - assertThat(Util.loadOptionalDuration("foo", properties)).isEqualTo(Duration.ofSeconds(5)); + assertThat(Util.loadOptionalDuration("", "foo", propertySource)) + .isEqualTo(Duration.ofSeconds(5)); } @Test void loadOptionalDuration_zero() { - Map properties = new HashMap<>(Map.of("foo", "0")); + Map regularProperties = new HashMap<>(Map.of("foo", "0")); + PropertySource propertySource = new PropertySource(regularProperties); - assertThat(Util.loadOptionalDuration("foo", properties)).isNull(); + assertThat(Util.loadOptionalDuration("", "foo", propertySource)).isNull(); } @Test void loadOptionalDuration_missing() { - Map properties = new HashMap<>(); + Map regularProperties = new HashMap<>(); + PropertySource propertySource = new PropertySource(regularProperties); - assertThat(Util.loadOptionalDuration("foo", properties)).isNull(); + assertThat(Util.loadOptionalDuration("", "foo", propertySource)).isNull(); } @Test void loadOptionalDuration_negative_throws() { - Map properties = new HashMap<>(Map.of("foo", "-1")); + Map regularProperties = new HashMap<>(Map.of("foo", "-1")); + PropertySource propertySource = new PropertySource(regularProperties); assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy(() -> Util.loadOptionalDuration("foo", properties)) + .isThrownBy(() -> Util.loadOptionalDuration("", "foo", propertySource)) .withMessage("foo: Expecting value >= 0. Found: -1"); } @Test void loadOptionalDuration_invalidNumber_throws() { - Map properties = new HashMap<>(Map.of("foo", "abc")); + Map regularProperties = new HashMap<>(Map.of("foo", "abc")); + PropertySource propertySource = new PropertySource(regularProperties); assertThatExceptionOfType(PrometheusPropertiesException.class) - .isThrownBy(() -> Util.loadOptionalDuration("foo", properties)) + .isThrownBy(() -> Util.loadOptionalDuration("", "foo", propertySource)) .withMessage("foo=abc: Expecting long value"); } } diff --git a/prometheus-metrics-config/src/test/resources/emptyUpperBounds.properties b/prometheus-metrics-config/src/test/resources/emptyUpperBounds.properties index c019761ca..d8c1a3515 100644 --- a/prometheus-metrics-config/src/test/resources/emptyUpperBounds.properties +++ b/prometheus-metrics-config/src/test/resources/emptyUpperBounds.properties @@ -1 +1 @@ -io.prometheus.metrics.histogramClassicUpperBounds =, +io.prometheus.metrics.histogram_classic_upper_bounds =, diff --git a/prometheus-metrics-config/src/test/resources/prometheus.properties b/prometheus-metrics-config/src/test/resources/prometheus.properties index 13a5d9e39..e5469803f 100644 --- a/prometheus-metrics-config/src/test/resources/prometheus.properties +++ b/prometheus-metrics-config/src/test/resources/prometheus.properties @@ -1,26 +1,26 @@ -io.prometheus.metrics.histogramClassicUpperBounds = .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10 -io.prometheus.metrics.http_duration_seconds.histogramClassicUpperBounds = .005, .01, .015, .02 -io.prometheus.metrics.summaryQuantiles = 0.5, 0.95, 0.99 -io.prometheus.metrics.summaryQuantileErrors = 0.01, 0.01, 0.001 +io.prometheus.metrics.histogram_classic_upper_bounds = .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10 +io.prometheus.metrics.http_duration_seconds.histogram_classic_upper_bounds = .005, .01, .015, .02 +io.prometheus.metrics.summary_quantiles = 0.5, 0.95, 0.99 +io.prometheus.metrics.summary_quantile_errors = 0.01, 0.01, 0.001 -io.prometheus.metrics.exemplarsEnabled = true -io.prometheus.metrics.http_duration_seconds.exemplarsEnabled = true +io.prometheus.metrics.exemplars_enabled = true +io.prometheus.metrics.http_duration_seconds.exemplars_enabled = true -io.prometheus.exporter.includeCreatedTimestamps = false -io.prometheus.exporter.exemplarsOnAllMetricTypes = true -io.prometheus.exporter.filter.metricNameMustBeEqualTo = a, b, c +io.prometheus.exporter.include_created_timestamps = false +io.prometheus.exporter.exemplars_on_all_metric_types = true +io.prometheus.exporter.filter.metric_name_must_be_equal_to = a, b, c -io.prometheus.exemplars.minRetentionPeriodSeconds = 30 -io.prometheus.exemplars.maxRetentionPeriodSeconds = 30 -io.prometheus.exemplars.sampleIntervalMilliseconds = 30 +io.prometheus.exemplars.min_retention_period_seconds = 30 +io.prometheus.exemplars.max_retention_period_seconds = 30 +io.prometheus.exemplars.sample_interval_milliseconds = 30 -io.prometheus.exporter.httpServer.port = 9000 +io.prometheus.exporter.http_server.port = 9000 io.prometheus.exporter.opentelemetry.endpoint=http://localhost:4318 -io.prometheus.exporter.opentelemetry.intervalSeconds=30 -io.prometheus.exporter.opentelemetry.serviceName=hello-world-app -io.prometheus.exporter.opentelemetry.serviceNamespace=prod -io.prometheus.exporter.opentelemetry.serviceInstanceId=localhost:8081 +io.prometheus.exporter.opentelemetry.interval_seconds=30 +io.prometheus.exporter.opentelemetry.service_name=hello-world-app +io.prometheus.exporter.opentelemetry.service_namespace=prod +io.prometheus.exporter.opentelemetry.service_instance_id=localhost:8081 -# io.prometheus.metrics.unusedLabelsRetentionTimeSeconds = 0 +# io.prometheus.metrics.unused_labels_retention_time_seconds = 0 diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java index ab2c07ee9..594132cf2 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java @@ -396,7 +396,7 @@ public Builder escapingScheme(EscapingScheme escapingScheme) { /** * Use milliseconds for timestamps in text format? Default is {@code false}. Can be overwritten - * at runtime with the {@code io.prometheus.exporter.timestampsInMs} property. + * at runtime with the {@code io.prometheus.exporter.timestamps_in_ms} property. */ public Builder prometheusTimestampsInMs(boolean prometheusTimestampsInMs) { this.prometheusTimestampsInMs = prometheusTimestampsInMs; From 5cfa5c08cf169dc5854b16d5fb457e37dc7885a3 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 6 Feb 2026 14:29:24 +0100 Subject: [PATCH 073/110] add branch coverage, better javadoc lints (#1851) Signed-off-by: Gregor Zeitlinger --- checkstyle-suppressions.xml | 17 +++- pom.xml | 7 ++ .../ExporterOpenTelemetryPropertiesTest.java | 37 ++++++++ .../config/ExporterPropertiesTest.java | 30 ++++++ .../ExporterPushgatewayPropertiesTest.java | 44 +++++++++ .../config/PrometheusPropertiesTest.java | 58 ++++++++++++ .../pom.xml | 2 +- .../exporter/httpserver/HTTPServerTest.java | 23 +++++ .../httpserver/HttpExchangeAdapterTest.java | 49 ++++++++++ ...ExponentialHistogramPointDataImplTest.java | 92 +++++++++++++++++++ .../otelmodel/HistogramPointDataImplTest.java | 80 ++++++++++++++++ .../exporter/pushgateway/SchemeTest.java | 2 + .../pom.xml | 2 +- .../PrometheusProtobufWriterTest.java | 12 +++ .../pom.xml | 2 +- .../pom.xml | 2 +- .../JvmMemoryPoolAllocationMetricsTest.java | 4 + .../metrics/model/registry/Collector.java | 4 +- .../model/registry/MultiCollector.java | 6 +- .../model/snapshots/PrometheusNaming.java | 8 +- .../metrics/model/snapshots/Unit.java | 4 +- 21 files changed, 469 insertions(+), 16 deletions(-) create mode 100644 prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapterTest.java create mode 100644 prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/ExponentialHistogramPointDataImplTest.java create mode 100644 prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/HistogramPointDataImplTest.java diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml index 5f632c578..82e964658 100644 --- a/checkstyle-suppressions.xml +++ b/checkstyle-suppressions.xml @@ -5,5 +5,20 @@ "https://checkstyle.org/dtds/suppressions_1_2.dtd"> - + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 4e3018de8..82aa11862 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,8 @@ **/generated/** **/*BlockingRejectedExecutionHandler* + **/*AllocationCountingNotificationListener* + **/*MapperConfig* @@ -264,6 +266,11 @@ COVEREDRATIO ${jacoco.line-coverage} + + BRANCH + COVEREDRATIO + 0.50 + diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java index 4a2aefe1e..003fba0e6 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java @@ -1,6 +1,7 @@ package io.prometheus.metrics.config; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.util.HashMap; import java.util.Map; @@ -68,4 +69,40 @@ void builder() { .build(); assertValues(properties); } + + @Test + void builderWithHttpProtobuf() { + ExporterOpenTelemetryProperties properties = + ExporterOpenTelemetryProperties.builder().protocol("http/protobuf").build(); + assertThat(properties.getProtocol()).isEqualTo("http/protobuf"); + } + + @Test + void builderWithInvalidProtocol() { + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> ExporterOpenTelemetryProperties.builder().protocol("invalid")) + .withMessage("invalid: Unsupported protocol. Expecting grpc or http/protobuf"); + } + + @Test + void builderWithInvalidIntervalSeconds() { + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> ExporterOpenTelemetryProperties.builder().intervalSeconds(0)) + .withMessage("0: Expecting intervalSeconds > 0"); + + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> ExporterOpenTelemetryProperties.builder().intervalSeconds(-1)) + .withMessage("-1: Expecting intervalSeconds > 0"); + } + + @Test + void builderWithInvalidTimeoutSeconds() { + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> ExporterOpenTelemetryProperties.builder().timeoutSeconds(0)) + .withMessage("0: Expecting timeoutSeconds > 0"); + + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> ExporterOpenTelemetryProperties.builder().timeoutSeconds(-1)) + .withMessage("-1: Expecting timeoutSeconds > 0"); + } } diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java index f8dd74c13..6cde17648 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java @@ -56,5 +56,35 @@ void builder() { .build(); assertThat(properties.getIncludeCreatedTimestamps()).isTrue(); assertThat(properties.getExemplarsOnAllMetricTypes()).isTrue(); + assertThat(properties.getPrometheusTimestampsInMs()).isFalse(); + } + + @Test + void defaultValues() { + ExporterProperties properties = ExporterProperties.builder().build(); + assertThat(properties.getIncludeCreatedTimestamps()).isFalse(); + assertThat(properties.getExemplarsOnAllMetricTypes()).isFalse(); + assertThat(properties.getPrometheusTimestampsInMs()).isFalse(); + } + + @Test + void prometheusTimestampsInMs() { + ExporterProperties properties = + ExporterProperties.builder().prometheusTimestampsInMs(true).build(); + assertThat(properties.getPrometheusTimestampsInMs()).isTrue(); + + properties = + load(new HashMap<>(Map.of("io.prometheus.exporter.prometheus_timestamps_in_ms", "true"))); + assertThat(properties.getPrometheusTimestampsInMs()).isTrue(); + + assertThatExceptionOfType(PrometheusPropertiesException.class) + .isThrownBy( + () -> + load( + new HashMap<>( + Map.of("io.prometheus.exporter.prometheus_timestamps_in_ms", "invalid")))) + .withMessage( + "io.prometheus.exporter.prometheus_timestamps_in_ms: Expecting 'true' or 'false'. Found:" + + " invalid"); } } diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java index 147a2856e..c92e6f2f9 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java @@ -30,6 +30,50 @@ void load() { + " Found: foo"); } + @Test + void loadWithHttps() { + ExporterPushgatewayProperties properties = + load(Map.of("io.prometheus.exporter.pushgateway.scheme", "https")); + assertThat(properties.getScheme()).isEqualTo("https"); + } + + @Test + void loadWithEscapingSchemes() { + ExporterPushgatewayProperties properties = + load(Map.of("io.prometheus.exporter.pushgateway.escaping_scheme", "allow-utf-8")); + assertThat(properties.getEscapingScheme()).isEqualTo(EscapingScheme.ALLOW_UTF8); + + properties = load(Map.of("io.prometheus.exporter.pushgateway.escaping_scheme", "values")); + assertThat(properties.getEscapingScheme()).isEqualTo(EscapingScheme.VALUE_ENCODING_ESCAPING); + + properties = load(Map.of("io.prometheus.exporter.pushgateway.escaping_scheme", "underscores")); + assertThat(properties.getEscapingScheme()).isEqualTo(EscapingScheme.UNDERSCORE_ESCAPING); + + properties = load(Map.of("io.prometheus.exporter.pushgateway.escaping_scheme", "dots")); + assertThat(properties.getEscapingScheme()).isEqualTo(EscapingScheme.DOTS_ESCAPING); + } + + @Test + void loadWithInvalidEscapingScheme() { + assertThatExceptionOfType(PrometheusPropertiesException.class) + .isThrownBy( + () -> load(Map.of("io.prometheus.exporter.pushgateway.escaping_scheme", "invalid"))) + .withMessage( + "io.prometheus.exporter.pushgateway.escaping_scheme: Illegal value. Expecting" + + " 'allow-utf-8', 'values', 'underscores', or 'dots'. Found: invalid"); + } + + @Test + void loadWithTimeouts() { + ExporterPushgatewayProperties properties = + load( + Map.of( + "io.prometheus.exporter.pushgateway.connect_timeout_seconds", "5", + "io.prometheus.exporter.pushgateway.read_timeout_seconds", "10")); + assertThat(properties.getConnectTimeout()).isEqualTo(Duration.ofSeconds(5)); + assertThat(properties.getReadTimeout()).isEqualTo(Duration.ofSeconds(10)); + } + private static ExporterPushgatewayProperties load(Map map) { Map regularProperties = new HashMap<>(map); PropertySource propertySource = new PropertySource(regularProperties); diff --git a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java index 7248a187d..3e891202a 100644 --- a/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java +++ b/prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java @@ -70,4 +70,62 @@ void testBuilder() { assertThat(result.getMetricProperties("unknown_metric")).isNull(); assertThat(result.getExporterProperties()).isSameAs(defaults.getExporterProperties()); } + + @Test + void testMetricNameNormalization() { + PrometheusProperties.Builder builder = PrometheusProperties.builder(); + MetricsProperties customProps = + MetricsProperties.builder().histogramClassicUpperBounds(0.1, 0.5).build(); + + // Test that metric names with dots are normalized to underscores + builder.putMetricProperty("my.metric.name", customProps); + PrometheusProperties result = builder.build(); + + // Should be able to retrieve with dots + assertThat(result.getMetricProperties("my.metric.name")).isSameAs(customProps); + // Should also be able to retrieve with underscores + assertThat(result.getMetricProperties("my_metric_name")).isSameAs(customProps); + } + + @Test + void testMetricNameWithInvalidCharacters() { + PrometheusProperties.Builder builder = PrometheusProperties.builder(); + MetricsProperties customProps = + MetricsProperties.builder().histogramClassicUpperBounds(0.1, 0.5).build(); + + // Test that invalid characters are converted to underscores + builder.putMetricProperty("metric-name@with#invalid$chars", customProps); + PrometheusProperties result = builder.build(); + + // Should normalize invalid characters to underscores + assertThat(result.getMetricProperties("metric-name@with#invalid$chars")).isSameAs(customProps); + assertThat(result.getMetricProperties("metric_name_with_invalid_chars")).isSameAs(customProps); + } + + @Test + void testMetricNameWithValidCharacters() { + PrometheusProperties.Builder builder = PrometheusProperties.builder(); + MetricsProperties customProps = + MetricsProperties.builder().histogramClassicUpperBounds(0.1, 0.5).build(); + + // Test valid characters: letters, numbers (not at start), underscore, colon + builder.putMetricProperty("my_metric:name123", customProps); + PrometheusProperties result = builder.build(); + + assertThat(result.getMetricProperties("my_metric:name123")).isSameAs(customProps); + } + + @Test + void testMetricNameStartingWithNumber() { + PrometheusProperties.Builder builder = PrometheusProperties.builder(); + MetricsProperties customProps = + MetricsProperties.builder().histogramClassicUpperBounds(0.1, 0.5).build(); + + // First digit is invalid (i=0), but subsequent digits are valid (i>0) + builder.putMetricProperty("123metric", customProps); + PrometheusProperties result = builder.build(); + + assertThat(result.getMetricProperties("123metric")).isSameAs(customProps); + assertThat(result.getMetricProperties("_23metric")).isSameAs(customProps); + } } diff --git a/prometheus-metrics-exporter-httpserver/pom.xml b/prometheus-metrics-exporter-httpserver/pom.xml index 07c2abd71..01fc2dab5 100644 --- a/prometheus-metrics-exporter-httpserver/pom.xml +++ b/prometheus-metrics-exporter-httpserver/pom.xml @@ -19,7 +19,7 @@ io.prometheus.metrics.exporter.httpserver - 0.45 + 0.60 diff --git a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java index 83c4a2874..ff2d55048 100644 --- a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java +++ b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HTTPServerTest.java @@ -85,6 +85,29 @@ public Result authenticate(HttpExchange exchange) { run(server, "/", 204, ""); } + @Test + void testSubjectDoAsWithInvalidSubject() throws Exception { + Authenticator authenticator = + new Authenticator() { + @Override + public Result authenticate(HttpExchange exchange) { + exchange.setAttribute("aa", "not-a-subject"); + return new Success(new HttpPrincipal("user", "/")); + } + }; + + HttpHandler handler = exchange -> exchange.sendResponseHeaders(204, -1); + HTTPServer server = + HTTPServer.builder() + .port(0) + .authenticator(authenticator) + .defaultHandler(handler) + .authenticatedSubjectAttributeName("aa") + .buildAndStart(); + + run(server, "/", 403, ""); + } + @Test void defaultHandler() throws Exception { run( diff --git a/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapterTest.java b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapterTest.java new file mode 100644 index 000000000..19bc0d66e --- /dev/null +++ b/prometheus-metrics-exporter-httpserver/src/test/java/io/prometheus/metrics/exporter/httpserver/HttpExchangeAdapterTest.java @@ -0,0 +1,49 @@ +package io.prometheus.metrics.exporter.httpserver; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import java.net.URI; +import java.util.List; +import org.junit.jupiter.api.Test; + +class HttpExchangeAdapterTest { + + @Test + void getRequestPath() { + HttpExchange httpExchange = mock(HttpExchange.class); + when(httpExchange.getRequestURI()).thenReturn(URI.create("/metrics?name=test")); + HttpExchangeAdapter adapter = new HttpExchangeAdapter(httpExchange); + assertThat(adapter.getRequest().getRequestPath()).isEqualTo("/metrics"); + } + + @Test + void getRequestPathWithoutQueryString() { + HttpExchange httpExchange = mock(HttpExchange.class); + when(httpExchange.getRequestURI()).thenReturn(URI.create("/metrics")); + HttpExchangeAdapter adapter = new HttpExchangeAdapter(httpExchange); + assertThat(adapter.getRequest().getRequestPath()).isEqualTo("/metrics"); + } + + @Test + void getHeadersWhenPresent() { + HttpExchange httpExchange = mock(HttpExchange.class); + Headers headers = new Headers(); + headers.put("Accept", List.of("text/plain")); + when(httpExchange.getRequestHeaders()).thenReturn(headers); + HttpExchangeAdapter adapter = new HttpExchangeAdapter(httpExchange); + assertThat(adapter.getRequest().getHeaders("Accept").nextElement()).isEqualTo("text/plain"); + } + + @Test + void getHeadersWhenNotPresent() { + HttpExchange httpExchange = mock(HttpExchange.class); + Headers headers = new Headers(); + when(httpExchange.getRequestHeaders()).thenReturn(headers); + HttpExchangeAdapter adapter = new HttpExchangeAdapter(httpExchange); + assertThat(adapter.getRequest().getHeaders("Accept").hasMoreElements()).isFalse(); + } +} diff --git a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/ExponentialHistogramPointDataImplTest.java b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/ExponentialHistogramPointDataImplTest.java new file mode 100644 index 000000000..066913420 --- /dev/null +++ b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/ExponentialHistogramPointDataImplTest.java @@ -0,0 +1,92 @@ +package io.prometheus.metrics.exporter.opentelemetry.otelmodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets; +import java.util.List; +import org.junit.jupiter.api.Test; + +class ExponentialHistogramPointDataImplTest { + + private static final ExponentialHistogramBuckets EMPTY_BUCKETS = + ExponentialHistogramBuckets.create(0, 0, List.of()); + + @Test + void hasMinReturnsTrueWhenMinIsNotNaN() { + ExponentialHistogramPointDataImpl histogramPoint = + new ExponentialHistogramPointDataImpl( + 0, + 10.0, + 5, + 0, + 1.0, + 5.0, + EMPTY_BUCKETS, + EMPTY_BUCKETS, + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMin()).isTrue(); + assertThat(histogramPoint.getMin()).isEqualTo(1.0); + } + + @Test + void hasMinReturnsFalseWhenMinIsNaN() { + ExponentialHistogramPointDataImpl histogramPoint = + new ExponentialHistogramPointDataImpl( + 0, + 10.0, + 5, + 0, + Double.NaN, + 5.0, + EMPTY_BUCKETS, + EMPTY_BUCKETS, + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMin()).isFalse(); + } + + @Test + void hasMaxReturnsTrueWhenMaxIsNotNaN() { + ExponentialHistogramPointDataImpl histogramPoint = + new ExponentialHistogramPointDataImpl( + 0, + 10.0, + 5, + 0, + 1.0, + 5.0, + EMPTY_BUCKETS, + EMPTY_BUCKETS, + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMax()).isTrue(); + assertThat(histogramPoint.getMax()).isEqualTo(5.0); + } + + @Test + void hasMaxReturnsFalseWhenMaxIsNaN() { + ExponentialHistogramPointDataImpl histogramPoint = + new ExponentialHistogramPointDataImpl( + 0, + 10.0, + 5, + 0, + 1.0, + Double.NaN, + EMPTY_BUCKETS, + EMPTY_BUCKETS, + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMax()).isFalse(); + } +} diff --git a/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/HistogramPointDataImplTest.java b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/HistogramPointDataImplTest.java new file mode 100644 index 000000000..b5c4e9373 --- /dev/null +++ b/prometheus-metrics-exporter-opentelemetry/src/test/java/io/prometheus/metrics/exporter/opentelemetry/otelmodel/HistogramPointDataImplTest.java @@ -0,0 +1,80 @@ +package io.prometheus.metrics.exporter.opentelemetry.otelmodel; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.api.common.Attributes; +import java.util.List; +import org.junit.jupiter.api.Test; + +class HistogramPointDataImplTest { + + @Test + void hasMinReturnsTrueWhenMinIsNotNaN() { + HistogramPointDataImpl histogramPoint = + new HistogramPointDataImpl( + 10.0, + 5, + 1.0, + 5.0, + List.of(1.0, 2.0), + List.of(2L, 3L), + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMin()).isTrue(); + assertThat(histogramPoint.getMin()).isEqualTo(1.0); + } + + @Test + void hasMinReturnsFalseWhenMinIsNaN() { + HistogramPointDataImpl histogramPoint = + new HistogramPointDataImpl( + 10.0, + 5, + Double.NaN, + 5.0, + List.of(1.0, 2.0), + List.of(2L, 3L), + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMin()).isFalse(); + } + + @Test + void hasMaxReturnsTrueWhenMaxIsNotNaN() { + HistogramPointDataImpl histogramPoint = + new HistogramPointDataImpl( + 10.0, + 5, + 1.0, + 5.0, + List.of(1.0, 2.0), + List.of(2L, 3L), + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMax()).isTrue(); + assertThat(histogramPoint.getMax()).isEqualTo(5.0); + } + + @Test + void hasMaxReturnsFalseWhenMaxIsNaN() { + HistogramPointDataImpl histogramPoint = + new HistogramPointDataImpl( + 10.0, + 5, + 1.0, + Double.NaN, + List.of(1.0, 2.0), + List.of(2L, 3L), + 0L, + 1L, + Attributes.empty(), + List.of()); + assertThat(histogramPoint.hasMax()).isFalse(); + } +} diff --git a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/SchemeTest.java b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/SchemeTest.java index 6695a2911..0f6bf61d9 100644 --- a/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/SchemeTest.java +++ b/prometheus-metrics-exporter-pushgateway/src/test/java/io/prometheus/metrics/exporter/pushgateway/SchemeTest.java @@ -9,6 +9,8 @@ class SchemeTest { @Test void fromString() { + assertThat(Scheme.fromString("http")).isEqualTo(Scheme.HTTP); + assertThat(Scheme.fromString("https")).isEqualTo(Scheme.HTTPS); assertThat(Scheme.HTTP).hasToString("http"); assertThat(Scheme.HTTPS).hasToString("https"); assertThatExceptionOfType(IllegalArgumentException.class) diff --git a/prometheus-metrics-exposition-textformats/pom.xml b/prometheus-metrics-exposition-textformats/pom.xml index 1aeba0707..1f34a5dde 100644 --- a/prometheus-metrics-exposition-textformats/pom.xml +++ b/prometheus-metrics-exposition-textformats/pom.xml @@ -19,7 +19,7 @@ io.prometheus.writer.text - 0.50 + 0.60 diff --git a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriterTest.java b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriterTest.java index 26561bf46..59b413d81 100644 --- a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriterTest.java +++ b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriterTest.java @@ -13,6 +13,13 @@ class PrometheusProtobufWriterTest { @Test void accepts() { assertThat(writer.accepts(null)).isFalse(); + assertThat(writer.accepts("text/plain")).isFalse(); + assertThat(writer.accepts("application/vnd.google.protobuf")).isFalse(); + assertThat(writer.accepts("proto=io.prometheus.client.MetricFamily")).isFalse(); + assertThat( + writer.accepts( + "application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily")) + .isTrue(); } @Test @@ -34,4 +41,9 @@ void toDebugString() { assertThatCode(() -> writer.toDebugString(null, EscapingScheme.ALLOW_UTF8)) .isInstanceOf(UnsupportedOperationException.class); } + + @Test + void isAvailable() { + assertThat(writer.isAvailable()).isFalse(); + } } diff --git a/prometheus-metrics-instrumentation-dropwizard5/pom.xml b/prometheus-metrics-instrumentation-dropwizard5/pom.xml index 4fc7524f4..14704695b 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard5/pom.xml @@ -19,7 +19,7 @@ io.prometheus.metrics.instrumentation.dropwizard5 - 0.50 + 0.60 diff --git a/prometheus-metrics-instrumentation-jvm/pom.xml b/prometheus-metrics-instrumentation-jvm/pom.xml index e7b379207..2aaf675ad 100644 --- a/prometheus-metrics-instrumentation-jvm/pom.xml +++ b/prometheus-metrics-instrumentation-jvm/pom.xml @@ -19,7 +19,7 @@ io.prometheus.metrics.instrumentation.jvm - 0.55 + 0.60 diff --git a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java index 3a8138baf..2f681ce89 100644 --- a/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java +++ b/prometheus-metrics-instrumentation-jvm/src/test/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetricsTest.java @@ -47,6 +47,10 @@ void testListenerLogic() { // Decrease to 17, then increase by 3 listener.handleMemoryPool("TestPool", 17, 20); assertThat(getCountByPool("test", "TestPool", registry.scrape())).isEqualTo(153); + + // Edge case: before < last (tests diff1 < 0 branch) + listener.handleMemoryPool("TestPool", 10, 15); + assertThat(getCountByPool("test", "TestPool", registry.scrape())).isEqualTo(158); } private double getCountByPool(String metricName, String poolName, MetricSnapshots snapshots) { diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java index dbd7c36f5..beca6001e 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java @@ -67,8 +67,8 @@ default MetricSnapshot collect( * and the metric name is excluded. * * - * Returning {@code null} means checks are omitted (registration the metric always succeeds), and - * the collector is always scraped (the result is dropped after scraping if a name filter is + *

Returning {@code null} means checks are omitted (registration the metric always succeeds), + * and the collector is always scraped (the result is dropped after scraping if a name filter is * present and the metric name is excluded). * *

If your metric has a name that does not change at runtime it is a good idea to overwrite diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java index e4a224bdf..27ac3e10c 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java @@ -62,9 +62,9 @@ default MetricSnapshots collect( * and all names are excluded. * * - * Returning an empty list means checks are omitted (registration metric always succeeds), and the - * collector is always scraped (if a name filter is present and all names are excluded the result - * is dropped). + *

Returning an empty list means checks are omitted (registration metric always succeeds), and + * the collector is always scraped (if a name filter is present and all names are excluded the + * result is dropped). * *

If your collector returns a constant list of metrics that have names that do not change at * runtime it is a good idea to overwrite this and return the names. diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java index 71de5d0b4..4f766fdad 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java @@ -27,7 +27,7 @@ public class PrometheusNaming { *

  • OpenTelemetry: {@code process_runtime_jvm_buffer_count} * * - * We do not treat {@code _count} and {@code _sum} as reserved suffixes here for compatibility + *

    We do not treat {@code _count} and {@code _sum} as reserved suffixes here for compatibility * with these libraries. However, there is a risk of name conflict if someone creates a gauge * named {@code my_data_count} and a histogram or summary named {@code my_data}, because the * histogram or summary will implicitly have a sample named {@code my_data_count}. @@ -47,9 +47,9 @@ public class PrometheusNaming { *

  • The name MUST NOT end with one of the {@link #RESERVED_METRIC_NAME_SUFFIXES}. * * - * If a metric has a {@link Unit}, the metric name SHOULD end with the unit as a suffix. Note that - * OpenMetrics requires metric names to have their unit as - * suffix, and we implement this in {@code prometheus-metrics-core}. However, {@code + *

    If a metric has a {@link Unit}, the metric name SHOULD end with the unit as a suffix. Note + * that OpenMetrics requires metric names to have their unit + * as suffix, and we implement this in {@code prometheus-metrics-core}. However, {@code * prometheus-metrics-model} does not enforce Unit suffixes. * *

    Example: If you create a Counter for a processing time with Unit {@link Unit#SECONDS diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java index 31a9524e7..6e652af13 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java @@ -9,8 +9,8 @@ * new Unit("myUnit"); *

  • * - * Note that in Prometheus, units are largely based on SI base units (seconds, bytes, joules, grams, - * meters, ratio, volts, amperes, and Celsius). + *

    Note that in Prometheus, units are largely based on SI base units (seconds, bytes, joules, + * grams, meters, ratio, volts, amperes, and Celsius). */ public final class Unit { From 5b65034f0a095c3f9ed2294cfe98c7699fbfe0d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:15:11 +0000 Subject: [PATCH 074/110] chore(deps): update ghcr.io/super-linter/super-linter docker tag to v8.5.0 (#1856) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/super-linter/super-linter](https://redirect.github.com/super-linter/super-linter) | minor | `v8.4.0` โ†’ `v8.5.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes

    super-linter/super-linter (ghcr.io/super-linter/super-linter) ### [`v8.5.0`](https://redirect.github.com/super-linter/super-linter/compare/v8.4.0...v8.5.0) [Compare Source](https://redirect.github.com/super-linter/super-linter/compare/v8.4.0...v8.5.0)
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index b75e5175f..037bc5ea3 100644 --- a/mise.toml +++ b/mise.toml @@ -7,7 +7,7 @@ protoc = "33.5" [env] # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter -SUPER_LINTER_VERSION="v8.4.0@sha256:c5e3307932203ff9e1e8acfe7e92e894add6266605b5d7fb525fb371a59a26f4" +SUPER_LINTER_VERSION="v8.5.0@sha256:6831c0a801d353b510e4e468a3209a8a48bf0102e193d5c7e94e57667fdf64eb" [tasks.ci] description = "CI Build" From f70b2ebd1afdc8776866278aca8514dcf2483223 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 05:13:29 +0000 Subject: [PATCH 075/110] chore(deps): update eclipse-temurin:25.0.2_10-jre docker digest to ad53b91 (#1857) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | digest | `f47c82c` โ†’ `ad53b91` | | eclipse-temurin | | digest | `f47c82c` โ†’ `ad53b91` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-custom-buckets/docker-compose.yaml | 2 +- .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile | 2 +- .../example-exporter-opentelemetry/oats-tests/http/Dockerfile | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml index 63ff76f6b..a6f569ce7 100644 --- a/examples/example-custom-buckets/docker-compose.yaml +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f + image: eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 network_mode: host volumes: - ./target/example-custom-buckets.jar:/example-custom-buckets.jar diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile index 49f971ee6..faaeb5bb4 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f +FROM eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 COPY target/example-exporter-opentelemetry.jar ./app.jar # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile index e2c173239..e89edd29c 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f +FROM eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 COPY target/example-exporter-opentelemetry.jar ./app.jar diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index e399212a7..337db6acc 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.2_10-jre@sha256:f47c82ca0abea08c1c92affd40d2e07976fae85836050e9e4a5702055d5c0e3f + image: eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 network_mode: host volumes: - ./target/example-native-histogram.jar:/example-native-histogram.jar From db7bc714db240b9e973a8cbd6c31fa0dcd1b9aab Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 20:54:17 +0000 Subject: [PATCH 076/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.155.3 (#1858) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.155.2` โ†’ `v0.155.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.155.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.155.2/v0.155.3?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
    gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.155.3`](https://redirect.github.com/gohugoio/hugo/releases/tag/v0.155.3) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.155.2...v0.155.3) ##### What's Changed - hugolib: Don't render default site redirect for non-primary isHTML output formats [`6ac7d08`](https://redirect.github.com/gohugoio/hugo/commit/6ac7d081) [@​bep](https://redirect.github.com/bep) [#​14482](https://redirect.github.com/gohugoio/hugo/issues/14482) - server: Fix stuck server global error logging [`24eb84f`](https://redirect.github.com/gohugoio/hugo/commit/24eb84f8) [@​bep](https://redirect.github.com/bep) [#​14469](https://redirect.github.com/gohugoio/hugo/issues/14469) - build(deps): bump github.com/evanw/esbuild from 0.27.2 to 0.27.3 [`95a3678`](https://redirect.github.com/gohugoio/hugo/commit/95a36782) [@​dependabot](https://redirect.github.com/dependabot)\[bot] - server: Fix panic when the server browser error handler tried to use a config in a state of flux [`9045797`](https://redirect.github.com/gohugoio/hugo/commit/9045797d) [@​bep](https://redirect.github.com/bep) [#​14470](https://redirect.github.com/gohugoio/hugo/issues/14470)
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index 037bc5ea3..8ea1d673e 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.155.2" +"go:github.com/gohugoio/hugo" = "v0.155.3" "go:github.com/grafana/oats" = "0.6.0" java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" From 4129f408ec471e5e531e37c8fb6048ef2f9134af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 02:23:38 +0000 Subject: [PATCH 077/110] chore(deps): update dependency org.apache.maven.plugins:maven-dependency-plugin to v3.10.0 (#1859) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.maven.plugins:maven-dependency-plugin](https://maven.apache.org/plugins/) ([source](https://redirect.github.com/apache/maven-dependency-plugin)) | `3.9.0` โ†’ `3.10.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.maven.plugins:maven-dependency-plugin/3.10.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.maven.plugins:maven-dependency-plugin/3.9.0/3.10.0?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 82aa11862..6f9de1657 100644 --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ maven-dependency-plugin - 3.9.0 + 3.10.0 maven-javadoc-plugin From 8adc88fb6faca1cf1043c63096e6464fefb1aa98 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 9 Feb 2026 18:44:06 +0100 Subject: [PATCH 078/110] fix(renovate): enable updates for opentelemetry-instrumentation-bom-alpha (#1860) The opentelemetry-instrumentation-bom-alpha dependency was not being updated by Renovate despite newer versions being available (currently on 2.16.0-alpha, but 2.24.0-alpha is available). Root cause: Renovate was detecting the dependency but not creating PRs due to the default ignoreUnstable behavior in the recommended preset. Since this package only publishes alpha versions, we need to explicitly allow unstable version updates. Solution: Added a packageRule with ignoreUnstable: false for this specific package to ensure Renovate will create PRs for newer alpha versions. --------- Signed-off-by: Gregor Zeitlinger --- .github/renovate.json5 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index bcf6643d1..8ded8e186 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -23,6 +23,10 @@ groupName: "java graalvm", additionalBranchPrefix: "graalvm-", }, + { + matchPackageNames: ["io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha"], + ignoreUnstable: false, + }, ], customManagers: [ { From 04bc727fcb2b9ba4da8eb7268c562f5385f5eda4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 17:53:18 +0000 Subject: [PATCH 079/110] fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.24.0-alpha (#1863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha](https://redirect.github.com/open-telemetry/opentelemetry-java-instrumentation) | `2.16.0-alpha` โ†’ `2.24.0-alpha` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha/2.24.0-alpha?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha/2.16.0-alpha/2.24.0-alpha?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6f9de1657..30ebd46bc 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 4.33.5 33.5.0-jre 6.0.2 - 2.16.0-alpha + 2.24.0-alpha 8 25 0.70 From e7996b157fe2b4e67746874337893dd5a77e319d Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 10 Feb 2026 07:35:50 +0100 Subject: [PATCH 080/110] ignore internal poms (#1862) Signed-off-by: Gregor Zeitlinger --- .github/renovate.json5 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 8ded8e186..f3bad3c6f 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -27,6 +27,11 @@ matchPackageNames: ["io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha"], ignoreUnstable: false, }, + { + enabled: false, + description: "Ignore internal project modules", + matchPackageNames: ["/^io\\.prometheus:(examples|example-.+|integration-tests|it-.+)$/"], + }, ], customManagers: [ { From 93b352ff420ca367b69f81b8b2a2a588e6bbb836 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 10:09:15 +0000 Subject: [PATCH 081/110] chore(deps): update grafana/k6 docker digest to 1d0ddce (#1864) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | grafana/k6 | digest | `a7c79af` โ†’ `1d0ddce` | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index be1257799..c45e029ac 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -68,7 +68,7 @@ services: - ./config/grafana-dashboards.yaml:/etc/grafana/provisioning/dashboards/grafana-dashboards.yaml - ./config/grafana-example-dashboard.json:/etc/grafana/example-dashboard.json k6: - image: grafana/k6@sha256:a7c79af2b374c9a3afa8b0fae9ec2899277d066612029b7b0fcd2fcb724ba86f + image: grafana/k6@sha256:1d0ddceb1550725105e39d246a383a247b8607372ed63d2046cf9d6976487a85 network_mode: host volumes: - ./config/k6-script.js:/k6-script.js From e93cc0fe1e3887124cf774acb78f5729ab7455a3 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Tue, 10 Feb 2026 11:05:27 -0500 Subject: [PATCH 082/110] Remove help text validation (#1866) Resolves #1712 Signed-off-by: Jay DeLuca --- .../prometheus/metrics/expositionformats/TextFormatUtil.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java index 2891d544c..5f5f05e8b 100644 --- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java +++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/TextFormatUtil.java @@ -241,11 +241,6 @@ private static MetricSnapshot mergeSnapshots(List snapshots) { first.getMetadata().getPrometheusName(), snapshot.getMetadata().getPrometheusName())) { throw new IllegalArgumentException("Cannot merge snapshots: inconsistent metric name"); } - if (!Objects.equals(first.getMetadata().getHelp(), snapshot.getMetadata().getHelp())) { - throw new IllegalArgumentException( - "Cannot merge snapshots: conflicting help for metric " - + first.getMetadata().getPrometheusName()); - } if (!Objects.equals(first.getMetadata().getUnit(), snapshot.getMetadata().getUnit())) { throw new IllegalArgumentException( "Cannot merge snapshots: conflicting unit for metric " From 09bbeee1225edb7d7e4acb6c4525c9c53fb2e613 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Feb 2026 02:00:59 +0000 Subject: [PATCH 083/110] chore(deps): update eclipse-temurin:25.0.2_10-jre docker digest to 43a7b50 (#1867) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | digest | `ad53b91` โ†’ `43a7b50` | | eclipse-temurin | | digest | `ad53b91` โ†’ `43a7b50` | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-custom-buckets/docker-compose.yaml | 2 +- .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile | 2 +- .../example-exporter-opentelemetry/oats-tests/http/Dockerfile | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml index a6f569ce7..d4c08a614 100644 --- a/examples/example-custom-buckets/docker-compose.yaml +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 + image: eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b network_mode: host volumes: - ./target/example-custom-buckets.jar:/example-custom-buckets.jar diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile index faaeb5bb4..cc1158e12 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 +FROM eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b COPY target/example-exporter-opentelemetry.jar ./app.jar # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile index e89edd29c..0c7d64e55 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 +FROM eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b COPY target/example-exporter-opentelemetry.jar ./app.jar diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index 337db6acc..8dd081023 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.2_10-jre@sha256:ad53b918fedaefd44135a226c5ecaa4828a3d72db2f6d520da96a62979a63ac6 + image: eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b network_mode: host volumes: - ./target/example-native-histogram.jar:/example-native-histogram.jar From 64c521b9f8b60c3346a482f33304eb97f5726e6b Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 12 Feb 2026 08:17:21 +0100 Subject: [PATCH 084/110] Add docs and example for OTel JVM runtime metrics (#1861) Alternative for https://github.com/prometheus/client_java/pull/1854 ## Summary - Add documentation for using OpenTelemetry's runtime-telemetry module as an alternative to prometheus-metrics-instrumentation-jvm for JVM metrics following OTel semantic conventions - Add a runnable example project (examples/example-otel-jvm-runtime-metrics) demonstrating combined Prometheus + OTel runtime metrics on a single /metrics endpoint - Document RuntimeMetricsBuilder configuration options (captureGcCause(), emitExperimentalTelemetry()) - Cover standalone setup, combined setup with PrometheusMetricReader, Java 17 JFR support, and OTel-to-Prometheus metric name mapping ## Test plan - mise run build passes - mise run lint:super-linter passes - Manual: java -jar examples/example-otel-jvm-runtime-metrics/target/example-otel-jvm-runtime-metrics.jar then curl localhost:9400/metrics shows both uptime_seconds_total and jvm_* metrics --------- Signed-off-by: Gregor Zeitlinger --- .github/workflows/lint-rest.yml | 18 +- docs/content/instrumentation/jvm.md | 10 + docs/content/otel/jvm-runtime-metrics.md | 238 ++++++++++++++++++ .../README.md | 41 +++ .../example-otel-jvm-runtime-metrics/pom.xml | 82 ++++++ .../examples/otelruntimemetrics/Main.java | 76 ++++++ examples/pom.xml | 1 + 7 files changed, 459 insertions(+), 7 deletions(-) create mode 100644 docs/content/otel/jvm-runtime-metrics.md create mode 100644 examples/example-otel-jvm-runtime-metrics/README.md create mode 100644 examples/example-otel-jvm-runtime-metrics/pom.xml create mode 100644 examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml index 89acf1dad..b30c81443 100644 --- a/.github/workflows/lint-rest.yml +++ b/.github/workflows/lint-rest.yml @@ -3,15 +3,13 @@ name: Lint What Super Linter Can't on: pull_request: - push: - branches: - - main -permissions: - contents: read +permissions: {} jobs: lint: + permissions: + contents: read runs-on: ubuntu-24.04 steps: - name: Check out @@ -21,10 +19,16 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 + - name: Remap main branch URLs to PR branch for link checking + env: + GITHUB_HEAD_REF: ${{ github.head_ref }} + PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }} + run: | + sed -i "/^remap = \[$/a\ \"https://github.com/prometheus/client_java/blob/main/(.*) https://github.com/${PR_HEAD_REPO}/blob/${GITHUB_HEAD_REF}/\$1\"," .github/config/lychee.toml + sed -i "/^remap = \[$/a\ \"https://github.com/prometheus/client_java/tree/main/(.*) https://github.com/${PR_HEAD_REPO}/tree/${GITHUB_HEAD_REF}/\$1\"," .github/config/lychee.toml + - name: Lint for pull requests - if: github.event_name == 'pull_request' env: GITHUB_TOKEN: ${{ github.token }} - GITHUB_BASE_REF: ${{ github.base_ref }} GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }} run: mise run lint:rest-ci diff --git a/docs/content/instrumentation/jvm.md b/docs/content/instrumentation/jvm.md index 804c1b09b..a9a15341f 100644 --- a/docs/content/instrumentation/jvm.md +++ b/docs/content/instrumentation/jvm.md @@ -3,6 +3,16 @@ title: JVM weight: 1 --- +{{< hint type=note >}} + +Looking for JVM metrics that follow OTel semantic +conventions? See +[OTel JVM Runtime Metrics]({{< relref "../otel/jvm-runtime-metrics.md" >}}) +for an alternative based on OpenTelemetry's +runtime-telemetry module. + +{{< /hint >}} + The JVM instrumentation module provides a variety of out-of-the-box JVM and process metrics. To use it, add the following dependency: diff --git a/docs/content/otel/jvm-runtime-metrics.md b/docs/content/otel/jvm-runtime-metrics.md new file mode 100644 index 000000000..9015f7772 --- /dev/null +++ b/docs/content/otel/jvm-runtime-metrics.md @@ -0,0 +1,238 @@ +--- +title: JVM Runtime Metrics +weight: 4 +--- + +OpenTelemetry's +[runtime-telemetry](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry) +module is an alternative to +[prometheus-metrics-instrumentation-jvm]({{< relref "../instrumentation/jvm.md" >}}) +for users who want JVM metrics following OTel semantic conventions. + +Key advantages: + +- Metric names follow + [OTel semantic conventions](https://opentelemetry.io/docs/specs/semconv/runtime/jvm-metrics/) +- Java 17+ JFR support (context switches, network I/O, + lock contention, memory allocation) +- Alignment with the broader OTel ecosystem + +Since OpenTelemetry's `opentelemetry-exporter-prometheus` +already depends on this library's `PrometheusRegistry`, +no additional code is needed in this library โ€” only the +OTel SDK wiring shown below. + +## Dependencies + +{{< tabs "jvm-runtime-deps" >}} +{{< tab "Gradle" >}} + +```groovy +implementation 'io.opentelemetry:opentelemetry-sdk' +implementation 'io.opentelemetry:opentelemetry-exporter-prometheus' + +// Pick ONE of the following: +// Java 8+: +implementation 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8' +// Java 17+ (adds JFR-based metrics): +// implementation 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java17' +``` + +{{< /tab >}} +{{< tab "Maven" >}} + +```xml + + io.opentelemetry + opentelemetry-sdk + + + io.opentelemetry + opentelemetry-exporter-prometheus + + + + + + io.opentelemetry.instrumentation + opentelemetry-runtime-telemetry-java8 + + + +``` + +{{< /tab >}} +{{< /tabs >}} + +## Standalone Setup + +If you **only** want OTel runtime metrics exposed as +Prometheus, without any Prometheus Java client metrics: + +```java +import io.opentelemetry.exporter.prometheus.PrometheusHttpServer; +import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.metrics.SdkMeterProvider; + +PrometheusHttpServer prometheusServer = + PrometheusHttpServer.builder() + .setPort(9464) + .build(); + +OpenTelemetrySdk openTelemetry = + OpenTelemetrySdk.builder() + .setMeterProvider( + SdkMeterProvider.builder() + .registerMetricReader(prometheusServer) + .build()) + .build(); + +RuntimeMetrics runtimeMetrics = + RuntimeMetrics.builder(openTelemetry).build(); + +// Close on shutdown to stop metric collection and server +Runtime.getRuntime().addShutdownHook(new Thread(() -> { + runtimeMetrics.close(); + prometheusServer.close(); +})); + +// Scrape at http://localhost:9464/metrics +``` + +## Combined with Prometheus Java Client Metrics + +If you already have Prometheus Java client metrics and want to +add OTel runtime metrics to the **same** `/metrics` +endpoint, use `PrometheusMetricReader` to bridge OTel +metrics into a `PrometheusRegistry`: + +```java +import io.prometheus.metrics.core.metrics.Counter; +import io.prometheus.metrics.exporter.httpserver.HTTPServer; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.opentelemetry.exporter.prometheus.PrometheusMetricReader; +import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.metrics.SdkMeterProvider; + +PrometheusRegistry registry = + new PrometheusRegistry(); + +// Register Prometheus metrics as usual +Counter myCounter = Counter.builder() + .name("my_requests_total") + .register(registry); + +// Bridge OTel metrics into the same registry +PrometheusMetricReader reader = + PrometheusMetricReader.create(); +registry.register(reader); + +OpenTelemetrySdk openTelemetry = + OpenTelemetrySdk.builder() + .setMeterProvider( + SdkMeterProvider.builder() + .registerMetricReader(reader) + .build()) + .build(); + +RuntimeMetrics runtimeMetrics = + RuntimeMetrics.builder(openTelemetry).build(); +Runtime.getRuntime() + .addShutdownHook(new Thread(runtimeMetrics::close)); + +// Expose everything on one endpoint +HTTPServer.builder() + .port(9400) + .registry(registry) + .buildAndStart(); +``` + +The [examples/example-otel-jvm-runtime-metrics](https://github.com/prometheus/client_java/tree/main/examples/example-otel-jvm-runtime-metrics) +directory has a complete runnable example. + +## Configuration + +The `RuntimeMetricsBuilder` supports two configuration +options: + +### `captureGcCause()` + +Adds a `jvm.gc.cause` attribute to the `jvm.gc.duration` +metric, indicating why the garbage collection occurred +(e.g. `G1 Evacuation Pause`, `System.gc()`): + +```java +RuntimeMetrics.builder(openTelemetry) + .captureGcCause() + .build(); +``` + +### `emitExperimentalTelemetry()` + +Enables additional experimental metrics beyond the stable +set. These are not yet part of the OTel semantic conventions +and may change in future releases: + +- Buffer pool metrics (direct and mapped byte buffers) +- Extended CPU metrics +- Extended memory pool metrics +- File descriptor metrics + +```java +RuntimeMetrics.builder(openTelemetry) + .emitExperimentalTelemetry() + .build(); +``` + +Both options can be combined: + +```java +RuntimeMetrics.builder(openTelemetry) + .captureGcCause() + .emitExperimentalTelemetry() + .build(); +``` + +Selective per-metric registration is not supported by the +runtime-telemetry API โ€” it is all-or-nothing with these +two toggles. + +## Java 17 JFR Support + +The `opentelemetry-runtime-telemetry-java17` variant adds +JFR-based metrics. You can selectively enable features: + +```java +import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature; +import io.opentelemetry.instrumentation.runtimemetrics.java17.RuntimeMetrics; + +RuntimeMetrics.builder(openTelemetry) + .enableFeature(JfrFeature.BUFFER_METRICS) + .enableFeature(JfrFeature.NETWORK_IO_METRICS) + .enableFeature(JfrFeature.LOCK_METRICS) + .enableFeature(JfrFeature.CONTEXT_SWITCH_METRICS) + .build(); +``` + +## Metric Names + +OTel metric names are converted to Prometheus format by +the exporter. Examples: + +| OTel name | Prometheus name | +| ---------------------------- | ---------------------------------- | +| `jvm.memory.used` | `jvm_memory_used_bytes` | +| `jvm.gc.duration` | `jvm_gc_duration_seconds` | +| `jvm.thread.count` | `jvm_thread_count` | +| `jvm.class.loaded` | `jvm_class_loaded` | +| `jvm.cpu.recent_utilization` | `jvm_cpu_recent_utilization_ratio` | + +See [Names]({{< relref "names.md" >}}) for full details on +how OTel names map to Prometheus names. diff --git a/examples/example-otel-jvm-runtime-metrics/README.md b/examples/example-otel-jvm-runtime-metrics/README.md new file mode 100644 index 000000000..a58584694 --- /dev/null +++ b/examples/example-otel-jvm-runtime-metrics/README.md @@ -0,0 +1,41 @@ +# OTel JVM Runtime Metrics with Prometheus HTTPServer + +## Build + +This example is built as part of the `client_java` project. + +```shell +./mvnw package +``` + +## Run + +The build creates a JAR file with the example application in +`./examples/example-otel-jvm-runtime-metrics/target/`. + +```shell +java -jar ./examples/example-otel-jvm-runtime-metrics/target/example-otel-jvm-runtime-metrics.jar +``` + +## Manually Testing the Metrics Endpoint + +Accessing +[http://localhost:9400/metrics](http://localhost:9400/metrics) +with a Web browser should yield both a Prometheus counter metric +and OTel JVM runtime metrics on the same endpoint. + +Prometheus counter: + +```text +# HELP uptime_seconds_total total number of seconds since this application was started +# TYPE uptime_seconds_total counter +uptime_seconds_total 42.0 +``` + +OTel JVM runtime metrics (excerpt): + +```text +# HELP jvm_memory_used_bytes Measure of memory used. +# TYPE jvm_memory_used_bytes gauge +jvm_memory_used_bytes{jvm_memory_pool_name="G1 Eden Space",jvm_memory_type="heap"} 4194304.0 +``` diff --git a/examples/example-otel-jvm-runtime-metrics/pom.xml b/examples/example-otel-jvm-runtime-metrics/pom.xml new file mode 100644 index 000000000..276a58f2f --- /dev/null +++ b/examples/example-otel-jvm-runtime-metrics/pom.xml @@ -0,0 +1,82 @@ + + + 4.0.0 + + + io.prometheus + examples + 1.5.0-SNAPSHOT + + + example-otel-jvm-runtime-metrics + + Example - OTel JVM Runtime Metrics + + Example of combining Prometheus metrics with OpenTelemetry JVM runtime metrics on one endpoint + + + + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-bom-alpha + ${otel.instrumentation.version} + pom + import + + + + + + + io.prometheus + prometheus-metrics-core + ${project.version} + + + io.prometheus + prometheus-metrics-exporter-httpserver + ${project.version} + + + io.opentelemetry + opentelemetry-sdk + + + io.opentelemetry + opentelemetry-exporter-prometheus + + + io.opentelemetry.instrumentation + opentelemetry-runtime-telemetry-java8 + + + + + ${project.artifactId} + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + + + io.prometheus.metrics.examples.otelruntimemetrics.Main + + + + + + + + + diff --git a/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java b/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java new file mode 100644 index 000000000..49a608651 --- /dev/null +++ b/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java @@ -0,0 +1,76 @@ +package io.prometheus.metrics.examples.otelruntimemetrics; + +import io.opentelemetry.exporter.prometheus.PrometheusMetricReader; +import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.metrics.SdkMeterProvider; +import io.prometheus.metrics.core.metrics.Counter; +import io.prometheus.metrics.exporter.httpserver.HTTPServer; +import io.prometheus.metrics.model.registry.PrometheusRegistry; +import io.prometheus.metrics.model.snapshots.Unit; +import java.io.IOException; + +/** + * Example combining Prometheus metrics with OpenTelemetry JVM runtime metrics on a single endpoint. + * + *

    This demonstrates: + * + *

      + *
    • Registering a Prometheus counter metric + *
    • Bridging OTel runtime metrics into the same PrometheusRegistry + *
    • Exposing everything via the built-in HTTPServer on /metrics + *
    + */ +public class Main { + + public static void main(String[] args) throws IOException, InterruptedException { + + PrometheusRegistry registry = new PrometheusRegistry(); + + // 1. Register a Prometheus counter metric + Counter counter = + Counter.builder() + .name("uptime_seconds_total") + .help("total number of seconds since this application was started") + .unit(Unit.SECONDS) + .register(registry); + + // 2. Create a PrometheusMetricReader and register it with the same registry. + // This bridges OTel metrics into the Prometheus registry. + PrometheusMetricReader reader = PrometheusMetricReader.create(); + registry.register(reader); + + // 3. Build the OTel SDK with the reader. + OpenTelemetrySdk openTelemetry = + OpenTelemetrySdk.builder() + .setMeterProvider(SdkMeterProvider.builder().registerMetricReader(reader).build()) + .build(); + + // 4. Start OTel JVM runtime metrics collection. + // - captureGcCause() adds a jvm.gc.cause attribute to jvm.gc.duration + // - emitExperimentalTelemetry() enables buffer pools, extended CPU, + // extended memory pools, and file descriptor metrics + RuntimeMetrics runtimeMetrics = + RuntimeMetrics.builder(openTelemetry).captureGcCause().emitExperimentalTelemetry().build(); + + // 5. Expose both Prometheus and OTel metrics on a single endpoint. + HTTPServer server = HTTPServer.builder().port(9400).registry(registry).buildAndStart(); + + // 6. Close RuntimeMetrics and server on shutdown to stop JMX metric collection. + Runtime.getRuntime() + .addShutdownHook( + new Thread( + () -> { + runtimeMetrics.close(); + server.close(); + })); + + System.out.println( + "HTTPServer listening on port http://localhost:" + server.getPort() + "/metrics"); + + while (true) { + Thread.sleep(1000); + counter.inc(); + } + } +} diff --git a/examples/pom.xml b/examples/pom.xml index d0c364067..1b0059655 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -32,6 +32,7 @@ example-native-histogram example-custom-buckets example-prometheus-properties + example-otel-jvm-runtime-metrics From dd26eac74d370564c954fec9d5116ad36c177c11 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 18:58:59 +0000 Subject: [PATCH 085/110] chore(deps): update module go:github.com/grafana/oats to v0.6.1 (#1869) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/grafana/oats](https://redirect.github.com/grafana/oats) | `0.6.0` โ†’ `0.6.1` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgrafana%2foats/v0.6.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgrafana%2foats/v0.6.0/v0.6.1?slim=true) | --- ### Release Notes
    grafana/oats (go:github.com/grafana/oats) ### [`v0.6.1`](https://redirect.github.com/grafana/oats/releases/tag/v0.6.1) [Compare Source](https://redirect.github.com/grafana/oats/compare/v0.6.0...v0.6.1) #### What's Changed - add warning by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​197](https://redirect.github.com/grafana/oats/pull/197) - Update CODEOWNERS by [@​martincostello](https://redirect.github.com/martincostello) in [#​219](https://redirect.github.com/grafana/oats/pull/219) - Allow docker-compose files to override the LGTM service by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​223](https://redirect.github.com/grafana/oats/pull/223) **Full Changelog**:
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index 8ea1d673e..222a3a5fb 100644 --- a/mise.toml +++ b/mise.toml @@ -1,6 +1,6 @@ [tools] "go:github.com/gohugoio/hugo" = "v0.155.3" -"go:github.com/grafana/oats" = "0.6.0" +"go:github.com/grafana/oats" = "0.6.1" java = "temurin-25.0.2+10.0.LTS" lychee = "0.22.0" protoc = "33.5" From d50be827046c0547e0e534569480bf349e0c3376 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 23:56:58 +0000 Subject: [PATCH 086/110] chore(deps): update grafana/grafana docker tag to v12.3.3 (#1870) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [grafana/grafana](https://redirect.github.com/grafana/grafana) | patch | `12.3.2` โ†’ `12.3.3` | --- ### Release Notes
    grafana/grafana (grafana/grafana) ### [`v12.3.3`](https://redirect.github.com/grafana/grafana/compare/v12.3.2...v12.3.3) [Compare Source](https://redirect.github.com/grafana/grafana/compare/v12.3.2...v12.3.3)
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-custom-buckets/docker-compose.yaml | 2 +- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml index d4c08a614..2afcf5b98 100644 --- a/examples/example-custom-buckets/docker-compose.yaml +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -18,7 +18,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yml grafana: - image: grafana/grafana:12.3.2@sha256:ba93c9d192e58b23e064c7f501d453426ccf4a85065bf25b705ab1e98602bfb1 + image: grafana/grafana:12.3.3@sha256:9e1e77ade304069aee3196e9a4f210830e96e80ce9a2640891eccc324b152faf network_mode: host volumes: - ./docker-compose/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index c45e029ac..6c20e3999 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -59,7 +59,7 @@ services: command: - --config.file=/config.yaml grafana: - image: grafana/grafana:12.3.2@sha256:ba93c9d192e58b23e064c7f501d453426ccf4a85065bf25b705ab1e98602bfb1 + image: grafana/grafana:12.3.3@sha256:9e1e77ade304069aee3196e9a4f210830e96e80ce9a2640891eccc324b152faf network_mode: host ports: - "3000:3000" diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index 8dd081023..b2f849844 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -18,7 +18,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yml grafana: - image: grafana/grafana:12.3.2@sha256:ba93c9d192e58b23e064c7f501d453426ccf4a85065bf25b705ab1e98602bfb1 + image: grafana/grafana:12.3.3@sha256:9e1e77ade304069aee3196e9a4f210830e96e80ce9a2640891eccc324b152faf network_mode: host volumes: - ./docker-compose/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml From 7e472c7c9c9b4b49339cc95162b67c1b10cb3ba7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 01:59:22 +0000 Subject: [PATCH 087/110] fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.25.0-alpha (#1871) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha](https://redirect.github.com/open-telemetry/opentelemetry-java-instrumentation) | `2.24.0-alpha` โ†’ `2.25.0-alpha` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha/2.25.0-alpha?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha/2.24.0-alpha/2.25.0-alpha?slim=true) | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 30ebd46bc..c789a4b41 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 4.33.5 33.5.0-jre 6.0.2 - 2.24.0-alpha + 2.25.0-alpha 8 25 0.70 From 35381750488ad1e3348e6ed0a88379dd47384810 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 13 Feb 2026 13:53:17 +0100 Subject: [PATCH 088/110] Add OTel support module and make examples standalone (#1868) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inspired by https://github.com/prometheus/client_java/pull/1854#issuecomment-3885982843 ## Summary - Add `prometheus-metrics-otel-support` POM module that bundles the OTel SDK and Prometheus exporter as a single dependency, with the OTel instrumentation BOM imported for automatic version management - Add `prometheus-metrics-otel-support` to the BOM so users can manage it via `dependencyManagement` - Make all example projects standalone (no parent POM) โ€” each example has its own `groupId`, `version`, and imports `prometheus-metrics-bom` directly, so users can copy-paste an example and build it without the parent chain - Add docs page for the OTel Support module (`docs/content/otel/support.md`) - Replace hardcoded `1.5.0` versions in OTel docs with `$version` placeholder and update `set-release-version-github-pages.sh` to process all markdown files under `docs/content` ## Test plan - [ ] `mise run build` passes - [ ] `mise run lint:super-linter` passes - [ ] `mise run test` passes - [ ] Verify `set-release-version-github-pages.sh` replaces `$version` in both `quickstart.md` and OTel docs --------- Signed-off-by: Gregor Zeitlinger --- .../tasks/set-release-version-github-pages.sh | 9 ++-- CLAUDE.md | 6 +++ docs/content/otel/jvm-runtime-metrics.md | 31 ++++++----- docs/content/otel/support.md | 47 +++++++++++++++++ examples/example-custom-buckets/pom.xml | 28 ++++++---- .../example-greeting-service/pom.xml | 30 ++++++----- .../example-hello-world-app/pom.xml | 30 ++++++----- .../example-exemplars-tail-sampling/pom.xml | 12 +---- examples/example-exporter-httpserver/pom.xml | 28 ++++++---- .../example-exporter-multi-target/pom.xml | 28 ++++++---- .../example-exporter-opentelemetry/pom.xml | 28 ++++++---- .../example-exporter-servlet-tomcat/pom.xml | 30 ++++++----- examples/example-native-histogram/pom.xml | 28 ++++++---- .../example-otel-jvm-runtime-metrics/pom.xml | 33 ++++++------ .../example-prometheus-properties/pom.xml | 28 ++++++---- examples/example-simpleclient-bridge/pom.xml | 27 +++++++--- pom.xml | 1 + prometheus-metrics-bom/pom.xml | 6 +++ prometheus-metrics-otel-support/pom.xml | 52 +++++++++++++++++++ 19 files changed, 342 insertions(+), 140 deletions(-) create mode 100644 docs/content/otel/support.md create mode 100644 prometheus-metrics-otel-support/pom.xml diff --git a/.mise/tasks/set-release-version-github-pages.sh b/.mise/tasks/set-release-version-github-pages.sh index 142d0eb82..2016373c8 100755 --- a/.mise/tasks/set-release-version-github-pages.sh +++ b/.mise/tasks/set-release-version-github-pages.sh @@ -1,9 +1,12 @@ #!/usr/bin/env bash -#MISE description="Set release version in GitHub Pages quickstart.md" +#MISE description="Set release version in all GitHub Pages docs" set -euox pipefail version=$(git tag -l | grep 'v' | sort | tail -1 | sed 's/v//') -marker="\$version" -sed -i "s/$marker/$version/g" docs/content/getting-started/quickstart.md +otelVersion=$(grep -oP '\K[^<]+' pom.xml | sed 's/-alpha$//') + +find ./docs/content -name '*.md' \ + -exec sed -i "s/\$version/$version/g" {} + \ + -exec sed -i "s/\$otelVersion/$otelVersion/g" {} + diff --git a/CLAUDE.md b/CLAUDE.md index 9c1c60571..406194944 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -119,6 +119,12 @@ mise run lint:super-linter - Integration tests are in `integration-tests/` and run during `verify` phase - Acceptance tests use OATs framework: `mise run acceptance-test` +## Documentation + +- Docs live under `docs/content/` and use `$version` as a placeholder for the library version +- When publishing GitHub Pages, `mise run set-release-version-github-pages` replaces `$version` with the latest git tag across all `docs/content/**/*.md` files (the published site is not versioned) +- Use `$version` for the Prometheus client version and `$otelVersion-alpha` for the OTel instrumentation version โ€” never hardcode them + ## Java Version Source compatibility: Java 8. Tests run on Java 25 (configured in `mise.toml`). diff --git a/docs/content/otel/jvm-runtime-metrics.md b/docs/content/otel/jvm-runtime-metrics.md index 9015f7772..d61da1861 100644 --- a/docs/content/otel/jvm-runtime-metrics.md +++ b/docs/content/otel/jvm-runtime-metrics.md @@ -24,18 +24,21 @@ OTel SDK wiring shown below. ## Dependencies +Use the [OTel Support]({{< relref "support.md" >}}) module +to pull in the OTel SDK and Prometheus exporter, then add +the runtime-telemetry instrumentation: + {{< tabs "jvm-runtime-deps" >}} {{< tab "Gradle" >}} ```groovy -implementation 'io.opentelemetry:opentelemetry-sdk' -implementation 'io.opentelemetry:opentelemetry-exporter-prometheus' - -// Pick ONE of the following: -// Java 8+: -implementation 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8' -// Java 17+ (adds JFR-based metrics): -// implementation 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java17' +implementation 'io.prometheus:prometheus-metrics-otel-support:$version' + +// Use opentelemetry-runtime-telemetry-java8 (Java 8+) +// or opentelemetry-runtime-telemetry-java17 (Java 17+, JFR-based) +implementation( + 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:$otelVersion-alpha' +) ``` {{< /tab >}} @@ -43,12 +46,10 @@ implementation 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry ```xml - io.opentelemetry - opentelemetry-sdk - - - io.opentelemetry - opentelemetry-exporter-prometheus + io.prometheus + prometheus-metrics-otel-support + $version + pom @@ -56,12 +57,14 @@ implementation 'io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry io.opentelemetry.instrumentation opentelemetry-runtime-telemetry-java8 + $otelVersion-alpha ``` diff --git a/docs/content/otel/support.md b/docs/content/otel/support.md new file mode 100644 index 000000000..e3b8cbe3a --- /dev/null +++ b/docs/content/otel/support.md @@ -0,0 +1,47 @@ +--- +title: OTel Support +weight: 2 +--- + +The `prometheus-metrics-otel-support` module bundles the +OpenTelemetry SDK and the Prometheus exporter into a single +POM dependency. + +Use this module when you want to combine OpenTelemetry +instrumentations (e.g. JVM runtime metrics) with the +Prometheus Java client on one `/metrics` endpoint. + +## Dependencies + +{{< tabs "otel-support-deps" >}} +{{< tab "Gradle" >}} + +```groovy +implementation 'io.prometheus:prometheus-metrics-otel-support:$version' +``` + +{{< /tab >}} +{{< tab "Maven" >}} + +```xml + + io.prometheus + prometheus-metrics-otel-support + $version + pom + +``` + +{{< /tab >}} +{{< /tabs >}} + +This single dependency replaces: + +- `io.opentelemetry:opentelemetry-sdk` +- `io.opentelemetry:opentelemetry-exporter-prometheus` + +## Use Cases + +See [JVM Runtime Metrics]({{< relref "jvm-runtime-metrics.md" >}}) +for a concrete example of combining OTel JVM metrics with +the Prometheus Java client. diff --git a/examples/example-custom-buckets/pom.xml b/examples/example-custom-buckets/pom.xml index b7e104e5a..52ae60627 100644 --- a/examples/example-custom-buckets/pom.xml +++ b/examples/example-custom-buckets/pom.xml @@ -3,34 +3,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-custom-buckets + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - Custom Buckets End-to-End example of Native Histograms with Custom Buckets (NHCB): Java app -> Prometheus -> Grafana + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} diff --git a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml index b2e1006a4..532b7290b 100644 --- a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml @@ -4,13 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - example-exemplars-tail-sampling - 1.5.0-SNAPSHOT - - + io.prometheus example-greeting-service + 1.0-SNAPSHOT + + + 17 + UTF-8 + Example - OpenTelemetry Exemplars - Greeting Service @@ -18,25 +19,30 @@ tracing - - 25 - + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-servlet-jakarta - ${project.version} org.apache.tomcat.embed diff --git a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml index bccd6cb43..4c1702bbe 100644 --- a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml @@ -4,13 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - example-exemplars-tail-sampling - 1.5.0-SNAPSHOT - - + io.prometheus example-hello-world-app + 1.0-SNAPSHOT + + + 17 + UTF-8 + Example - OpenTelemetry Exemplars - Hello World App @@ -18,25 +19,30 @@ tracing - - 25 - + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-servlet-jakarta - ${project.version} org.apache.tomcat.embed diff --git a/examples/example-exemplars-tail-sampling/pom.xml b/examples/example-exemplars-tail-sampling/pom.xml index 49b168955..ac4c6ccf5 100644 --- a/examples/example-exemplars-tail-sampling/pom.xml +++ b/examples/example-exemplars-tail-sampling/pom.xml @@ -4,13 +4,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-exemplars-tail-sampling + 1.0-SNAPSHOT pom Example - Exemplars with OpenTelemetry's Tail Sampling @@ -18,10 +14,6 @@ Example project showing Exemplars with OpenTelemetry's Tail Sampling. - - 11 - - example-greeting-service example-hello-world-app diff --git a/examples/example-exporter-httpserver/pom.xml b/examples/example-exporter-httpserver/pom.xml index f9ee206f0..ac9ed5e10 100644 --- a/examples/example-exporter-httpserver/pom.xml +++ b/examples/example-exporter-httpserver/pom.xml @@ -4,34 +4,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-exporter-httpserver + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - HTTPServer Exporter Prometheus Metrics Example using the HTTPServer for exposing the metrics endpoint + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} diff --git a/examples/example-exporter-multi-target/pom.xml b/examples/example-exporter-multi-target/pom.xml index ac13ff2a1..3b736ae36 100644 --- a/examples/example-exporter-multi-target/pom.xml +++ b/examples/example-exporter-multi-target/pom.xml @@ -4,34 +4,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-exporter-multi-target + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - HTTPServer Exporter Multi Target Prometheus Metrics Example for multi-target pattern implementation + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} diff --git a/examples/example-exporter-opentelemetry/pom.xml b/examples/example-exporter-opentelemetry/pom.xml index 8e8fa6891..a94e82ce4 100644 --- a/examples/example-exporter-opentelemetry/pom.xml +++ b/examples/example-exporter-opentelemetry/pom.xml @@ -4,34 +4,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-exporter-opentelemetry + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - OpenTelemetry Metrics Exporter Example of exposing metrics in OpenTelemetry format and pushing them to an OpenTelemetry collector + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-opentelemetry - ${project.version} diff --git a/examples/example-exporter-servlet-tomcat/pom.xml b/examples/example-exporter-servlet-tomcat/pom.xml index 26da0ae97..65b91b5ed 100644 --- a/examples/example-exporter-servlet-tomcat/pom.xml +++ b/examples/example-exporter-servlet-tomcat/pom.xml @@ -3,38 +3,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-exporter-servlet-tomcat + 1.0-SNAPSHOT + + + 17 + UTF-8 + Example - Servlet Exporter with Tomcat Prometheus Metrics Example using Embedded Tomcat and the Exporter Servlet - - 25 - + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-servlet-jakarta - ${project.version} org.apache.tomcat.embed diff --git a/examples/example-native-histogram/pom.xml b/examples/example-native-histogram/pom.xml index 5324ffb91..eedadf6fe 100644 --- a/examples/example-native-histogram/pom.xml +++ b/examples/example-native-histogram/pom.xml @@ -3,34 +3,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-native-histogram + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - Native Histogram End-to-End example of a Native histogram: Java app -> Prometheus -> Grafana + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} diff --git a/examples/example-otel-jvm-runtime-metrics/pom.xml b/examples/example-otel-jvm-runtime-metrics/pom.xml index 276a58f2f..6e7ad8213 100644 --- a/examples/example-otel-jvm-runtime-metrics/pom.xml +++ b/examples/example-otel-jvm-runtime-metrics/pom.xml @@ -4,13 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-otel-jvm-runtime-metrics + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - OTel JVM Runtime Metrics @@ -19,10 +20,17 @@ + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + io.opentelemetry.instrumentation opentelemetry-instrumentation-bom-alpha - ${otel.instrumentation.version} + 2.24.0-alpha pom import @@ -33,20 +41,15 @@ io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} - - - io.opentelemetry - opentelemetry-sdk - io.opentelemetry - opentelemetry-exporter-prometheus + io.prometheus + prometheus-metrics-otel-support + pom io.opentelemetry.instrumentation diff --git a/examples/example-prometheus-properties/pom.xml b/examples/example-prometheus-properties/pom.xml index b02b8fa03..ac0279853 100644 --- a/examples/example-prometheus-properties/pom.xml +++ b/examples/example-prometheus-properties/pom.xml @@ -3,34 +3,44 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-prometheus-properties + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - prometheus.properties Example of runtime configuration with prometheus.properties + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus prometheus-metrics-core - ${project.version} io.prometheus prometheus-metrics-instrumentation-jvm - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} diff --git a/examples/example-simpleclient-bridge/pom.xml b/examples/example-simpleclient-bridge/pom.xml index f6d2c4207..82459eb0c 100644 --- a/examples/example-simpleclient-bridge/pom.xml +++ b/examples/example-simpleclient-bridge/pom.xml @@ -3,19 +3,32 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - io.prometheus - examples - 1.5.0-SNAPSHOT - - + io.prometheus example-simpleclient-bridge + 1.0-SNAPSHOT + + + 8 + UTF-8 + Example - Simpleclient Bridge Prometheus Metrics Example of the Simpleclient Backwards Compatibility module + + + + io.prometheus + prometheus-metrics-bom + 1.5.0-SNAPSHOT + pom + import + + + + io.prometheus @@ -25,12 +38,10 @@ io.prometheus prometheus-metrics-simpleclient-bridge - ${project.version} io.prometheus prometheus-metrics-exporter-httpserver - ${project.version} diff --git a/pom.xml b/pom.xml index c789a4b41..7373a2cdb 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,7 @@ prometheus-metrics-instrumentation-dropwizard prometheus-metrics-instrumentation-guava prometheus-metrics-simpleclient-bridge + prometheus-metrics-otel-support diff --git a/prometheus-metrics-bom/pom.xml b/prometheus-metrics-bom/pom.xml index a13398228..d8e9d7ada 100644 --- a/prometheus-metrics-bom/pom.xml +++ b/prometheus-metrics-bom/pom.xml @@ -119,6 +119,12 @@ prometheus-metrics-model ${project.version} + + io.prometheus + prometheus-metrics-otel-support + ${project.version} + pom + io.prometheus prometheus-metrics-simpleclient-bridge diff --git a/prometheus-metrics-otel-support/pom.xml b/prometheus-metrics-otel-support/pom.xml new file mode 100644 index 000000000..bea2ce649 --- /dev/null +++ b/prometheus-metrics-otel-support/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + + io.prometheus + client_java + 1.5.0-SNAPSHOT + + + prometheus-metrics-otel-support + pom + + Prometheus Metrics OpenTelemetry Support + + Bundles the OpenTelemetry SDK and Prometheus exporter so that users + who want to combine OTel instrumentations with the Prometheus Java + client only need a single dependency. + + + + true + true + true + true + + + + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-bom-alpha + ${otel.instrumentation.version} + pom + import + + + + + + + io.opentelemetry + opentelemetry-sdk + + + io.opentelemetry + opentelemetry-exporter-prometheus + + + From 246c956d3a54efecf12f5ded2098e489d1e73866 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:02:18 +0000 Subject: [PATCH 089/110] fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.25.0-alpha (#1872) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha](https://redirect.github.com/open-telemetry/opentelemetry-java-instrumentation) | `2.24.0-alpha` โ†’ `2.25.0-alpha` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha/2.25.0-alpha?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha/2.24.0-alpha/2.25.0-alpha?slim=true) | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-otel-jvm-runtime-metrics/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/example-otel-jvm-runtime-metrics/pom.xml b/examples/example-otel-jvm-runtime-metrics/pom.xml index 6e7ad8213..17aa53a99 100644 --- a/examples/example-otel-jvm-runtime-metrics/pom.xml +++ b/examples/example-otel-jvm-runtime-metrics/pom.xml @@ -30,7 +30,7 @@ io.opentelemetry.instrumentation opentelemetry-instrumentation-bom-alpha - 2.24.0-alpha + 2.25.0-alpha pom import From 229e2e003bd639f3744566940f503d05e8b9ba18 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 13 Feb 2026 17:35:37 +0100 Subject: [PATCH 090/110] Add stable Metrics class to decouple consumers from protobuf version (#1873) ## Summary - Introduce a stable `Metrics.java` in the version-free `...generated` package that extends the versioned generated class, so consumer code no longer needs import updates on protobuf upgrades. - Update `generate-protobuf.sh` to make the generated class extensible (`final` removed, constructor `protected`) and read the old package from the stable class's `extends` clause. - Update all consumer imports to use the stable package, with `@SuppressWarnings("NonCanonicalType")` for Error Prone compatibility. ## Test plan - [x] `mise run build` passes (all 54 modules) - [x] `mise run test -pl prometheus-metrics-exposition-formats` passes (47 tests) - [x] `mise run lint:super-linter` passes Signed-off-by: Gregor Zeitlinger --- CONTRIBUTING.md | 15 ++++++++++++++- .../generate-protobuf.sh | 6 +++++- .../com_google_protobuf_4_33_5/Metrics.java | 4 ++-- .../expositionformats/generated/Metrics.java | 6 ++++++ .../internal/PrometheusProtobufWriterImpl.java | 3 ++- .../DuplicateNamesProtobufTest.java | 3 ++- .../ProtobufExpositionFormatsTest.java | 3 ++- 7 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 164879f28..922aa5336 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,10 +58,23 @@ mise run compile ## Updating the Protobuf Java Classes +The generated protobuf `Metrics.java` lives in a versioned package +(e.g., `...generated.com_google_protobuf_4_33_5`) that changes with each +protobuf release. A stable extending class at +`...generated/Metrics.java` reexports all types so that consumer code +only imports from the version-free package. On protobuf upgrades only +the `extends` clause in the stable class changes. + In the failing PR from renovate, run: ```shell mise run generate ``` -Add the new `Metrics.java` to Git and commit it. +The script will: + +1. Re-generate the protobuf sources with the new version. +2. Update the versioned package name in all Java files + (including the stable `Metrics.java` extends clause). + +Add the updated files to Git and commit them. diff --git a/prometheus-metrics-exposition-formats/generate-protobuf.sh b/prometheus-metrics-exposition-formats/generate-protobuf.sh index 9bd222241..323cf033c 100755 --- a/prometheus-metrics-exposition-formats/generate-protobuf.sh +++ b/prometheus-metrics-exposition-formats/generate-protobuf.sh @@ -18,7 +18,7 @@ mkdir -p "$TARGET_DIR" rm -rf $PROTO_DIR || true mkdir -p $PROTO_DIR -OLD_PACKAGE=$(sed -nE 's/import (io.prometheus.metrics.expositionformats.generated.*).Metrics;/\1/p' src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java) +OLD_PACKAGE=$(sed -nE 's/.*extends (io\.prometheus\.metrics\.expositionformats\.generated\.[^ ]*?)\.Metrics.*/\1/p' src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java) PACKAGE="io.prometheus.metrics.expositionformats.generated.com_google_protobuf_${PROTOBUF_VERSION_STRING}" if [[ $OLD_PACKAGE != "$PACKAGE" ]]; then @@ -33,6 +33,10 @@ protoc --java_out "$TARGET_DIR" $PROTO_DIR/metrics.proto sed -i '1 i\//CHECKSTYLE:OFF: checkstyle' "$(find src/main/generated/io -type f)" sed -i -e $'$a\\\n//CHECKSTYLE:ON: checkstyle' "$(find src/main/generated/io -type f)" +GENERATED_FILE="$TARGET_DIR/${PACKAGE//\.//}/Metrics.java" +sed -i 's/public final class Metrics/public class Metrics/' "$GENERATED_FILE" +sed -i 's/private Metrics() {}/protected Metrics() {}/' "$GENERATED_FILE" + GENERATED_WITH=$(grep -oP '\/\/ Protobuf Java Version: \K.*' "$TARGET_DIR/${PACKAGE//\.//}"/Metrics.java) function help() { diff --git a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java index eeab733f1..5f4788c14 100644 --- a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java +++ b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_33_5/Metrics.java @@ -7,8 +7,8 @@ package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5; @com.google.protobuf.Generated -public final class Metrics extends com.google.protobuf.GeneratedFile { - private Metrics() {} +public class Metrics extends com.google.protobuf.GeneratedFile { + protected Metrics() {} static { com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java new file mode 100644 index 000000000..605aa4cd7 --- /dev/null +++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java @@ -0,0 +1,6 @@ +package io.prometheus.metrics.expositionformats.generated; + +public final class Metrics + extends io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics { + private Metrics() {} +} diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java index b552fa486..d714fb5cd 100644 --- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java +++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java @@ -7,7 +7,7 @@ import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.expositionformats.ExpositionFormatWriter; import io.prometheus.metrics.expositionformats.TextFormatUtil; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; +import io.prometheus.metrics.expositionformats.generated.Metrics; import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot; @@ -30,6 +30,7 @@ import java.io.OutputStream; import javax.annotation.Nullable; +@SuppressWarnings("NonCanonicalType") public class PrometheusProtobufWriterImpl implements ExpositionFormatWriter { @Override diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java index 9b1caa8f6..c5fc7bf34 100644 --- a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java +++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.prometheus.metrics.config.EscapingScheme; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; +import io.prometheus.metrics.expositionformats.generated.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.model.registry.Collector; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -19,6 +19,7 @@ import java.util.List; import org.junit.jupiter.api.Test; +@SuppressWarnings("NonCanonicalType") class DuplicateNamesProtobufTest { private static PrometheusRegistry getPrometheusRegistry() { diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java index 9aa88744a..5f871c585 100644 --- a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java +++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/ProtobufExpositionFormatsTest.java @@ -3,11 +3,12 @@ import static org.assertj.core.api.Assertions.assertThat; import io.prometheus.metrics.config.EscapingScheme; -import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_33_5.Metrics; +import io.prometheus.metrics.expositionformats.generated.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; import io.prometheus.metrics.model.snapshots.MetricSnapshot; +@SuppressWarnings("NonCanonicalType") class ProtobufExpositionFormatsTest extends ExpositionFormatsTest { @Override From 4e2d6b85df690c296a17a84a89e1b49671977833 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 16:46:06 +0000 Subject: [PATCH 091/110] chore(deps): update dependency lychee to v0.23.0 (#1874) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [lychee](https://redirect.github.com/lycheeverse/lychee) | minor | `0.22.0` โ†’ `0.23.0` | --- ### Release Notes
    lycheeverse/lychee (lychee) ### [`v0.23.0`](https://redirect.github.com/lycheeverse/lychee/releases/tag/lychee-v0.23.0) [Compare Source](https://redirect.github.com/lycheeverse/lychee/compare/lychee-v0.22.0...lychee-v0.23.0) ##### Added - per-host caching ([#​1974](https://redirect.github.com/lycheeverse/lychee/pull/1974)) - implement per-host rate limiting and statistics ([#​1929](https://redirect.github.com/lycheeverse/lychee/pull/1929)) ##### Fixed - CacheableResponse should only download file when needed ([#​2035](https://redirect.github.com/lycheeverse/lychee/pull/2035)) - Combine host stats with response stats ([#​1975](https://redirect.github.com/lycheeverse/lychee/pull/1975)) ##### Other - delete leftover openssl sentence in readme - Speed up slow tests ([#​2019](https://redirect.github.com/lycheeverse/lychee/pull/2019)) - *(deps)* bump the dependencies group with 2 updates - Improve README.md UX ([#​2029](https://redirect.github.com/lycheeverse/lychee/pull/2029)) - Replace OpenSSL with rustls ([#​1928](https://redirect.github.com/lycheeverse/lychee/pull/1928)) - Replace check-if-email-exists with mailify ([#​1985](https://redirect.github.com/lycheeverse/lychee/pull/1985)) - Redirect hint ([#​2020](https://redirect.github.com/lycheeverse/lychee/pull/2020)) - Update to reqwest 0.13.1 & cargo update - *(deps)* bump the dependencies group across 1 directory with 4 updates - Use absolute instead of canonicalize for relative root-dir ([#​2008](https://redirect.github.com/lycheeverse/lychee/pull/2008)) - Log successful responses only for Debug and Trace - Only show redirect details in verbose mode - Show status code in redirect list - Use u8 instead of i8 for log level values - Update comparison table ([#​1997](https://redirect.github.com/lycheeverse/lychee/pull/1997)) - Rejected urls ([#​1990](https://redirect.github.com/lycheeverse/lychee/pull/1990)) - Accept ranges ([#​1989](https://redirect.github.com/lycheeverse/lychee/pull/1989)) - *(deps)* bump the dependencies group with 5 updates ([#​1988](https://redirect.github.com/lycheeverse/lychee/pull/1988)) - *(deps)* bump the dependencies group with 4 updates ([#​1978](https://redirect.github.com/lycheeverse/lychee/pull/1978)) - *(deps)* bump the dependencies group with 4 updates ([#​1973](https://redirect.github.com/lycheeverse/lychee/pull/1973)) - *(docs)* update TOC - Improve wikilink parsing and checking ([#​1799](https://redirect.github.com/lycheeverse/lychee/pull/1799)) - Specify that Scoop installation is for Windows ([#​1969](https://redirect.github.com/lycheeverse/lychee/pull/1969)) - Extract record\_cache\_event & skip mail caching - Add tldr-pages link to README ([#​1963](https://redirect.github.com/lycheeverse/lychee/pull/1963)) - *(deps)* bump the dependencies group across 1 directory with 3 updates ([#​1961](https://redirect.github.com/lycheeverse/lychee/pull/1961)) - Extract URLs from CSS ([#​1956](https://redirect.github.com/lycheeverse/lychee/pull/1956))
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index 222a3a5fb..f539b797e 100644 --- a/mise.toml +++ b/mise.toml @@ -2,7 +2,7 @@ "go:github.com/gohugoio/hugo" = "v0.155.3" "go:github.com/grafana/oats" = "0.6.1" java = "temurin-25.0.2+10.0.LTS" -lychee = "0.22.0" +lychee = "0.23.0" protoc = "33.5" [env] From 54d63423e39a23c02e158d9414f639d50199be5a Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 13 Feb 2026 21:22:31 +0100 Subject: [PATCH 092/110] Add bump-snapshot mise task to automate version bumps After a release, the snapshot version must be updated across ~57 files. This was previously a manual find-and-replace. The new `mise run bump-snapshot` task automates it by extracting the current version from the parent pom.xml and replacing it everywhere via git grep. Also makes set-version.sh and build-release.sh dynamic so they no longer hard-code the snapshot version. Signed-off-by: Gregor Zeitlinger --- .mise/tasks/build-release.sh | 11 ++++- .mise/tasks/bump_snapshot.py | 86 ++++++++++++++++++++++++++++++++++++ .mise/tasks/set-version.sh | 12 +++-- RELEASING.md | 13 ++++-- 4 files changed, 113 insertions(+), 9 deletions(-) create mode 100755 .mise/tasks/bump_snapshot.py diff --git a/.mise/tasks/build-release.sh b/.mise/tasks/build-release.sh index 448dd3d5f..b7c18d513 100755 --- a/.mise/tasks/build-release.sh +++ b/.mise/tasks/build-release.sh @@ -1,11 +1,20 @@ #!/usr/bin/env bash #MISE description="Build release package" -#USAGE arg "" env="TAG" default="1.5.0-SNAPSHOT" +#USAGE arg "[tag]" env="TAG" set -euo pipefail # shellcheck disable=SC2154 # is set by mise +if [[ -z "${usage_tag:-}" ]]; then + PARENT_POM="prometheus-metrics-parent/pom.xml" + usage_tag=$(sed -n 's/.*\(.*-SNAPSHOT\)<\/version>.*/\1/p' "$PARENT_POM" | head -1) + if [[ -z "$usage_tag" ]]; then + echo "ERROR: could not find SNAPSHOT version in $PARENT_POM" >&2 + exit 1 + fi +fi + VERSION=${usage_tag#v} mise run set-version "$VERSION" diff --git a/.mise/tasks/bump_snapshot.py b/.mise/tasks/bump_snapshot.py new file mode 100755 index 000000000..31db06a04 --- /dev/null +++ b/.mise/tasks/bump_snapshot.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 + +# [MISE] description="Bump the snapshot version in all pom.xml files" +# [MISE] alias="bump-snapshot" + +""" +Bump the SNAPSHOT version in all pom.xml files. + +By default, increments the minor version (e.g. X.Y.0 -> X.(Y+1).0). +An explicit version can be passed as argument: + mise run bump-snapshot 2.0.0-SNAPSHOT +""" + +import re +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] # repo root +PARENT_POM = ROOT / "prometheus-metrics-parent" / "pom.xml" + + +def current_snapshot() -> str: + """Extract the current SNAPSHOT version from the parent pom.xml.""" + text = PARENT_POM.read_text(encoding="utf-8") + m = re.search( + r"io\.prometheus\s*" + r"client_java_parent\s*" + r"(\S+)", + text, + ) + if not m: + sys.exit("Could not find version in " + str(PARENT_POM)) + version = m.group(1) + if not version.endswith("-SNAPSHOT"): + sys.exit(f"Current version '{version}' is not a SNAPSHOT version") + return version + + +def next_minor(version: str) -> str: + """Increment the minor version: 1.5.0-SNAPSHOT -> 1.6.0-SNAPSHOT.""" + base = version.removesuffix("-SNAPSHOT") + parts = base.split(".") + if len(parts) != 3: + sys.exit(f"Expected three-part version, got '{base}'") + parts[1] = str(int(parts[1]) + 1) + parts[2] = "0" + return ".".join(parts) + "-SNAPSHOT" + + +def find_pom_files() -> list[Path]: + """Find all pom.xml files in the repository.""" + return sorted(ROOT.rglob("pom.xml")) + + +def main() -> None: + old_version = current_snapshot() + + if len(sys.argv) > 1: + new_version = sys.argv[1] + if not new_version.endswith("-SNAPSHOT"): + sys.exit(f"New version must end with -SNAPSHOT, got '{new_version}'") + else: + new_version = next_minor(old_version) + + if old_version == new_version: + sys.exit(f"Old and new version are the same: {old_version}") + + print(f"Bumping {old_version} -> {new_version}") + + updated_count = 0 + for pom in find_pom_files(): + content = pom.read_text(encoding="utf-8") + updated = content.replace(old_version, new_version) + if content != updated: + pom.write_text(updated, encoding="utf-8") + print(f" updated {pom.relative_to(ROOT)}") + updated_count += 1 + + if updated_count == 0: + sys.exit(f"No pom.xml files contain '{old_version}'") + + print(f"\nDone. {updated_count} pom.xml file(s) updated to {new_version}.") + + +if __name__ == "__main__": + main() diff --git a/.mise/tasks/set-version.sh b/.mise/tasks/set-version.sh index 2309976ce..a5947e453 100755 --- a/.mise/tasks/set-version.sh +++ b/.mise/tasks/set-version.sh @@ -5,10 +5,14 @@ set -euo pipefail -# replace all occurrences '1.5.0-SNAPSHOT' with -# '$usage_version' in all pom.xml files in the current directory and -# subdirectories +PARENT_POM="prometheus-metrics-parent/pom.xml" +CURRENT_VERSION=$(sed -n 's/.*\(.*-SNAPSHOT\)<\/version>.*/\1/p' "$PARENT_POM" | head -1) + +if [[ -z "$CURRENT_VERSION" ]]; then + echo "ERROR: could not find SNAPSHOT version in $PARENT_POM" >&2 + exit 1 +fi # shellcheck disable=SC2154 # is set by mise find . -name 'pom.xml' -exec \ - sed -i "s/1.5.0-SNAPSHOT<\/version>/$usage_version<\/version>/g" {} + + sed -i "s/${CURRENT_VERSION}<\/version>/$usage_version<\/version>/g" {} + diff --git a/RELEASING.md b/RELEASING.md index 601034d01..35a2e3185 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -19,11 +19,16 @@ mise run update-benchmarks ## Major or minor release -After the release is created, do a text replace everywhere in the repository to update the -snapshot version in the `pom.xml` files (and some other files) to the next version. -For example, if the last release was `1.4.0`, the next snapshot version should be `1.5.0-SNAPSHOT`. +After the release is created, bump the snapshot version in all +`pom.xml` files: -Replace `1.4.0-SNAPSHOT` with `1.5.0-SNAPSHOT` in all following files. +```shell +# Auto-increment the minor version (e.g. 1.5.0-SNAPSHOT -> 1.6.0-SNAPSHOT) +mise run bump-snapshot + +# Or specify an explicit version (e.g. for a major bump) +mise run bump-snapshot 2.0.0-SNAPSHOT +``` ## If the GPG key expired From b1f7ee0b69cbac084dc1a8b1ee2c6d16da61bbcf Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 13 Feb 2026 21:52:21 +0100 Subject: [PATCH 093/110] bump snapshot Signed-off-by: Gregor Zeitlinger --- benchmarks/pom.xml | 2 +- examples/example-custom-buckets/pom.xml | 2 +- .../example-greeting-service/pom.xml | 2 +- .../example-hello-world-app/pom.xml | 2 +- examples/example-exporter-httpserver/pom.xml | 2 +- examples/example-exporter-multi-target/pom.xml | 2 +- examples/example-exporter-opentelemetry/pom.xml | 2 +- examples/example-exporter-servlet-tomcat/pom.xml | 2 +- examples/example-native-histogram/pom.xml | 2 +- examples/example-otel-jvm-runtime-metrics/pom.xml | 2 +- examples/example-prometheus-properties/pom.xml | 2 +- examples/example-simpleclient-bridge/pom.xml | 2 +- examples/pom.xml | 2 +- integration-tests/it-common/pom.xml | 2 +- .../it-exporter/it-exporter-duplicate-metrics-sample/pom.xml | 2 +- .../it-exporter/it-exporter-httpserver-sample/pom.xml | 2 +- integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml | 2 +- .../it-exporter/it-exporter-servlet-jetty-sample/pom.xml | 2 +- .../it-exporter/it-exporter-servlet-tomcat-sample/pom.xml | 2 +- integration-tests/it-exporter/it-exporter-test/pom.xml | 2 +- integration-tests/it-exporter/it-no-protobuf-test/pom.xml | 2 +- integration-tests/it-exporter/pom.xml | 2 +- integration-tests/it-pushgateway/pom.xml | 2 +- integration-tests/it-spring-boot-smoke-test/pom.xml | 2 +- integration-tests/pom.xml | 2 +- pom.xml | 2 +- prometheus-metrics-bom/pom.xml | 2 +- prometheus-metrics-config/pom.xml | 2 +- prometheus-metrics-core/pom.xml | 2 +- prometheus-metrics-exporter-common/pom.xml | 2 +- prometheus-metrics-exporter-httpserver/pom.xml | 2 +- .../pom.xml | 2 +- prometheus-metrics-exporter-opentelemetry-shaded/pom.xml | 2 +- prometheus-metrics-exporter-opentelemetry/pom.xml | 2 +- prometheus-metrics-exporter-pushgateway/pom.xml | 2 +- prometheus-metrics-exporter-servlet-jakarta/pom.xml | 2 +- prometheus-metrics-exporter-servlet-javax/pom.xml | 2 +- prometheus-metrics-exposition-formats-shaded/pom.xml | 2 +- prometheus-metrics-exposition-formats/pom.xml | 2 +- prometheus-metrics-exposition-textformats/pom.xml | 2 +- prometheus-metrics-instrumentation-caffeine/pom.xml | 2 +- prometheus-metrics-instrumentation-dropwizard/pom.xml | 2 +- prometheus-metrics-instrumentation-dropwizard5/pom.xml | 2 +- prometheus-metrics-instrumentation-guava/pom.xml | 2 +- prometheus-metrics-instrumentation-jvm/pom.xml | 2 +- prometheus-metrics-model/pom.xml | 2 +- prometheus-metrics-otel-support/pom.xml | 2 +- prometheus-metrics-parent/pom.xml | 2 +- prometheus-metrics-simpleclient-bridge/pom.xml | 2 +- prometheus-metrics-tracer/pom.xml | 2 +- .../prometheus-metrics-tracer-common/pom.xml | 2 +- .../prometheus-metrics-tracer-initializer/pom.xml | 2 +- .../prometheus-metrics-tracer-otel-agent/pom.xml | 2 +- .../prometheus-metrics-tracer-otel/pom.xml | 2 +- 54 files changed, 54 insertions(+), 54 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 96a6c740a..7c211006b 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -8,7 +8,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT benchmarks diff --git a/examples/example-custom-buckets/pom.xml b/examples/example-custom-buckets/pom.xml index 52ae60627..209e03862 100644 --- a/examples/example-custom-buckets/pom.xml +++ b/examples/example-custom-buckets/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml index 532b7290b..bf7de8f71 100644 --- a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml @@ -24,7 +24,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml index 4c1702bbe..68d2894bd 100644 --- a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml @@ -24,7 +24,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-exporter-httpserver/pom.xml b/examples/example-exporter-httpserver/pom.xml index ac9ed5e10..351520d51 100644 --- a/examples/example-exporter-httpserver/pom.xml +++ b/examples/example-exporter-httpserver/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-exporter-multi-target/pom.xml b/examples/example-exporter-multi-target/pom.xml index 3b736ae36..f9db2fb1a 100644 --- a/examples/example-exporter-multi-target/pom.xml +++ b/examples/example-exporter-multi-target/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-exporter-opentelemetry/pom.xml b/examples/example-exporter-opentelemetry/pom.xml index a94e82ce4..c0f9d78fd 100644 --- a/examples/example-exporter-opentelemetry/pom.xml +++ b/examples/example-exporter-opentelemetry/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-exporter-servlet-tomcat/pom.xml b/examples/example-exporter-servlet-tomcat/pom.xml index 65b91b5ed..fe602e203 100644 --- a/examples/example-exporter-servlet-tomcat/pom.xml +++ b/examples/example-exporter-servlet-tomcat/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-native-histogram/pom.xml b/examples/example-native-histogram/pom.xml index eedadf6fe..df9fec94e 100644 --- a/examples/example-native-histogram/pom.xml +++ b/examples/example-native-histogram/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-otel-jvm-runtime-metrics/pom.xml b/examples/example-otel-jvm-runtime-metrics/pom.xml index 17aa53a99..6d1fac5d0 100644 --- a/examples/example-otel-jvm-runtime-metrics/pom.xml +++ b/examples/example-otel-jvm-runtime-metrics/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-prometheus-properties/pom.xml b/examples/example-prometheus-properties/pom.xml index ac0279853..0cf6e5da4 100644 --- a/examples/example-prometheus-properties/pom.xml +++ b/examples/example-prometheus-properties/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/example-simpleclient-bridge/pom.xml b/examples/example-simpleclient-bridge/pom.xml index 82459eb0c..3c1022dbc 100644 --- a/examples/example-simpleclient-bridge/pom.xml +++ b/examples/example-simpleclient-bridge/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT pom import diff --git a/examples/pom.xml b/examples/pom.xml index 1b0059655..e033a3d1e 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT examples diff --git a/integration-tests/it-common/pom.xml b/integration-tests/it-common/pom.xml index 2faac1769..9ae86303c 100644 --- a/integration-tests/it-common/pom.xml +++ b/integration-tests/it-common/pom.xml @@ -6,7 +6,7 @@ io.prometheus integration-tests - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-common diff --git a/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml index ca982769b..13364ec5d 100644 --- a/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter-duplicate-metrics-sample diff --git a/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml b/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml index f52c8434e..3dfa05f07 100644 --- a/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter-httpserver-sample diff --git a/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml b/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml index f75c398a5..6bfd7c5cb 100644 --- a/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml +++ b/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter-no-protobuf diff --git a/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml b/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml index 9a1722f5f..ed5285769 100644 --- a/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter-servlet-jetty-sample diff --git a/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml b/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml index b71a90b3b..be9c7704d 100644 --- a/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter-servlet-tomcat-sample diff --git a/integration-tests/it-exporter/it-exporter-test/pom.xml b/integration-tests/it-exporter/it-exporter-test/pom.xml index 1929a9c6d..027631fbd 100644 --- a/integration-tests/it-exporter/it-exporter-test/pom.xml +++ b/integration-tests/it-exporter/it-exporter-test/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter-test diff --git a/integration-tests/it-exporter/it-no-protobuf-test/pom.xml b/integration-tests/it-exporter/it-no-protobuf-test/pom.xml index 6321799db..1a17b83dc 100644 --- a/integration-tests/it-exporter/it-no-protobuf-test/pom.xml +++ b/integration-tests/it-exporter/it-no-protobuf-test/pom.xml @@ -6,7 +6,7 @@ io.prometheus it-exporter - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-no-protobuf-test diff --git a/integration-tests/it-exporter/pom.xml b/integration-tests/it-exporter/pom.xml index c4a29fe74..08386d8b0 100644 --- a/integration-tests/it-exporter/pom.xml +++ b/integration-tests/it-exporter/pom.xml @@ -6,7 +6,7 @@ io.prometheus integration-tests - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-exporter diff --git a/integration-tests/it-pushgateway/pom.xml b/integration-tests/it-pushgateway/pom.xml index cf3e68169..a70ea5458 100644 --- a/integration-tests/it-pushgateway/pom.xml +++ b/integration-tests/it-pushgateway/pom.xml @@ -6,7 +6,7 @@ io.prometheus integration-tests - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT it-pushgateway diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index 631d0ac32..52f43eae7 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -14,7 +14,7 @@ io.prometheus it-spring-boot-smoke-test - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT Integration Test - Spring Smoke Tests diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index 49880c484..f0ab29299 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT integration-tests diff --git a/pom.xml b/pom.xml index 7373a2cdb..d6f5612e7 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ io.prometheus client_java_parent - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-parent/pom.xml diff --git a/prometheus-metrics-bom/pom.xml b/prometheus-metrics-bom/pom.xml index d8e9d7ada..167ea522e 100644 --- a/prometheus-metrics-bom/pom.xml +++ b/prometheus-metrics-bom/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java_parent - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT ../prometheus-metrics-parent/pom.xml diff --git a/prometheus-metrics-config/pom.xml b/prometheus-metrics-config/pom.xml index a07c83f0b..494282cc7 100644 --- a/prometheus-metrics-config/pom.xml +++ b/prometheus-metrics-config/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-config diff --git a/prometheus-metrics-core/pom.xml b/prometheus-metrics-core/pom.xml index b3a043574..b64c5db54 100644 --- a/prometheus-metrics-core/pom.xml +++ b/prometheus-metrics-core/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-core diff --git a/prometheus-metrics-exporter-common/pom.xml b/prometheus-metrics-exporter-common/pom.xml index d5a9ef2ef..a471c0b9b 100644 --- a/prometheus-metrics-exporter-common/pom.xml +++ b/prometheus-metrics-exporter-common/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-common diff --git a/prometheus-metrics-exporter-httpserver/pom.xml b/prometheus-metrics-exporter-httpserver/pom.xml index 01fc2dab5..d2843b51a 100644 --- a/prometheus-metrics-exporter-httpserver/pom.xml +++ b/prometheus-metrics-exporter-httpserver/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-httpserver diff --git a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml index 16fd43422..40ce26a57 100644 --- a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-opentelemetry-otel-agent-resources diff --git a/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml b/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml index c08919d13..a30a16847 100644 --- a/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-opentelemetry diff --git a/prometheus-metrics-exporter-opentelemetry/pom.xml b/prometheus-metrics-exporter-opentelemetry/pom.xml index acae00e0a..7d427d96b 100644 --- a/prometheus-metrics-exporter-opentelemetry/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-opentelemetry-no-otel diff --git a/prometheus-metrics-exporter-pushgateway/pom.xml b/prometheus-metrics-exporter-pushgateway/pom.xml index 6d59b2b4d..c466c8552 100644 --- a/prometheus-metrics-exporter-pushgateway/pom.xml +++ b/prometheus-metrics-exporter-pushgateway/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-pushgateway diff --git a/prometheus-metrics-exporter-servlet-jakarta/pom.xml b/prometheus-metrics-exporter-servlet-jakarta/pom.xml index 247c3dfb9..6dd93f190 100644 --- a/prometheus-metrics-exporter-servlet-jakarta/pom.xml +++ b/prometheus-metrics-exporter-servlet-jakarta/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-servlet-jakarta diff --git a/prometheus-metrics-exporter-servlet-javax/pom.xml b/prometheus-metrics-exporter-servlet-javax/pom.xml index 1239b96fb..9d78816f0 100644 --- a/prometheus-metrics-exporter-servlet-javax/pom.xml +++ b/prometheus-metrics-exporter-servlet-javax/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exporter-servlet-javax diff --git a/prometheus-metrics-exposition-formats-shaded/pom.xml b/prometheus-metrics-exposition-formats-shaded/pom.xml index 64e033366..d3e02eb2b 100644 --- a/prometheus-metrics-exposition-formats-shaded/pom.xml +++ b/prometheus-metrics-exposition-formats-shaded/pom.xml @@ -7,7 +7,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exposition-formats diff --git a/prometheus-metrics-exposition-formats/pom.xml b/prometheus-metrics-exposition-formats/pom.xml index bb780f0c2..5cb35db2e 100644 --- a/prometheus-metrics-exposition-formats/pom.xml +++ b/prometheus-metrics-exposition-formats/pom.xml @@ -7,7 +7,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exposition-formats-no-protobuf diff --git a/prometheus-metrics-exposition-textformats/pom.xml b/prometheus-metrics-exposition-textformats/pom.xml index 1f34a5dde..16e7b73b6 100644 --- a/prometheus-metrics-exposition-textformats/pom.xml +++ b/prometheus-metrics-exposition-textformats/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-exposition-textformats diff --git a/prometheus-metrics-instrumentation-caffeine/pom.xml b/prometheus-metrics-instrumentation-caffeine/pom.xml index f1fb57c6c..355bea276 100644 --- a/prometheus-metrics-instrumentation-caffeine/pom.xml +++ b/prometheus-metrics-instrumentation-caffeine/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-instrumentation-caffeine diff --git a/prometheus-metrics-instrumentation-dropwizard/pom.xml b/prometheus-metrics-instrumentation-dropwizard/pom.xml index 1c58efd78..e25368513 100644 --- a/prometheus-metrics-instrumentation-dropwizard/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-instrumentation-dropwizard diff --git a/prometheus-metrics-instrumentation-dropwizard5/pom.xml b/prometheus-metrics-instrumentation-dropwizard5/pom.xml index 14704695b..bb14196b4 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard5/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-instrumentation-dropwizard5 diff --git a/prometheus-metrics-instrumentation-guava/pom.xml b/prometheus-metrics-instrumentation-guava/pom.xml index b086151b6..cb333eacd 100644 --- a/prometheus-metrics-instrumentation-guava/pom.xml +++ b/prometheus-metrics-instrumentation-guava/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-instrumentation-guava diff --git a/prometheus-metrics-instrumentation-jvm/pom.xml b/prometheus-metrics-instrumentation-jvm/pom.xml index 2aaf675ad..f60b55a49 100644 --- a/prometheus-metrics-instrumentation-jvm/pom.xml +++ b/prometheus-metrics-instrumentation-jvm/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-instrumentation-jvm diff --git a/prometheus-metrics-model/pom.xml b/prometheus-metrics-model/pom.xml index 1919ee95c..ff07241ce 100644 --- a/prometheus-metrics-model/pom.xml +++ b/prometheus-metrics-model/pom.xml @@ -7,7 +7,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-model diff --git a/prometheus-metrics-otel-support/pom.xml b/prometheus-metrics-otel-support/pom.xml index bea2ce649..18328637e 100644 --- a/prometheus-metrics-otel-support/pom.xml +++ b/prometheus-metrics-otel-support/pom.xml @@ -7,7 +7,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-otel-support diff --git a/prometheus-metrics-parent/pom.xml b/prometheus-metrics-parent/pom.xml index 84fab6b9d..f70317154 100644 --- a/prometheus-metrics-parent/pom.xml +++ b/prometheus-metrics-parent/pom.xml @@ -7,7 +7,7 @@ io.prometheus client_java_parent - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT Prometheus Metrics Library Parent http://github.com/prometheus/client_java diff --git a/prometheus-metrics-simpleclient-bridge/pom.xml b/prometheus-metrics-simpleclient-bridge/pom.xml index e15a5631c..80ae0b6e4 100644 --- a/prometheus-metrics-simpleclient-bridge/pom.xml +++ b/prometheus-metrics-simpleclient-bridge/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-simpleclient-bridge diff --git a/prometheus-metrics-tracer/pom.xml b/prometheus-metrics-tracer/pom.xml index 15ea09307..a97ae0a54 100644 --- a/prometheus-metrics-tracer/pom.xml +++ b/prometheus-metrics-tracer/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-tracer diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml index 573e78801..11d4fcc80 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml @@ -6,7 +6,7 @@ io.prometheus prometheus-metrics-tracer - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-tracer-common diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml index 2d15be029..07dc768f5 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml @@ -6,7 +6,7 @@ io.prometheus prometheus-metrics-tracer - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-tracer-initializer diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml index be140167d..4db6ea530 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml @@ -7,7 +7,7 @@ io.prometheus prometheus-metrics-tracer - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-tracer-otel-agent diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml index 3dda51c6b..955d1cf34 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml @@ -6,7 +6,7 @@ io.prometheus prometheus-metrics-tracer - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT prometheus-metrics-tracer-otel From 043fc5742752fdc2f67f0219418030a190c53bde Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 21:05:38 +0000 Subject: [PATCH 094/110] fix(deps): update dependency io.prometheus:prometheus-metrics-bom to v1.5.0 (#1877) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.prometheus:prometheus-metrics-bom](https://redirect.github.com/prometheus/client_java) | `1.5.0-SNAPSHOT` โ†’ `1.5.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.prometheus:prometheus-metrics-bom/1.5.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.prometheus:prometheus-metrics-bom/1.5.0-SNAPSHOT/1.5.0?slim=true) | --- ### Release Notes
    prometheus/client_java (io.prometheus:prometheus-metrics-bom) ### [`v1.5.0`](https://redirect.github.com/prometheus/client_java/releases/tag/v1.5.0) [Compare Source](https://redirect.github.com/prometheus/client_java/compare/v1.4.3...v1.5.0) ##### Highlights ##### Performance - **Improve histogram/summary performance under contention** ([#​1794](https://redirect.github.com/prometheus/client_java/pull/1794)) by [@​jack-berg](https://redirect.github.com/jack-berg) โ€” Significant throughput improvements for high-contention scenarios by striping `observationCount` across multiple instances. Benchmarks show prometheusClassic improving from \~5,126 ops/s to \~14,624 ops/s (\~185% improvement) and prometheusNative from \~3,854 ops/s to \~7,406 ops/s (\~92% improvement). ##### Configuration - **Support environment variables in properties** ([#​1828](https://redirect.github.com/prometheus/client_java/pull/1828)) by [@​zeitlinger](https://redirect.github.com/zeitlinger) โ€” Adds environment variable support for configuration (e.g., `IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT`) while maintaining full backward compatibility. Also introduces snake\_case property naming (recommended) while keeping camelCase working. ##### API - **Allow metrics with the same name but different labels** ([#​1800](https://redirect.github.com/prometheus/client_java/pull/1800)) by [@​jaydeluca](https://redirect.github.com/jaydeluca) โ€” Enables registration of metrics with the same name, with validation at both registration and scrape time. - **Add stable Metrics class to decouple consumers from protobuf version** ([#​1873](https://redirect.github.com/prometheus/client_java/pull/1873)) by [@​zeitlinger](https://redirect.github.com/zeitlinger) โ€” Introduces a stable `Metrics` class so consumer code no longer needs import updates on protobuf upgrades. ##### OpenTelemetry - **Add OTel support module and make examples standalone** ([#​1868](https://redirect.github.com/prometheus/client_java/pull/1868)) by [@​zeitlinger](https://redirect.github.com/zeitlinger) โ€” New `prometheus-metrics-otel-support` module that bundles the OTel SDK and Prometheus exporter as a single dependency. Examples are now standalone and can be copy-pasted directly. - **Add docs and example for OTel JVM runtime metrics** ([#​1861](https://redirect.github.com/prometheus/client_java/pull/1861)) by [@​zeitlinger](https://redirect.github.com/zeitlinger) ##### Exporters - **Add metricsHandlerPath and registerHealthHandler configuration options to HTTPServer** ([#​1735](https://redirect.github.com/prometheus/client_java/pull/1735)) by [@​Donnerbart](https://redirect.github.com/Donnerbart) - **Disable compression in PrometheusScrapeHandler** ([#​1691](https://redirect.github.com/prometheus/client_java/pull/1691)) by [@​Myllyenko](https://redirect.github.com/Myllyenko) โ€” Adds ability to disable compression in `PrometheusScrapeHandler`. - **Prevent exception in HttpServer exporter when using custom root metrics path** ([#​1772](https://redirect.github.com/prometheus/client_java/pull/1772)) by [@​Donnerbart](https://redirect.github.com/Donnerbart) ##### Instrumentation - **Add custom tags to JVM metrics** ([#​1769](https://redirect.github.com/prometheus/client_java/pull/1769)) by [@​sibasispadhi](https://redirect.github.com/sibasispadhi) - **Verify and document native histograms with custom buckets (NHCB) support** ([#​1846](https://redirect.github.com/prometheus/client_java/pull/1846)) by [@​zeitlinger](https://redirect.github.com/zeitlinger) *** ##### What's Changed ##### ๐Ÿ• Features - Adding ability to disable compression in PrometheusScrapeHandler by [@​Myllyenko](https://redirect.github.com/Myllyenko) in [#​1691](https://redirect.github.com/prometheus/client_java/pull/1691) - Add metricsHandlerPath and registerHealthHandler configuration options to HTTPServer by [@​Donnerbart](https://redirect.github.com/Donnerbart) in [#​1735](https://redirect.github.com/prometheus/client_java/pull/1735) - Add custom tags to JVM metrics by [@​sibasispadhi](https://redirect.github.com/sibasispadhi) in [#​1769](https://redirect.github.com/prometheus/client_java/pull/1769) - Prevent exception in HttpServer exporter when using custom root metrics path by [@​Donnerbart](https://redirect.github.com/Donnerbart) in [#​1772](https://redirect.github.com/prometheus/client_java/pull/1772) - Allow metrics with the same name different labels by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1800](https://redirect.github.com/prometheus/client_java/pull/1800) - Improve histogram, summary performance under contention by striping observationCount by [@​jack-berg](https://redirect.github.com/jack-berg) in [#​1794](https://redirect.github.com/prometheus/client_java/pull/1794) - support environment variables in properties by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1828](https://redirect.github.com/prometheus/client_java/pull/1828) - Verify and document native histograms with custom buckets (NHCB) support by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1846](https://redirect.github.com/prometheus/client_java/pull/1846) - Remove help text validation by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1866](https://redirect.github.com/prometheus/client_java/pull/1866) - Add docs and example for OTel JVM runtime metrics by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1861](https://redirect.github.com/prometheus/client_java/pull/1861) - Add OTel support module and make examples standalone by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1868](https://redirect.github.com/prometheus/client_java/pull/1868) - Add stable Metrics class to decouple consumers from protobuf version by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1873](https://redirect.github.com/prometheus/client_java/pull/1873) ##### ๐Ÿ”ง Maintenance - fix native test by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1729](https://redirect.github.com/prometheus/client_java/pull/1729) - use graalvm version that renovate can update by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1733](https://redirect.github.com/prometheus/client_java/pull/1733) - fix: update build command to include 'clean' for benchmarks by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1762](https://redirect.github.com/prometheus/client_java/pull/1762) - fix blog post url by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1787](https://redirect.github.com/prometheus/client_java/pull/1787) - Add test matrix for different java versions by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1781](https://redirect.github.com/prometheus/client_java/pull/1781) - fix javadoc by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1809](https://redirect.github.com/prometheus/client_java/pull/1809) - pom cleanup by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1810](https://redirect.github.com/prometheus/client_java/pull/1810) - separate java update as graal is not working by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1811](https://redirect.github.com/prometheus/client_java/pull/1811) - pin super linter by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1814](https://redirect.github.com/prometheus/client_java/pull/1814) - improve code quality, part 1 by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1808](https://redirect.github.com/prometheus/client_java/pull/1808) - make tests not public by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1818](https://redirect.github.com/prometheus/client_java/pull/1818) - Make super-linter ARM friendly by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1817](https://redirect.github.com/prometheus/client_java/pull/1817) - Run integration tests in matrix by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1802](https://redirect.github.com/prometheus/client_java/pull/1802) - lint only modified links by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1819](https://redirect.github.com/prometheus/client_java/pull/1819) - Run nightly benchmarks by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1803](https://redirect.github.com/prometheus/client_java/pull/1803) - bundle renovate updates by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1829](https://redirect.github.com/prometheus/client_java/pull/1829) - refactor: update exception handling to use specific exception types by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1843](https://redirect.github.com/prometheus/client_java/pull/1843) - Reduce flakyness of testExemplarsClassicHistogram by [@​jaydeluca](https://redirect.github.com/jaydeluca) in [#​1842](https://redirect.github.com/prometheus/client_java/pull/1842) - fix and test gh pages by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1845](https://redirect.github.com/prometheus/client_java/pull/1845) - address todos by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1832](https://redirect.github.com/prometheus/client_java/pull/1832) - re-use super linter script by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1847](https://redirect.github.com/prometheus/client_java/pull/1847) - clean up link checking by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1850](https://redirect.github.com/prometheus/client_java/pull/1850) - add branch coverage, better javadoc lints by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1851](https://redirect.github.com/prometheus/client_java/pull/1851) - fix(renovate): enable updates for opentelemetry-instrumentation-bom-alpha by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1860](https://redirect.github.com/prometheus/client_java/pull/1860) - ignore internal poms by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1862](https://redirect.github.com/prometheus/client_java/pull/1862) ##### ๐Ÿงน Chore - add IDEA icon by [@​zeitlinger](https://redirect.github.com/zeitlinger) in [#​1676](https://redirect.github.com/prometheus/client_java/pull/1676) ##### ๐Ÿ‘’ Dependencies - fix(deps): update dependency commons-io:commons-io to v2.21.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1670](https://redirect.github.com/prometheus/client_java/pull/1670) - chore(deps): update eclipse-temurin:25-jre docker digest to [`4a26dfc`](https://redirect.github.com/prometheus/client_java/commit/4a26dfc) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1671](https://redirect.github.com/prometheus/client_java/pull/1671) - chore(deps): update eclipse-temurin:25-jre docker digest to [`dbfb525`](https://redirect.github.com/prometheus/client_java/commit/dbfb525) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1673](https://redirect.github.com/prometheus/client_java/pull/1673) - chore(deps): update eclipse-temurin docker tag to v25.0.1\_8-jre by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1672](https://redirect.github.com/prometheus/client_java/pull/1672) - chore(deps): update dependency mise to v2025.11.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1674](https://redirect.github.com/prometheus/client_java/pull/1674) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`31fb090`](https://redirect.github.com/prometheus/client_java/commit/31fb090) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1675](https://redirect.github.com/prometheus/client_java/pull/1675) - chore(deps): update grafana/k6 docker digest to [`ef816d9`](https://redirect.github.com/prometheus/client_java/commit/ef816d9) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1677](https://redirect.github.com/prometheus/client_java/pull/1677) - fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.14 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1678](https://redirect.github.com/prometheus/client_java/pull/1678) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`ac6ce08`](https://redirect.github.com/prometheus/client_java/commit/ac6ce08) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1679](https://redirect.github.com/prometheus/client_java/pull/1679) - fix(deps): update jetty monorepo to v12.1.4 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1680](https://redirect.github.com/prometheus/client_java/pull/1680) - chore(deps): update jdx/mise-action action to v3.4.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1682](https://redirect.github.com/prometheus/client_java/pull/1682) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`daeb27e`](https://redirect.github.com/prometheus/client_java/commit/daeb27e) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1683](https://redirect.github.com/prometheus/client_java/pull/1683) - fix(deps): update protobuf monorepo by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1681](https://redirect.github.com/prometheus/client_java/pull/1681) - chore(deps): update dependency org.wiremock:wiremock to v3.13.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1685](https://redirect.github.com/prometheus/client_java/pull/1685) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`73fe03b`](https://redirect.github.com/prometheus/client_java/commit/73fe03b) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1687](https://redirect.github.com/prometheus/client_java/pull/1687) - chore(deps): update dependency mise to v2025.11.5 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1688](https://redirect.github.com/prometheus/client_java/pull/1688) - chore(deps): update dependency org.apache.maven.plugins:maven-jar-plugin to v3.5.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1686](https://redirect.github.com/prometheus/client_java/pull/1686) - chore(deps): update actions/checkout digest to [`93cb6ef`](https://redirect.github.com/prometheus/client_java/commit/93cb6ef) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1689](https://redirect.github.com/prometheus/client_java/pull/1689) - chore(deps): update actions/checkout action to v5.0.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1690](https://redirect.github.com/prometheus/client_java/pull/1690) - chore(deps): update grafana/grafana docker tag to v12.3.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1693](https://redirect.github.com/prometheus/client_java/pull/1693) - chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.1.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1692](https://redirect.github.com/prometheus/client_java/pull/1692) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.140.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1695](https://redirect.github.com/prometheus/client_java/pull/1695) - fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v3.5.8 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1696](https://redirect.github.com/prometheus/client_java/pull/1696) - chore(deps): update grafana/k6 docker digest to [`d8e305a`](https://redirect.github.com/prometheus/client_java/commit/d8e305a) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1697](https://redirect.github.com/prometheus/client_java/pull/1697) - chore(deps): update actions/checkout action to v6 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1698](https://redirect.github.com/prometheus/client_java/pull/1698) - fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1699](https://redirect.github.com/prometheus/client_java/pull/1699) - chore(deps): update jdx/mise-action action to v3.5.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1700](https://redirect.github.com/prometheus/client_java/pull/1700) - chore(deps): update dependency org.codehaus.mojo:versions-maven-plugin to v2.20.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1701](https://redirect.github.com/prometheus/client_java/pull/1701) - chore(deps): update dependency mise to v2025.11.7 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1702](https://redirect.github.com/prometheus/client_java/pull/1702) - chore(deps): update jdx/mise-action action to v3.5.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1703](https://redirect.github.com/prometheus/client_java/pull/1703) - chore(deps): update grafana/k6 docker digest to [`16bc234`](https://redirect.github.com/prometheus/client_java/commit/16bc234) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1704](https://redirect.github.com/prometheus/client_java/pull/1704) - chore(deps): update dependency org.codehaus.mojo:versions-maven-plugin to v2.20.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1705](https://redirect.github.com/prometheus/client_java/pull/1705) - chore(deps): update dependency com.google.errorprone:error\_prone\_core to v2.45.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1706](https://redirect.github.com/prometheus/client_java/pull/1706) - chore(deps): update module go:github.com/grafana/oats to v0.5.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1707](https://redirect.github.com/prometheus/client_java/pull/1707) - chore(deps): update dependency org.apache.maven.plugins:maven-resources-plugin to v3.4.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1709](https://redirect.github.com/prometheus/client_java/pull/1709) - chore(deps): update dependency org.apache.maven.plugins:maven-source-plugin to v3.4.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1710](https://redirect.github.com/prometheus/client_java/pull/1710) - chore(deps): update dependency mise to v2025.11.11 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1711](https://redirect.github.com/prometheus/client_java/pull/1711) - chore(deps): update dependency com.uber.nullaway:nullaway to v0.12.13 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1713](https://redirect.github.com/prometheus/client_java/pull/1713) - chore(deps): update module go:github.com/grafana/oats to v0.6.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1714](https://redirect.github.com/prometheus/client_java/pull/1714) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.141.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1715](https://redirect.github.com/prometheus/client_java/pull/1715) - chore(deps): update actions/checkout digest to [`8e8c483`](https://redirect.github.com/prometheus/client_java/commit/8e8c483) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1717](https://redirect.github.com/prometheus/client_java/pull/1717) - chore(deps): update actions/checkout action to v6.0.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1718](https://redirect.github.com/prometheus/client_java/pull/1718) - chore(deps): update prom/prometheus docker tag to v3.8.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1716](https://redirect.github.com/prometheus/client_java/pull/1716) - chore(deps): update otel/opentelemetry-collector-contrib:0.141.0 docker digest to [`b14234c`](https://redirect.github.com/prometheus/client_java/commit/b14234c) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1719](https://redirect.github.com/prometheus/client_java/pull/1719) - chore(deps): update actions/setup-java digest to [`f2beeb2`](https://redirect.github.com/prometheus/client_java/commit/f2beeb2) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1720](https://redirect.github.com/prometheus/client_java/pull/1720) - chore(deps): update dependency com.uber.nullaway:nullaway to v0.12.14 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1721](https://redirect.github.com/prometheus/client_java/pull/1721) - fix(deps): update jetty monorepo to v12.1.5 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1722](https://redirect.github.com/prometheus/client_java/pull/1722) - chore(deps): update dependency lychee to v0.22.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1723](https://redirect.github.com/prometheus/client_java/pull/1723) - chore(deps): update dependency mise to v2025.12.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1725](https://redirect.github.com/prometheus/client_java/pull/1725) - fix(deps): update protobuf monorepo by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1724](https://redirect.github.com/prometheus/client_java/pull/1724) - fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.15 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1726](https://redirect.github.com/prometheus/client_java/pull/1726) - chore(deps): update dependency org.mockito:mockito-core to v5.21.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1731](https://redirect.github.com/prometheus/client_java/pull/1731) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`f6b0925`](https://redirect.github.com/prometheus/client_java/commit/f6b0925) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1732](https://redirect.github.com/prometheus/client_java/pull/1732) - chore(deps): update actions/cache action to v5 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1736](https://redirect.github.com/prometheus/client_java/pull/1736) - chore(deps): update actions/cache digest to [`9255dc7`](https://redirect.github.com/prometheus/client_java/commit/9255dc7) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1737](https://redirect.github.com/prometheus/client_java/pull/1737) - chore(deps): update dependency mise to v2025.12.7 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1739](https://redirect.github.com/prometheus/client_java/pull/1739) - chore(deps): update dependency org.testcontainers:junit-jupiter to v1.21.4 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1740](https://redirect.github.com/prometheus/client_java/pull/1740) - chore(deps): update super-linter/super-linter action to v8.3.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1743](https://redirect.github.com/prometheus/client_java/pull/1743) - chore(deps): update prom/prometheus docker tag to v3.8.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1742](https://redirect.github.com/prometheus/client_java/pull/1742) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.142.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1741](https://redirect.github.com/prometheus/client_java/pull/1741) - chore(deps): update grafana/grafana docker tag to v12.3.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1745](https://redirect.github.com/prometheus/client_java/pull/1745) - chore(deps): update dependency maven to v3.9.12 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1744](https://redirect.github.com/prometheus/client_java/pull/1744) - fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4.0.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1746](https://redirect.github.com/prometheus/client_java/pull/1746) - chore(deps): update grafana/grafana:12.3.1 docker digest to [`2175aaa`](https://redirect.github.com/prometheus/client_java/commit/2175aaa) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1747](https://redirect.github.com/prometheus/client_java/pull/1747) - chore(deps): update module go:github.com/gohugoio/hugo to v0.153.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1748](https://redirect.github.com/prometheus/client_java/pull/1748) - chore(deps): update dependency com.uber.nullaway:nullaway to v0.12.15 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1749](https://redirect.github.com/prometheus/client_java/pull/1749) - chore(deps): update module go:github.com/gohugoio/hugo to v0.153.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1750](https://redirect.github.com/prometheus/client_java/pull/1750) - chore(deps): update dependency org.codehaus.mojo:exec-maven-plugin to v3.6.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1751](https://redirect.github.com/prometheus/client_java/pull/1751) - chore(deps): update dependency mise to v2025.12.12 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1752](https://redirect.github.com/prometheus/client_java/pull/1752) - chore(deps): update module go:github.com/gohugoio/hugo to v0.153.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1753](https://redirect.github.com/prometheus/client_java/pull/1753) - chore(deps): update super-linter/super-linter action to v8.3.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1754](https://redirect.github.com/prometheus/client_java/pull/1754) - chore(deps): update module go:github.com/gohugoio/hugo to v0.153.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1756](https://redirect.github.com/prometheus/client_java/pull/1756) - chore(deps): update module go:github.com/gohugoio/hugo to v0.153.4 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1757](https://redirect.github.com/prometheus/client_java/pull/1757) - chore(deps): update module go:github.com/gohugoio/hugo to v0.153.5 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1758](https://redirect.github.com/prometheus/client_java/pull/1758) - chore(deps): update module go:github.com/gohugoio/hugo to v0.154.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1759](https://redirect.github.com/prometheus/client_java/pull/1759) - chore(deps): update module go:github.com/gohugoio/hugo to v0.154.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1760](https://redirect.github.com/prometheus/client_java/pull/1760) - chore(deps): update dependency mise to v2025.12.13 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1761](https://redirect.github.com/prometheus/client_java/pull/1761) - chore(deps): update grafana/k6 docker digest to [`a7c79af`](https://redirect.github.com/prometheus/client_java/commit/a7c79af) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1763](https://redirect.github.com/prometheus/client_java/pull/1763) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.143.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1765](https://redirect.github.com/prometheus/client_java/pull/1765) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.143.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1767](https://redirect.github.com/prometheus/client_java/pull/1767) - fix(deps): update junit-framework monorepo to v6.0.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1764](https://redirect.github.com/prometheus/client_java/pull/1764) - chore(deps): update prom/prometheus docker tag to v3.9.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1768](https://redirect.github.com/prometheus/client_java/pull/1768) - chore(deps): update module go:github.com/gohugoio/hugo to v0.154.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1766](https://redirect.github.com/prometheus/client_java/pull/1766) - chore(deps): update prom/prometheus docker tag to v3.9.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1770](https://redirect.github.com/prometheus/client_java/pull/1770) - chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.10.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1771](https://redirect.github.com/prometheus/client_java/pull/1771) - chore(deps): update dependency com.google.errorprone:error\_prone\_core to v2.46.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1773](https://redirect.github.com/prometheus/client_java/pull/1773) - chore(deps): update module go:github.com/gohugoio/hugo to v0.154.4 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1775](https://redirect.github.com/prometheus/client_java/pull/1775) - chore(deps): update dependency mise to v2026 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1777](https://redirect.github.com/prometheus/client_java/pull/1777) - chore(deps): update module go:github.com/gohugoio/hugo to v0.154.5 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1776](https://redirect.github.com/prometheus/client_java/pull/1776) - fix(deps): update protobuf monorepo by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1774](https://redirect.github.com/prometheus/client_java/pull/1774) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`968f191`](https://redirect.github.com/prometheus/client_java/commit/968f191) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1779](https://redirect.github.com/prometheus/client_java/pull/1779) - fix(deps): update protobuf monorepo by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1778](https://redirect.github.com/prometheus/client_java/pull/1778) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`96bccca`](https://redirect.github.com/prometheus/client_java/commit/96bccca) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1782](https://redirect.github.com/prometheus/client_java/pull/1782) - chore(deps): update dependency org.codehaus.mojo:versions-maven-plugin to v2.21.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1786](https://redirect.github.com/prometheus/client_java/pull/1786) - chore(deps): update dependency mise to v2026.1.4 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1785](https://redirect.github.com/prometheus/client_java/pull/1785) - chore(deps): update jdx/mise-action action to v3.6.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1784](https://redirect.github.com/prometheus/client_java/pull/1784) - chore(deps): update actions/cache action to v5.0.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1788](https://redirect.github.com/prometheus/client_java/pull/1788) - chore(deps): update grafana/tempo docker tag to v2.9.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1789](https://redirect.github.com/prometheus/client_java/pull/1789) - chore(deps): update eclipse-temurin:25.0.1\_8-jre docker digest to [`9d1d306`](https://redirect.github.com/prometheus/client_java/commit/9d1d306) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1790](https://redirect.github.com/prometheus/client_java/pull/1790) - chore(deps): update jdx/mise-action action to v3.6.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1791](https://redirect.github.com/prometheus/client_java/pull/1791) - chore(deps): update dependency com.uber.nullaway:nullaway to v0.13.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1792](https://redirect.github.com/prometheus/client_java/pull/1792) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.144.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1793](https://redirect.github.com/prometheus/client_java/pull/1793) - chore(deps): update actions/setup-java digest to [`be666c2`](https://redirect.github.com/prometheus/client_java/commit/be666c2) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1796](https://redirect.github.com/prometheus/client_java/pull/1796) - fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4.0.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1797](https://redirect.github.com/prometheus/client_java/pull/1797) - chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.2.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1799](https://redirect.github.com/prometheus/client_java/pull/1799) - chore(deps): update actions/checkout action to v6.0.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1798](https://redirect.github.com/prometheus/client_java/pull/1798) - chore(deps): update dependency org.assertj:assertj-core to v3.27.7 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1801](https://redirect.github.com/prometheus/client_java/pull/1801) - fix(deps): update dependency io.dropwizard.metrics:metrics-core to v4.2.38 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1805](https://redirect.github.com/prometheus/client_java/pull/1805) - chore(deps): update dependency mise to v2026.1.7 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1804](https://redirect.github.com/prometheus/client_java/pull/1804) - fix(deps): update dependency io.dropwizard.metrics5:metrics-core to v5.0.6 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1806](https://redirect.github.com/prometheus/client_java/pull/1806) - chore(deps): update dependency org.assertj:assertj-core to v3.27.7 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1807](https://redirect.github.com/prometheus/client_java/pull/1807) - chore(deps): update dependency java to v25.0.2+10.0.lts by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1813](https://redirect.github.com/prometheus/client_java/pull/1813) - chore(config): migrate Renovate config by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1815](https://redirect.github.com/prometheus/client_java/pull/1815) - fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.18 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1820](https://redirect.github.com/prometheus/client_java/pull/1820) - chore(deps): update grafana/tempo docker tag to v2.10.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1821](https://redirect.github.com/prometheus/client_java/pull/1821) - chore(deps): update dependency com.uber.nullaway:nullaway to v0.13.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1822](https://redirect.github.com/prometheus/client_java/pull/1822) - chore(deps): update grafana/grafana docker tag to v12.3.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1824](https://redirect.github.com/prometheus/client_java/pull/1824) - chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.2.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1825](https://redirect.github.com/prometheus/client_java/pull/1825) - chore(deps): update ghcr.io/super-linter/super-linter docker tag to v8.4.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1826](https://redirect.github.com/prometheus/client_java/pull/1826) - chore(deps): update module go:github.com/gohugoio/hugo to v0.155.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1831](https://redirect.github.com/prometheus/client_java/pull/1831) - chore(deps): update super-linter to v8.4.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1830](https://redirect.github.com/prometheus/client_java/pull/1830) - chore(deps): update actions/cache action to v5.0.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1833](https://redirect.github.com/prometheus/client_java/pull/1833) - fix(deps): update jetty monorepo to v12.1.6 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1837](https://redirect.github.com/prometheus/client_java/pull/1837) - chore(deps): update module go:github.com/gohugoio/hugo to v0.155.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1836](https://redirect.github.com/prometheus/client_java/pull/1836) - chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.15.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1839](https://redirect.github.com/prometheus/client_java/pull/1839) - chore(deps): update dependency mise to v2026.2.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1840](https://redirect.github.com/prometheus/client_java/pull/1840) - chore(deps): update module go:github.com/gohugoio/hugo to v0.155.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1841](https://redirect.github.com/prometheus/client_java/pull/1841) - chore(deps): update actions/checkout digest to [`de0fac2`](https://redirect.github.com/prometheus/client_java/commit/de0fac2) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1844](https://redirect.github.com/prometheus/client_java/pull/1844) - fix(deps): update protobuf monorepo by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1835](https://redirect.github.com/prometheus/client_java/pull/1835) - chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.145.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1849](https://redirect.github.com/prometheus/client_java/pull/1849) - chore(deps): update dependency com.google.errorprone:error\_prone\_core to v2.47.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1848](https://redirect.github.com/prometheus/client_java/pull/1848) - chore(deps): update eclipse-temurin docker tag to v25.0.2\_10-jre by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1853](https://redirect.github.com/prometheus/client_java/pull/1853) - chore(deps): update ghcr.io/super-linter/super-linter docker tag to v8.5.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1856](https://redirect.github.com/prometheus/client_java/pull/1856) - chore(deps): update eclipse-temurin:25.0.2\_10-jre docker digest to [`ad53b91`](https://redirect.github.com/prometheus/client_java/commit/ad53b91) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1857](https://redirect.github.com/prometheus/client_java/pull/1857) - chore(deps): update module go:github.com/gohugoio/hugo to v0.155.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1858](https://redirect.github.com/prometheus/client_java/pull/1858) - chore(deps): update dependency org.apache.maven.plugins:maven-dependency-plugin to v3.10.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1859](https://redirect.github.com/prometheus/client_java/pull/1859) - fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.24.0-alpha by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1863](https://redirect.github.com/prometheus/client_java/pull/1863) - chore(deps): update grafana/k6 docker digest to [`1d0ddce`](https://redirect.github.com/prometheus/client_java/commit/1d0ddce) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1864](https://redirect.github.com/prometheus/client_java/pull/1864) - chore(deps): update eclipse-temurin:25.0.2\_10-jre docker digest to [`43a7b50`](https://redirect.github.com/prometheus/client_java/commit/43a7b50) by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1867](https://redirect.github.com/prometheus/client_java/pull/1867) - chore(deps): update module go:github.com/grafana/oats to v0.6.1 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1869](https://redirect.github.com/prometheus/client_java/pull/1869) - chore(deps): update grafana/grafana docker tag to v12.3.3 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1870](https://redirect.github.com/prometheus/client_java/pull/1870) - fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.25.0-alpha by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1871](https://redirect.github.com/prometheus/client_java/pull/1871) - fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.25.0-alpha by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​1872](https://redirect.github.com/prometheus/client_java/pull/1872) ##### New Contributors - [@​Myllyenko](https://redirect.github.com/Myllyenko) made their first contribution in [#​1691](https://redirect.github.com/prometheus/client_java/pull/1691) - [@​Donnerbart](https://redirect.github.com/Donnerbart) made their first contribution in [#​1735](https://redirect.github.com/prometheus/client_java/pull/1735) - [@​sibasispadhi](https://redirect.github.com/sibasispadhi) made their first contribution in [#​1769](https://redirect.github.com/prometheus/client_java/pull/1769) - [@​jack-berg](https://redirect.github.com/jack-berg) made their first contribution in [#​1794](https://redirect.github.com/prometheus/client_java/pull/1794) **Full Changelog**:
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-custom-buckets/pom.xml | 2 +- .../example-greeting-service/pom.xml | 2 +- .../example-hello-world-app/pom.xml | 2 +- examples/example-exporter-httpserver/pom.xml | 2 +- examples/example-exporter-multi-target/pom.xml | 2 +- examples/example-exporter-opentelemetry/pom.xml | 2 +- examples/example-exporter-servlet-tomcat/pom.xml | 2 +- examples/example-native-histogram/pom.xml | 2 +- examples/example-otel-jvm-runtime-metrics/pom.xml | 2 +- examples/example-prometheus-properties/pom.xml | 2 +- examples/example-simpleclient-bridge/pom.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/example-custom-buckets/pom.xml b/examples/example-custom-buckets/pom.xml index 52ae60627..ca4c52843 100644 --- a/examples/example-custom-buckets/pom.xml +++ b/examples/example-custom-buckets/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml index 532b7290b..8621a7e19 100644 --- a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml @@ -24,7 +24,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml index 4c1702bbe..df861667f 100644 --- a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml @@ -24,7 +24,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-exporter-httpserver/pom.xml b/examples/example-exporter-httpserver/pom.xml index ac9ed5e10..7160339ad 100644 --- a/examples/example-exporter-httpserver/pom.xml +++ b/examples/example-exporter-httpserver/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-exporter-multi-target/pom.xml b/examples/example-exporter-multi-target/pom.xml index 3b736ae36..e5ee1bf83 100644 --- a/examples/example-exporter-multi-target/pom.xml +++ b/examples/example-exporter-multi-target/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-exporter-opentelemetry/pom.xml b/examples/example-exporter-opentelemetry/pom.xml index a94e82ce4..7c7501a57 100644 --- a/examples/example-exporter-opentelemetry/pom.xml +++ b/examples/example-exporter-opentelemetry/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-exporter-servlet-tomcat/pom.xml b/examples/example-exporter-servlet-tomcat/pom.xml index 65b91b5ed..ab5ba0198 100644 --- a/examples/example-exporter-servlet-tomcat/pom.xml +++ b/examples/example-exporter-servlet-tomcat/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-native-histogram/pom.xml b/examples/example-native-histogram/pom.xml index eedadf6fe..7d799cc52 100644 --- a/examples/example-native-histogram/pom.xml +++ b/examples/example-native-histogram/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-otel-jvm-runtime-metrics/pom.xml b/examples/example-otel-jvm-runtime-metrics/pom.xml index 17aa53a99..58869bfd7 100644 --- a/examples/example-otel-jvm-runtime-metrics/pom.xml +++ b/examples/example-otel-jvm-runtime-metrics/pom.xml @@ -23,7 +23,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-prometheus-properties/pom.xml b/examples/example-prometheus-properties/pom.xml index ac0279853..bedd517f7 100644 --- a/examples/example-prometheus-properties/pom.xml +++ b/examples/example-prometheus-properties/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import diff --git a/examples/example-simpleclient-bridge/pom.xml b/examples/example-simpleclient-bridge/pom.xml index 82459eb0c..d0edb60cf 100644 --- a/examples/example-simpleclient-bridge/pom.xml +++ b/examples/example-simpleclient-bridge/pom.xml @@ -22,7 +22,7 @@ io.prometheus prometheus-metrics-bom - 1.5.0-SNAPSHOT + 1.5.0 pom import From bcec4c72721c03f05b5999e208f51ad6af4c6df7 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Sat, 14 Feb 2026 10:22:45 +0100 Subject: [PATCH 095/110] Pin super-linter script to specific commit (#1879) ## Summary - Pin the remote `super-linter.sh` URL to commit `f5d39ffaf01b5bbe815b3821e4e3257db32f49e7` to avoid unexpected breakage from upstream changes ## Test plan - [ ] Verify `mise run lint:super-linter` still works correctly Signed-off-by: Gregor Zeitlinger --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index f539b797e..97c7d96a7 100644 --- a/mise.toml +++ b/mise.toml @@ -49,7 +49,7 @@ run = "./mvnw install -DskipTests -Dcoverage.skip=true" [tasks."lint:super-linter"] description = "Run Super-Linter with auto-fix on the repository" -file = "https://raw.githubusercontent.com/grafana/docker-otel-lgtm/main/.mise/tasks/lint/super-linter.sh" +file = "https://raw.githubusercontent.com/grafana/docker-otel-lgtm/f5d39ffaf01b5bbe815b3821e4e3257db32f49e7/.mise/tasks/lint/super-linter.sh" [tasks."lint:links"] file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/links.sh" From 05ad751a40053f11eae90b9e6cbd741814ca71a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Feb 2026 14:09:14 +0000 Subject: [PATCH 096/110] fix(deps): update junit-framework monorepo to v6.0.3 (#1880) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | `6.0.2` โ†’ `6.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit:junit-bom/6.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit:junit-bom/6.0.2/6.0.3?slim=true) | | [org.junit.jupiter:junit-jupiter-params](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | `6.0.2` โ†’ `6.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.jupiter:junit-jupiter-params/6.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.jupiter:junit-jupiter-params/6.0.2/6.0.3?slim=true) | | [org.junit.jupiter:junit-jupiter](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | `6.0.2` โ†’ `6.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.jupiter:junit-jupiter/6.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.jupiter:junit-jupiter/6.0.2/6.0.3?slim=true) | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- integration-tests/it-spring-boot-smoke-test/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index 631d0ac32..e8092cce8 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -22,7 +22,7 @@
    25 - 6.0.2 + 6.0.3 diff --git a/pom.xml b/pom.xml index 7373a2cdb..5b6bd34fc 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ --module-name-need-to-be-overridden-- 4.33.5 33.5.0-jre - 6.0.2 + 6.0.3 2.25.0-alpha 8 25 From 4b7cca3248fb2254d70678d7a8e7dabd200ba469 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 16 Feb 2026 07:33:27 +0100 Subject: [PATCH 097/110] Add release-please to automate releases Set up release-please with java release type and always-bump-patch versioning. This replaces the manual release process: release-please maintains a release PR, and merging it creates a tag that triggers the existing Maven Central deploy workflow. Remove bump_snapshot.py and set-version.sh scripts as release-please handles SNAPSHOT version bumps automatically. Signed-off-by: Gregor Zeitlinger --- .github/workflows/release-please.yml | 20 +++++++ .mise/tasks/bump_snapshot.py | 86 ---------------------------- .mise/tasks/set-version.sh | 18 ------ .release-please-config.json | 13 +++++ .release-please-manifest.json | 3 + CONTRIBUTING.md | 9 +++ RELEASING.md | 72 +++++++++++++---------- 7 files changed, 88 insertions(+), 133 deletions(-) create mode 100644 .github/workflows/release-please.yml delete mode 100755 .mise/tasks/bump_snapshot.py delete mode 100755 .mise/tasks/set-version.sh create mode 100644 .release-please-config.json create mode 100644 .release-please-manifest.json diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 000000000..f523b0d2d --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,20 @@ +--- +name: Release Please + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + if: ${{ github.repository == 'prometheus/client_java' }} + runs-on: ubuntu-24.04 + steps: + - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.mise/tasks/bump_snapshot.py b/.mise/tasks/bump_snapshot.py deleted file mode 100755 index 31db06a04..000000000 --- a/.mise/tasks/bump_snapshot.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python3 - -# [MISE] description="Bump the snapshot version in all pom.xml files" -# [MISE] alias="bump-snapshot" - -""" -Bump the SNAPSHOT version in all pom.xml files. - -By default, increments the minor version (e.g. X.Y.0 -> X.(Y+1).0). -An explicit version can be passed as argument: - mise run bump-snapshot 2.0.0-SNAPSHOT -""" - -import re -import sys -from pathlib import Path - -ROOT = Path(__file__).resolve().parents[2] # repo root -PARENT_POM = ROOT / "prometheus-metrics-parent" / "pom.xml" - - -def current_snapshot() -> str: - """Extract the current SNAPSHOT version from the parent pom.xml.""" - text = PARENT_POM.read_text(encoding="utf-8") - m = re.search( - r"io\.prometheus\s*" - r"client_java_parent\s*" - r"(\S+)", - text, - ) - if not m: - sys.exit("Could not find version in " + str(PARENT_POM)) - version = m.group(1) - if not version.endswith("-SNAPSHOT"): - sys.exit(f"Current version '{version}' is not a SNAPSHOT version") - return version - - -def next_minor(version: str) -> str: - """Increment the minor version: 1.5.0-SNAPSHOT -> 1.6.0-SNAPSHOT.""" - base = version.removesuffix("-SNAPSHOT") - parts = base.split(".") - if len(parts) != 3: - sys.exit(f"Expected three-part version, got '{base}'") - parts[1] = str(int(parts[1]) + 1) - parts[2] = "0" - return ".".join(parts) + "-SNAPSHOT" - - -def find_pom_files() -> list[Path]: - """Find all pom.xml files in the repository.""" - return sorted(ROOT.rglob("pom.xml")) - - -def main() -> None: - old_version = current_snapshot() - - if len(sys.argv) > 1: - new_version = sys.argv[1] - if not new_version.endswith("-SNAPSHOT"): - sys.exit(f"New version must end with -SNAPSHOT, got '{new_version}'") - else: - new_version = next_minor(old_version) - - if old_version == new_version: - sys.exit(f"Old and new version are the same: {old_version}") - - print(f"Bumping {old_version} -> {new_version}") - - updated_count = 0 - for pom in find_pom_files(): - content = pom.read_text(encoding="utf-8") - updated = content.replace(old_version, new_version) - if content != updated: - pom.write_text(updated, encoding="utf-8") - print(f" updated {pom.relative_to(ROOT)}") - updated_count += 1 - - if updated_count == 0: - sys.exit(f"No pom.xml files contain '{old_version}'") - - print(f"\nDone. {updated_count} pom.xml file(s) updated to {new_version}.") - - -if __name__ == "__main__": - main() diff --git a/.mise/tasks/set-version.sh b/.mise/tasks/set-version.sh deleted file mode 100755 index a5947e453..000000000 --- a/.mise/tasks/set-version.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -#MISE description="Update version in all pom.xml files" -#USAGE arg "" help="new version" - -set -euo pipefail - -PARENT_POM="prometheus-metrics-parent/pom.xml" -CURRENT_VERSION=$(sed -n 's/.*\(.*-SNAPSHOT\)<\/version>.*/\1/p' "$PARENT_POM" | head -1) - -if [[ -z "$CURRENT_VERSION" ]]; then - echo "ERROR: could not find SNAPSHOT version in $PARENT_POM" >&2 - exit 1 -fi - -# shellcheck disable=SC2154 # is set by mise -find . -name 'pom.xml' -exec \ - sed -i "s/${CURRENT_VERSION}<\/version>/$usage_version<\/version>/g" {} + diff --git a/.release-please-config.json b/.release-please-config.json new file mode 100644 index 000000000..131941946 --- /dev/null +++ b/.release-please-config.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "release-type": "java", + "versioning": "always-bump-patch", + "extra-files": [ + "prometheus-metrics-parent/pom.xml", + "integration-tests/it-spring-boot-smoke-test/pom.xml" + ] + } + } +} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 000000000..dd8fde779 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.5.0" +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 922aa5336..f27fdc257 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -56,6 +56,15 @@ or simply mise run compile ``` +## Version Numbers in Examples + +Example `pom.xml` files (under `examples/`) should reference the latest +**released** version, not a SNAPSHOT. After each release, Renovate +updates these versions automatically. + +Only use a SNAPSHOT version in an example when it demonstrates a new +feature that has not been released yet. + ## Updating the Protobuf Java Classes The generated protobuf `Metrics.java` lives in a versioned package diff --git a/RELEASING.md b/RELEASING.md index 35a2e3185..25f2d59a5 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,44 +1,58 @@ # Releasing Instructions for Prometheus Java Client -## Before the Release +Releases are automated via +[release-please](https://github.com/googleapis/release-please). -If there have been significant changes since the last release, update the -benchmarks before creating a new release: +## How It Works -```shell -mise run update-benchmarks -``` +1. Commits to `main` using + [Conventional Commits](https://www.conventionalcommits.org/) are + tracked by release-please. +2. Release-please maintains a release PR that accumulates changes and + updates the changelog. +3. When the release PR is merged, release-please creates a GitHub + release and a `vX.Y.Z` tag. +4. The tag triggers the existing `release.yml` workflow, which deploys + to Maven Central. +5. After tagging, release-please opens a follow-up PR to bump the + SNAPSHOT version in all `pom.xml` files. -## Create a Release +## Patch Release (default) -1. Go to -2. Click on "Choose a tag", enter the tag name (e.g. `v0.1.0`), and click "Create a new tag". -3. Click on "Generate release notes" to auto-generate the release notes based on the commits since - the last release. -4. Click on "Publish release". +Simply merge the release PR โ€” release-please bumps the patch version +by default (e.g. `1.5.0` -> `1.5.1`). -## Major or minor release +## Minor or Major Release -After the release is created, bump the snapshot version in all -`pom.xml` files: +Add a `release-as: X.Y.0` footer to any commit on `main`: -```shell -# Auto-increment the minor version (e.g. 1.5.0-SNAPSHOT -> 1.6.0-SNAPSHOT) -mise run bump-snapshot +```text +feat: add new feature + +release-as: 1.6.0 +``` -# Or specify an explicit version (e.g. for a major bump) -mise run bump-snapshot 2.0.0-SNAPSHOT +Alternatively, edit the release PR title to +`chore(main): release 1.6.0`. + +## Before the Release + +If there have been significant changes since the last release, update +the benchmarks before merging the release PR: + +```shell +mise run update-benchmarks ``` -## If the GPG key expired +## If the GPG Key Expired 1. Generate a new key: -2. Distribute the - key: -3. use `gpg --armor --export-secret-keys YOUR_ID` to - export ([docs](https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#gpg)) -4. Update the - passphrase: -5. Update the GPG - key: +2. Distribute the key: + +3. Use `gpg --armor --export-secret-keys YOUR_ID` to export + ([docs](https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#gpg)) +4. Update the passphrase: + +5. Update the GPG key: + From c050435a4153046c72d158991c4c8e064dfb24ec Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 16 Feb 2026 18:27:07 +0100 Subject: [PATCH 098/110] fix: inline set-version logic in build-release.sh (#1884) ## Summary - `set-version.sh` was deleted in 4b7cca32 but `build-release.sh` still called `mise run set-version`, breaking `mise run build-release` and the `test-release-build.yml` CI workflow - Inlines the version-setting logic (find+sed across all pom.xml files) directly into `build-release.sh` ## Test plan - [x] `mise run build` passes - [x] `mise run build-release` passes (previously failed with missing task error) Signed-off-by: Gregor Zeitlinger --- .mise/tasks/build-release.sh | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.mise/tasks/build-release.sh b/.mise/tasks/build-release.sh index b7c18d513..9ddb48e53 100755 --- a/.mise/tasks/build-release.sh +++ b/.mise/tasks/build-release.sh @@ -5,17 +5,18 @@ set -euo pipefail -# shellcheck disable=SC2154 # is set by mise -if [[ -z "${usage_tag:-}" ]]; then - PARENT_POM="prometheus-metrics-parent/pom.xml" - usage_tag=$(sed -n 's/.*\(.*-SNAPSHOT\)<\/version>.*/\1/p' "$PARENT_POM" | head -1) - if [[ -z "$usage_tag" ]]; then - echo "ERROR: could not find SNAPSHOT version in $PARENT_POM" >&2 - exit 1 - fi +PARENT_POM="prometheus-metrics-parent/pom.xml" +CURRENT_VERSION=$(sed -n 's/.*\(.*-SNAPSHOT\)<\/version>.*/\1/p' "$PARENT_POM" | head -1) + +if [[ -z "$CURRENT_VERSION" ]]; then + echo "ERROR: could not find SNAPSHOT version in $PARENT_POM" >&2 + exit 1 fi -VERSION=${usage_tag#v} +# shellcheck disable=SC2154 # is set by mise +VERSION=${usage_tag:-$CURRENT_VERSION} +VERSION=${VERSION#v} -mise run set-version "$VERSION" +find . -name 'pom.xml' -exec \ + sed -i "s/${CURRENT_VERSION}<\/version>/${VERSION}<\/version>/g" {} + mvn -B package -P 'release,!default,!examples-and-integration-tests' -Dmaven.test.skip=true -Dgpg.skip=true From 4931b55aa9e6f8eca221bc433d4eb8714e3c24fc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Feb 2026 17:36:29 +0000 Subject: [PATCH 099/110] chore(deps): update grafana/k6 docker digest to 5e937f4 (#1881) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | grafana/k6 | digest | `1d0ddce` โ†’ `5e937f4` | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index 6c20e3999..c7d8979c0 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -68,7 +68,7 @@ services: - ./config/grafana-dashboards.yaml:/etc/grafana/provisioning/dashboards/grafana-dashboards.yaml - ./config/grafana-example-dashboard.json:/etc/grafana/example-dashboard.json k6: - image: grafana/k6@sha256:1d0ddceb1550725105e39d246a383a247b8607372ed63d2046cf9d6976487a85 + image: grafana/k6@sha256:5e937f439684142ba7803722b42e3c9ac9233cfa01d561de0596c1c2794fd680 network_mode: host volumes: - ./config/k6-script.js:/k6-script.js From 1b8f56d3f45188829752e0bf3a3558a9228999a5 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 16 Feb 2026 20:43:51 +0100 Subject: [PATCH 100/110] ci: replace linting setup with flint (#1883) ## Summary - Replace the custom super-linter setup with [flint](https://github.com/grafana/flint) v0.4.0, which provides shared, maintained lint tasks (super-linter, link checking, renovate-deps) - Use flint's Renovate shareable preset for custom managers instead of inline config - Remove manual URL remap step from lint workflow (now handled by flint's links.sh) - Add `lint:renovate-deps` task to verify tracked Renovate dependencies - Move release-please config and manifest into `.github/config/` - Add PR title linting workflow (`action-semantic-pull-request`) ## Test plan - [ ] CI passes (lint, build, tests) - [ ] Release-please workflow still triggers correctly with moved config - [ ] PR title lint workflow runs on new PRs --------- Signed-off-by: Gregor Zeitlinger --- .editorconfig | 4 +- .../config/.release-please-manifest.json | 0 .../config/release-please-config.json | 0 .github/renovate-tracked-deps.json | 560 ++++++++++++++++++ .github/renovate.json5 | 11 +- .github/workflows/lint-rest.yml | 34 -- .github/workflows/lint.yml | 31 + .github/workflows/pr-title.yml | 18 + .github/workflows/release-please.yml | 3 + .github/workflows/super-linter.yml | 23 - .mise/tasks/lint/bom.py | 3 - CLAUDE.md | 7 +- CONTRIBUTING.md | 6 +- mise.toml | 43 +- 14 files changed, 643 insertions(+), 100 deletions(-) rename .release-please-manifest.json => .github/config/.release-please-manifest.json (100%) rename .release-please-config.json => .github/config/release-please-config.json (100%) create mode 100644 .github/renovate-tracked-deps.json delete mode 100644 .github/workflows/lint-rest.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/pr-title.yml delete mode 100644 .github/workflows/super-linter.yml diff --git a/.editorconfig b/.editorconfig index 8bf486f51..80219f95e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,7 +7,7 @@ indent_size = 2 [{version-rules.xml,maven-wrapper.properties,checkstyle.xml,docker-compose.yaml,docker-compose.yml,Dockerfile,example_target_info.json,mise.toml,mvnm,mvnw.cmd,generate-protobuf.sh,.gitleaksignore,prometheus.properties}] max_line_length = 200 -[{grafana-dashboard-*.json,.editorconfig,super-linter.env,renovate.json5}] +[{grafana-dashboard-*.json,.editorconfig,super-linter.env,lychee.toml,renovate.json5}] max_line_length = 300 [pom.xml] @@ -18,5 +18,5 @@ max_line_length = 120 indent_size = 4 max_line_length = 120 -[{.mise/tasks/build-release.sh,.mise/tasks/lint/super-linter.sh,.mise/tasks/lint/links-in-modified-files.sh,.github/workflows/multi-version-test.yml,.github/workflows/lint-rest.yml}] +[{.mise/tasks/build-release.sh,.github/workflows/multi-version-test.yml}] max_line_length = 200 diff --git a/.release-please-manifest.json b/.github/config/.release-please-manifest.json similarity index 100% rename from .release-please-manifest.json rename to .github/config/.release-please-manifest.json diff --git a/.release-please-config.json b/.github/config/release-please-config.json similarity index 100% rename from .release-please-config.json rename to .github/config/release-please-config.json diff --git a/.github/renovate-tracked-deps.json b/.github/renovate-tracked-deps.json new file mode 100644 index 000000000..d3089ecb7 --- /dev/null +++ b/.github/renovate-tracked-deps.json @@ -0,0 +1,560 @@ +{ + ".github/renovate.json5": { + "renovate-config-presets": ["grafana/flint"] + }, + ".mise/envs/native/mise.toml": { + "mise": ["java"] + }, + ".mvn/wrapper/maven-wrapper.properties": { + "maven-wrapper": ["maven"] + }, + "benchmarks/pom.xml": { + "maven": [ + "com.codahale.metrics:metrics-core", + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exposition-textformats", + "io.prometheus:simpleclient", + "org.openjdk.jmh:jmh-core", + "org.openjdk.jmh:jmh-generator-annprocess" + ] + }, + "integration-tests/it-common/pom.xml": { + "maven": [ + "io.prometheus:integration-tests", + "io.prometheus:prometheus-metrics-exposition-formats" + ] + }, + "integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml": { + "maven": [ + "io.prometheus:it-exporter", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-httpserver" + ] + }, + "integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml": { + "maven": [ + "io.prometheus:it-exporter", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-httpserver" + ] + }, + "integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml": { + "maven": [ + "io.prometheus:it-exporter", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-httpserver" + ] + }, + "integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml": { + "maven": [ + "io.prometheus:it-exporter", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-servlet-jakarta", + "org.eclipse.jetty.ee10:jetty-ee10-servlet", + "org.eclipse.jetty:jetty-server" + ] + }, + "integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml": { + "maven": [ + "io.prometheus:it-exporter", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-servlet-jakarta", + "org.apache.tomcat.embed:tomcat-embed-core" + ] + }, + "integration-tests/it-exporter/it-exporter-test/pom.xml": { + "maven": ["io.prometheus:it-common", "io.prometheus:it-exporter"] + }, + "integration-tests/it-exporter/it-no-protobuf-test/pom.xml": { + "maven": ["io.prometheus:it-common", "io.prometheus:it-exporter"] + }, + "integration-tests/it-exporter/pom.xml": { + "maven": ["io.prometheus:integration-tests"] + }, + "integration-tests/it-pushgateway/pom.xml": { + "maven": [ + "com.jayway.jsonpath:json-path", + "com.squareup.okhttp:okhttp", + "io.prometheus:integration-tests", + "io.prometheus:it-common", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-pushgateway" + ] + }, + "integration-tests/it-spring-boot-smoke-test/pom.xml": { + "maven": [ + "com.diffplug.spotless:spotless-maven-plugin", + "io.prometheus:it-common", + "io.prometheus:prometheus-metrics-bom", + "org.junit:junit-bom", + "org.springframework.boot:spring-boot-starter-parent" + ] + }, + "integration-tests/pom.xml": { + "maven": [ + "commons-io:commons-io", + "io.prometheus:client_java", + "org.testcontainers:junit-jupiter" + ] + }, + "mise.toml": { + "mise": [ + "go:github.com/gohugoio/hugo", + "go:github.com/grafana/oats", + "java", + "lychee", + "node", + "npm:renovate", + "protoc" + ], + "regex": ["ghcr.io/super-linter/super-linter", "grafana/flint"] + }, + "mvnw": { + "maven-wrapper": ["maven-wrapper"] + }, + "mvnw.cmd": { + "maven-wrapper": ["maven-wrapper"] + }, + "pom.xml": { + "maven": [ + "com.google.code.findbugs:jsr305", + "com.google.errorprone:error_prone_core", + "com.google.guava:guava", + "com.google.protobuf:protobuf-java", + "com.uber.nullaway:nullaway", + "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha", + "io.opentelemetry:opentelemetry-proto", + "io.prometheus:client_java_parent", + "org.apache.felix:maven-bundle-plugin", + "org.apache.maven.plugins:maven-checkstyle-plugin", + "org.apache.maven.plugins:maven-clean-plugin", + "org.apache.maven.plugins:maven-compiler-plugin", + "org.apache.maven.plugins:maven-dependency-plugin", + "org.apache.maven.plugins:maven-deploy-plugin", + "org.apache.maven.plugins:maven-enforcer-plugin", + "org.apache.maven.plugins:maven-failsafe-plugin", + "org.apache.maven.plugins:maven-install-plugin", + "org.apache.maven.plugins:maven-jar-plugin", + "org.apache.maven.plugins:maven-javadoc-plugin", + "org.apache.maven.plugins:maven-resources-plugin", + "org.apache.maven.plugins:maven-shade-plugin", + "org.apache.maven.plugins:maven-site-plugin", + "org.apache.maven.plugins:maven-surefire-plugin", + "org.assertj:assertj-core", + "org.awaitility:awaitility", + "org.codehaus.mojo:build-helper-maven-plugin", + "org.codehaus.mojo:exec-maven-plugin", + "org.codehaus.mojo:versions-maven-plugin", + "org.jacoco:jacoco-maven-plugin", + "org.junit-pioneer:junit-pioneer", + "org.junit.jupiter:junit-jupiter", + "org.junit.jupiter:junit-jupiter-params", + "org.junit:junit-bom", + "org.mockito:mockito-core", + "org.slf4j:slf4j-simple", + "org.wiremock:wiremock" + ] + }, + "prometheus-metrics-bom/pom.xml": { + "maven": [ + "io.prometheus:client_java_parent", + "io.prometheus:prometheus-metrics-config", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-common", + "io.prometheus:prometheus-metrics-exporter-httpserver", + "io.prometheus:prometheus-metrics-exporter-opentelemetry", + "io.prometheus:prometheus-metrics-exporter-opentelemetry-no-otel", + "io.prometheus:prometheus-metrics-exporter-opentelemetry-otel-agent-resources", + "io.prometheus:prometheus-metrics-exporter-pushgateway", + "io.prometheus:prometheus-metrics-exporter-servlet-jakarta", + "io.prometheus:prometheus-metrics-exporter-servlet-javax", + "io.prometheus:prometheus-metrics-exposition-formats", + "io.prometheus:prometheus-metrics-exposition-formats-no-protobuf", + "io.prometheus:prometheus-metrics-exposition-textformats", + "io.prometheus:prometheus-metrics-instrumentation-caffeine", + "io.prometheus:prometheus-metrics-instrumentation-dropwizard", + "io.prometheus:prometheus-metrics-instrumentation-dropwizard5", + "io.prometheus:prometheus-metrics-instrumentation-guava", + "io.prometheus:prometheus-metrics-instrumentation-jvm", + "io.prometheus:prometheus-metrics-model", + "io.prometheus:prometheus-metrics-otel-support", + "io.prometheus:prometheus-metrics-simpleclient-bridge", + "io.prometheus:prometheus-metrics-tracer", + "io.prometheus:prometheus-metrics-tracer-common", + "io.prometheus:prometheus-metrics-tracer-initializer", + "io.prometheus:prometheus-metrics-tracer-otel", + "io.prometheus:prometheus-metrics-tracer-otel-agent" + ] + }, + "prometheus-metrics-config/pom.xml": { + "maven": ["io.prometheus:client_java"] + }, + "prometheus-metrics-core/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-config", + "io.prometheus:prometheus-metrics-exposition-formats-no-protobuf", + "io.prometheus:prometheus-metrics-model", + "io.prometheus:prometheus-metrics-tracer-initializer", + "org.apache.commons:commons-math3" + ] + }, + "prometheus-metrics-exporter-common/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exposition-formats", + "io.prometheus:prometheus-metrics-exposition-textformats", + "io.prometheus:prometheus-metrics-model" + ] + }, + "prometheus-metrics-exporter-httpserver/pom.xml": { + "maven": ["io.prometheus:client_java", "io.prometheus:prometheus-metrics-exporter-common"] + }, + "prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml": { + "maven": [ + "io.opentelemetry:opentelemetry-api", + "io.opentelemetry:opentelemetry-context", + "io.prometheus:client_java" + ] + }, + "prometheus-metrics-exporter-opentelemetry-shaded/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-opentelemetry-otel-agent-resources" + ] + }, + "prometheus-metrics-exporter-opentelemetry/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-opentelemetry-otel-agent-resources" + ] + }, + "prometheus-metrics-exporter-pushgateway/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-common", + "org.mock-server:mockserver-netty-no-dependencies" + ] + }, + "prometheus-metrics-exporter-servlet-jakarta/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-common", + "jakarta.servlet:jakarta.servlet-api" + ] + }, + "prometheus-metrics-exporter-servlet-javax/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-common", + "javax.servlet:javax.servlet-api" + ] + }, + "prometheus-metrics-exposition-formats-shaded/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-exposition-textformats" + ] + }, + "prometheus-metrics-exposition-formats/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-exposition-textformats" + ] + }, + "prometheus-metrics-exposition-textformats/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-config", + "io.prometheus:prometheus-metrics-model" + ] + }, + "prometheus-metrics-instrumentation-caffeine/pom.xml": { + "maven": [ + "com.github.ben-manes.caffeine:caffeine", + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exposition-textformats" + ] + }, + "prometheus-metrics-instrumentation-dropwizard/pom.xml": { + "maven": [ + "io.dropwizard.metrics:metrics-core", + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-httpserver", + "io.prometheus:prometheus-metrics-exposition-textformats", + "io.prometheus:prometheus-metrics-instrumentation-dropwizard5" + ] + }, + "prometheus-metrics-instrumentation-dropwizard5/pom.xml": { + "maven": [ + "io.dropwizard.metrics5:metrics-core", + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-httpserver", + "io.prometheus:prometheus-metrics-exposition-textformats" + ] + }, + "prometheus-metrics-instrumentation-guava/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exposition-textformats" + ] + }, + "prometheus-metrics-instrumentation-jvm/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-core", + "io.prometheus:prometheus-metrics-exporter-httpserver", + "io.prometheus:prometheus-metrics-exposition-textformats" + ] + }, + "prometheus-metrics-model/pom.xml": { + "maven": ["io.prometheus:client_java", "io.prometheus:prometheus-metrics-config"] + }, + "prometheus-metrics-otel-support/pom.xml": { + "maven": ["io.prometheus:client_java"] + }, + "prometheus-metrics-parent/pom.xml": { + "maven": [ + "com.diffplug.spotless:spotless-maven-plugin", + "org.apache.maven.plugins:maven-gpg-plugin", + "org.apache.maven.plugins:maven-source-plugin", + "org.sonatype.central:central-publishing-maven-plugin" + ] + }, + "prometheus-metrics-simpleclient-bridge/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:prometheus-metrics-config", + "io.prometheus:prometheus-metrics-exposition-textformats", + "io.prometheus:prometheus-metrics-model", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common" + ] + }, + "prometheus-metrics-tracer/pom.xml": { + "maven": ["io.prometheus:client_java"] + }, + "prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml": { + "maven": ["io.prometheus:prometheus-metrics-tracer"] + }, + "prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml": { + "maven": [ + "io.prometheus:prometheus-metrics-tracer", + "io.prometheus:prometheus-metrics-tracer-common", + "io.prometheus:prometheus-metrics-tracer-otel", + "io.prometheus:prometheus-metrics-tracer-otel-agent" + ] + }, + "prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml": { + "maven": [ + "io.prometheus:prometheus-metrics-tracer", + "io.prometheus:prometheus-metrics-tracer-common" + ] + }, + "prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml": { + "maven": [ + "io.prometheus:prometheus-metrics-tracer", + "io.prometheus:prometheus-metrics-tracer-common" + ] + }, + "simpleclient-archive/integration_tests/it_common/pom.xml": { + "maven": ["io.prometheus:integration_tests"] + }, + "simpleclient-archive/integration_tests/it_exemplars_otel_agent/pom.xml": { + "maven": [ + "ch.qos.logback:logback-classic", + "io.prometheus:integration_tests", + "io.prometheus:it_common", + "io.prometheus:simpleclient_bom", + "io.prometheus:simpleclient_hotspot", + "io.prometheus:simpleclient_servlet", + "org.springframework.boot:spring-boot-dependencies", + "org.springframework.boot:spring-boot-maven-plugin" + ] + }, + "simpleclient-archive/integration_tests/it_exemplars_otel_sdk/pom.xml": { + "maven": [ + "io.opentelemetry:opentelemetry-api", + "io.opentelemetry:opentelemetry-sdk", + "io.prometheus:integration_tests", + "io.prometheus:it_common", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_httpserver" + ] + }, + "simpleclient-archive/integration_tests/it_java_versions/pom.xml": { + "maven": [ + "io.prometheus:integration_tests", + "io.prometheus:it_common", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_hotspot", + "io.prometheus:simpleclient_httpserver" + ] + }, + "simpleclient-archive/integration_tests/it_log4j2/pom.xml": { + "maven": [ + "io.prometheus:integration_tests", + "io.prometheus:it_common", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_httpserver", + "io.prometheus:simpleclient_log4j2", + "org.apache.logging.log4j:log4j-api", + "org.apache.logging.log4j:log4j-core" + ] + }, + "simpleclient-archive/integration_tests/it_pushgateway/pom.xml": { + "maven": [ + "ch.qos.logback:logback-classic", + "com.squareup.okhttp3:okhttp", + "io.prometheus:integration_tests", + "io.prometheus:it_common", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_pushgateway" + ] + }, + "simpleclient-archive/integration_tests/it_servlet_jakarta_exporter_webxml/pom.xml": { + "maven": [ + "ch.qos.logback:logback-classic", + "com.squareup.okhttp3:okhttp", + "io.prometheus:integration_tests", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_hotspot", + "io.prometheus:simpleclient_servlet_jakarta", + "jakarta.servlet:jakarta.servlet-api", + "org.apache.maven.plugins:maven-war-plugin" + ] + }, + "simpleclient-archive/integration_tests/pom.xml": { + "maven": [ + "ch.qos.logback:logback-classic", + "com.squareup.okhttp3:okhttp", + "io.prometheus:client_java", + "org.testcontainers:testcontainers" + ] + }, + "simpleclient-archive/simpleclient_graphite_bridge/pom.xml": { + "maven": ["io.prometheus:client_java", "io.prometheus:simpleclient"] + }, + "simpleclient-archive/simpleclient_hibernate/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "org.hibernate:hibernate-core" + ] + }, + "simpleclient-archive/simpleclient_httpserver/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common", + "javax.xml.bind:jaxb-api" + ] + }, + "simpleclient-archive/simpleclient_jetty/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "org.eclipse.jetty:jetty-server", + "org.eclipse.jetty:jetty-servlet", + "org.hamcrest:hamcrest-all" + ] + }, + "simpleclient-archive/simpleclient_jetty_jdk8/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "org.eclipse.jetty:jetty-server", + "org.eclipse.jetty:jetty-servlet", + "org.hamcrest:hamcrest-all" + ] + }, + "simpleclient-archive/simpleclient_log4j/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "org.apache.logging.log4j:log4j-1.2-api", + "org.apache.logging.log4j:log4j-core" + ] + }, + "simpleclient-archive/simpleclient_log4j2/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "org.apache.logging.log4j:log4j-core" + ] + }, + "simpleclient-archive/simpleclient_logback/pom.xml": { + "maven": [ + "ch.qos.logback:logback-classic", + "io.prometheus:client_java", + "io.prometheus:simpleclient" + ] + }, + "simpleclient-archive/simpleclient_servlet/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common", + "io.prometheus:simpleclient_servlet_common", + "javax.servlet:javax.servlet-api", + "org.eclipse.jetty:jetty-servlet" + ] + }, + "simpleclient-archive/simpleclient_servlet_common/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common" + ] + }, + "simpleclient-archive/simpleclient_servlet_jakarta/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common", + "io.prometheus:simpleclient_servlet_common", + "jakarta.servlet:jakarta.servlet-api", + "org.eclipse.jetty:jetty-servlet" + ] + }, + "simpleclient-archive/simpleclient_spring_web/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common", + "org.apache.commons:commons-lang3", + "org.aspectj:aspectjweaver", + "org.springframework:spring-aop", + "org.springframework:spring-context", + "org.springframework:spring-test", + "org.springframework:spring-web" + ] + }, + "simpleclient-archive/simpleclient_vertx/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common", + "io.vertx:vertx-web" + ] + }, + "simpleclient-archive/simpleclient_vertx4/pom.xml": { + "maven": [ + "io.prometheus:client_java", + "io.prometheus:simpleclient", + "io.prometheus:simpleclient_common", + "io.vertx:vertx-web" + ] + } +} diff --git a/.github/renovate.json5 b/.github/renovate.json5 index f3bad3c6f..ff4363ba5 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,6 +1,6 @@ { $schema: "https://docs.renovatebot.com/renovate-schema.json", - extends: ["config:best-practices", "config:recommended"], + extends: ["config:best-practices", "config:recommended", "github>grafana/flint"], platformCommit: "enabled", automerge: true, ignorePaths: [ @@ -33,12 +33,5 @@ matchPackageNames: ["/^io\\.prometheus:(examples|example-.+|integration-tests|it-.+)$/"], }, ], - customManagers: [ - { - customType: "regex", - description: "Update _VERSION variables in mise.toml", - managerFilePatterns: ["/^mise\\.toml$/"], - matchStrings: ['# renovate: datasource=(?[a-z-]+?)(?: depName=(?.+?))?(?: packageName=(?.+?))?(?: versioning=(?[a-z-]+?))?\\s.+?_VERSION="?(?[^@"]+?)(?:@(?sha256:[a-f0-9]+))?"?\\s'], - }, - ], + customManagers: [], } diff --git a/.github/workflows/lint-rest.yml b/.github/workflows/lint-rest.yml deleted file mode 100644 index b30c81443..000000000 --- a/.github/workflows/lint-rest.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: Lint What Super Linter Can't - -on: - pull_request: - -permissions: {} - -jobs: - lint: - permissions: - contents: read - runs-on: ubuntu-24.04 - steps: - - name: Check out - with: - persist-credentials: false - fetch-depth: 0 # needed for merge-base used in lint:links-in-modified-files - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - - - name: Remap main branch URLs to PR branch for link checking - env: - GITHUB_HEAD_REF: ${{ github.head_ref }} - PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }} - run: | - sed -i "/^remap = \[$/a\ \"https://github.com/prometheus/client_java/blob/main/(.*) https://github.com/${PR_HEAD_REPO}/blob/${GITHUB_HEAD_REF}/\$1\"," .github/config/lychee.toml - sed -i "/^remap = \[$/a\ \"https://github.com/prometheus/client_java/tree/main/(.*) https://github.com/${PR_HEAD_REPO}/tree/${GITHUB_HEAD_REF}/\$1\"," .github/config/lychee.toml - - - name: Lint for pull requests - env: - GITHUB_TOKEN: ${{ github.token }} - GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }} - run: mise run lint:rest-ci diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..c6a2575c1 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,31 @@ +--- +name: Lint + +on: + pull_request: + +permissions: {} + +jobs: + lint: + runs-on: ubuntu-24.04 + + permissions: + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + fetch-depth: 0 # needed for git diff --merge-base in lint:links + + - name: Setup mise + uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 + + - name: Lint + env: + GITHUB_TOKEN: ${{ github.token }} + GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }} + run: mise run lint diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml new file mode 100644 index 000000000..76a13e3df --- /dev/null +++ b/.github/workflows/pr-title.yml @@ -0,0 +1,18 @@ +--- +name: PR Title + +on: + pull_request: + types: + - opened + - edited +permissions: + pull-requests: read + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 + env: + GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index f523b0d2d..75cf34f16 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -16,5 +16,8 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0 + id: release-please with: token: ${{ secrets.GITHUB_TOKEN }} + config-file: .github/config/release-please-config.json + manifest-file: .github/config/.release-please-manifest.json diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml deleted file mode 100644 index 332221bf7..000000000 --- a/.github/workflows/super-linter.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Lint - -on: [pull_request] - -jobs: - lint: - runs-on: ubuntu-24.04 - - permissions: - contents: read - - steps: - - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - persist-credentials: false - fetch-depth: 0 - - - uses: jdx/mise-action@6d1e696aa24c1aa1bcc1adea0212707c71ab78a8 # v3.6.1 - - - name: Super-linter - run: mise run lint:super-linter --no-fix diff --git a/.mise/tasks/lint/bom.py b/.mise/tasks/lint/bom.py index bada5bc9f..d77b88e23 100755 --- a/.mise/tasks/lint/bom.py +++ b/.mise/tasks/lint/bom.py @@ -36,7 +36,6 @@ def add_dir(dir_path: Path, want: List[str]): raise FileNotFoundError(f"Directory {dir_path} does not exist.") if any(dir_path.name == ig for ig in IGNORE_DIRS): - print(f"Skipping {dir_path}") return pom = dir_path / "pom.xml" @@ -47,7 +46,6 @@ def add_dir(dir_path: Path, want: List[str]): if not artifact_id: raise RuntimeError(f"No artifactId found in {pom}") - print(f"Found artifactId '{artifact_id}' in {pom}") want.append(artifact_id) @@ -108,7 +106,6 @@ def main() -> int: sys.stdout.writelines(diff) return 1 else: - print("BOM file is up to date.") return 0 except Exception as e: diff --git a/CLAUDE.md b/CLAUDE.md index 406194944..3e5ed1592 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -91,7 +91,9 @@ Pre-built instrumentations: `prometheus-metrics-instrumentation-jvm`, `-caffeine ### Non-Java Files (Markdown, YAML, JSON, shell scripts, etc.) -- **ALWAYS** run `mise run lint:super-linter` after modifying non-Java files +- **ALWAYS** run `mise run lint` after modifying non-Java files + (runs super-linter + link checking + BOM check) +- `mise run fix` auto-fixes lint issues - Super-linter will **auto-fix** many issues (formatting, trailing whitespace, etc.) - It only reports ERROR-level issues (configured via `LOG_LEVEL=ERROR` in `.github/super-linter.env`) - Common issues caught: @@ -107,7 +109,8 @@ Pre-built instrumentations: `prometheus-metrics-instrumentation-jvm`, `-caffeine mise run build # After modifying non-Java files (run BEFORE committing) -mise run lint:super-linter +mise run lint +# or to auto-fix: mise run fix ``` ## Testing diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f27fdc257..2abbd91e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,11 @@ Run `./mvnw spotless:apply` to format the code (only changed files) before commi Or run all the linters: -`mise run lint:super-linter` +`mise run lint` + +To autofix linting issues: + +`mise run fix` ## Running Tests diff --git a/mise.toml b/mise.toml index 97c7d96a7..604ff36e2 100644 --- a/mise.toml +++ b/mise.toml @@ -3,9 +3,12 @@ "go:github.com/grafana/oats" = "0.6.1" java = "temurin-25.0.2+10.0.LTS" lychee = "0.23.0" +node = "24.13.1" +"npm:renovate" = "43.8.5" protoc = "33.5" [env] +RENOVATE_TRACKED_DEPS_EXCLUDE="github-actions,github-runners" # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter SUPER_LINTER_VERSION="v8.5.0@sha256:6831c0a801d353b510e4e468a3209a8a48bf0102e193d5c7e94e57667fdf64eb" @@ -47,38 +50,26 @@ run = "./mvnw verify" description = "build all modules without tests" run = "./mvnw install -DskipTests -Dcoverage.skip=true" +# Shared lint tasks from flint (https://github.com/grafana/flint) [tasks."lint:super-linter"] -description = "Run Super-Linter with auto-fix on the repository" -file = "https://raw.githubusercontent.com/grafana/docker-otel-lgtm/f5d39ffaf01b5bbe815b3821e4e3257db32f49e7/.mise/tasks/lint/super-linter.sh" +description = "Run Super-Linter on the repository" +file = "https://raw.githubusercontent.com/grafana/flint/986a4ca33894e67ac54363fe9c814432ffd6dd9b/tasks/lint/super-linter.sh" # v0.4.0 [tasks."lint:links"] -file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/links.sh" +description = "Lint links" +file = "https://raw.githubusercontent.com/grafana/flint/986a4ca33894e67ac54363fe9c814432ffd6dd9b/tasks/lint/links.sh" # v0.4.0 -[tasks."lint:local-links"] -file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/local-links.sh" +[tasks."lint:renovate-deps"] +description = "Verify renovate-tracked-deps.json is up to date" +file = "https://raw.githubusercontent.com/grafana/flint/986a4ca33894e67ac54363fe9c814432ffd6dd9b/tasks/lint/renovate-deps.py" # v0.4.0 -[tasks."lint:links-in-modified-files"] -file = "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/refs/heads/main/.mise/tasks/lint/links-in-modified-files.sh" +[tasks."lint"] +description = "Run all lints" +depends = ["lint:super-linter", "lint:links", "lint:bom", "lint:renovate-deps"] -[tasks."lint:links-in-modified-files-ci"] -description = "Lint links in modified files (CI configuration)" -run = "mise run lint:links-in-modified-files --base origin/$GITHUB_BASE_REF --head $GITHUB_HEAD_SHA" - -[tasks."lint:links-in-modified-files-local"] -description = "Lint links in modified files (local configuration)" -run = "mise run lint:links-in-modified-files --base origin/main --head HEAD" - -[tasks."lint:rest"] -description = "All lints not covered by super linter" -depends = ["lint:bom", "lint:local-links", "lint:links-in-modified-files-local"] - -[tasks."lint:rest-ci"] -description = "All lints not covered by super linter (CI configuration)" -depends = ["lint:bom", "lint:local-links", "lint:links-in-modified-files-ci"] - -[tasks."lint:all"] -description = "All lints" -depends = ["lint:rest", "lint:super-linter"] +[tasks.fix] +description = "Auto-fix lint issues" +run = "AUTOFIX=true mise run lint" [tasks.acceptance-test] description = "Run OATs acceptance tests" From 3d5494dc88404845d3fa672d42eefafe73a8dc76 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Feb 2026 12:37:19 +0000 Subject: [PATCH 101/110] chore(deps): update grafana/tempo docker tag to v2.10.1 (#1888) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | grafana/tempo | patch | `2.10.0` โ†’ `2.10.1` | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index c7d8979c0..cb9326e40 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -52,7 +52,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yaml tempo: - image: grafana/tempo:2.10.0@sha256:d7f4c72e0bad2b42b4e7263b0addaf3f5bbc105cec6b1917eba0aae3b9b70364 + image: grafana/tempo:2.10.1@sha256:9371af1b75b4e057eb77f22dc4dd4d9176cd6985e29f181527be6723b7f29c41 network_mode: host volumes: - ./config/tempo-config.yaml:/config.yaml From ca02dffde2405fdbe6142311eede38131d3f2e34 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 17 Feb 2026 13:37:41 +0100 Subject: [PATCH 102/110] chore(deps): update flint to v0.5.0 and use slim super-linter (#1887) ## Summary - Update flint from v0.4.0 to v0.5.0 - Switch from full Super-Linter image to the slim variant (~2 GB smaller), which excludes Rust, .NET/C#, PowerShell, and ARM template linters that this project doesn't use ## Test plan - [x] `mise run lint` passes locally Signed-off-by: Gregor Zeitlinger --- mise.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mise.toml b/mise.toml index 604ff36e2..44ce631a6 100644 --- a/mise.toml +++ b/mise.toml @@ -10,7 +10,7 @@ protoc = "33.5" [env] RENOVATE_TRACKED_DEPS_EXCLUDE="github-actions,github-runners" # renovate: datasource=docker depName=ghcr.io/super-linter/super-linter -SUPER_LINTER_VERSION="v8.5.0@sha256:6831c0a801d353b510e4e468a3209a8a48bf0102e193d5c7e94e57667fdf64eb" +SUPER_LINTER_VERSION="slim-v8.5.0@sha256:857dcc3f0bf5dd065fdeed1ace63394bb2004238a5ef02910ea23d9bcd8fd2b8" [tasks.ci] description = "CI Build" @@ -53,15 +53,15 @@ run = "./mvnw install -DskipTests -Dcoverage.skip=true" # Shared lint tasks from flint (https://github.com/grafana/flint) [tasks."lint:super-linter"] description = "Run Super-Linter on the repository" -file = "https://raw.githubusercontent.com/grafana/flint/986a4ca33894e67ac54363fe9c814432ffd6dd9b/tasks/lint/super-linter.sh" # v0.4.0 +file = "https://raw.githubusercontent.com/grafana/flint/79215390bdc8aa92f2c01e350062aa4bbbbf1858/tasks/lint/super-linter.sh" # v0.5.0 [tasks."lint:links"] description = "Lint links" -file = "https://raw.githubusercontent.com/grafana/flint/986a4ca33894e67ac54363fe9c814432ffd6dd9b/tasks/lint/links.sh" # v0.4.0 +file = "https://raw.githubusercontent.com/grafana/flint/79215390bdc8aa92f2c01e350062aa4bbbbf1858/tasks/lint/links.sh" # v0.5.0 [tasks."lint:renovate-deps"] description = "Verify renovate-tracked-deps.json is up to date" -file = "https://raw.githubusercontent.com/grafana/flint/986a4ca33894e67ac54363fe9c814432ffd6dd9b/tasks/lint/renovate-deps.py" # v0.4.0 +file = "https://raw.githubusercontent.com/grafana/flint/79215390bdc8aa92f2c01e350062aa4bbbbf1858/tasks/lint/renovate-deps.py" # v0.5.0 [tasks."lint"] description = "Run all lints" From 50937500b4cfa35825a4441860b256df819c918c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Feb 2026 12:39:22 +0000 Subject: [PATCH 103/110] chore(deps): update dependency grafana/flint to v0.5.0 (#1889) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [grafana/flint](https://redirect.github.com/grafana/flint) | minor | `v0.4.0` โ†’ `v0.5.0` | --- ### Release Notes
    grafana/flint (grafana/flint) ### [`v0.5.0`](https://redirect.github.com/grafana/flint/releases/tag/v0.5.0) [Compare Source](https://redirect.github.com/grafana/flint/compare/v0.4.0...v0.5.0) ##### Features - **super-linter:** default to slim image ([#​24](https://redirect.github.com/grafana/flint/issues/24)) ([c8eeab8](https://redirect.github.com/grafana/flint/commit/c8eeab82e5db39f0cf8b57a5ee7ac1fc7106a1b0))
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> From 4c19c7ec10f54370a5abde6ce734a5764fbe31d5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 09:32:37 +0000 Subject: [PATCH 104/110] chore(deps): update eclipse-temurin:25.0.2_10-jre docker digest to 0a9c973 (#1890) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | digest | `43a7b50` โ†’ `0a9c973` | | eclipse-temurin | | digest | `43a7b50` โ†’ `0a9c973` | --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-custom-buckets/docker-compose.yaml | 2 +- .../example-exporter-opentelemetry/oats-tests/agent/Dockerfile | 2 +- .../example-exporter-opentelemetry/oats-tests/http/Dockerfile | 2 +- examples/example-native-histogram/docker-compose.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml index 2afcf5b98..b024481af 100644 --- a/examples/example-custom-buckets/docker-compose.yaml +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b + image: eclipse-temurin:25.0.2_10-jre@sha256:0a9c973778b03b88f39ccae4f8cc26022d84a3237a818cb98770369eb6c5daf9 network_mode: host volumes: - ./target/example-custom-buckets.jar:/example-custom-buckets.jar diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile index cc1158e12..bc1adac60 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b +FROM eclipse-temurin:25.0.2_10-jre@sha256:0a9c973778b03b88f39ccae4f8cc26022d84a3237a818cb98770369eb6c5daf9 COPY target/example-exporter-opentelemetry.jar ./app.jar # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile index 0c7d64e55..763ba191f 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b +FROM eclipse-temurin:25.0.2_10-jre@sha256:0a9c973778b03b88f39ccae4f8cc26022d84a3237a818cb98770369eb6c5daf9 COPY target/example-exporter-opentelemetry.jar ./app.jar diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index b2f849844..492ce015f 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.2_10-jre@sha256:43a7b50abf8679d77d6d41d52072402a18312a47b4390864046b393e2570137b + image: eclipse-temurin:25.0.2_10-jre@sha256:0a9c973778b03b88f39ccae4f8cc26022d84a3237a818cb98770369eb6c5daf9 network_mode: host volumes: - ./target/example-native-histogram.jar:/example-native-histogram.jar From 18a8768946b58b8b840bb128ef63f1ccd3aea86b Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 18 Feb 2026 11:19:27 +0100 Subject: [PATCH 105/110] chore(deps): update dependency grafana/flint to v0.6.0 (#1891) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Update flint from v0.5.0 to v0.6.0 - Remove lychee `remap` workaround for [lychee#1729](https://github.com/lycheeverse/lychee/issues/1729) โ€” flint v0.6.0 now handles GitHub fragment URL remaps natively in `links.sh` ## Test plan - [ ] CI lint checks pass with updated flint tasks - [ ] Link checking works correctly without the local remap rule Signed-off-by: Gregor Zeitlinger --- .github/config/lychee.toml | 5 ----- mise.toml | 6 +++--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/config/lychee.toml b/.github/config/lychee.toml index 9ba423471..864350fb5 100644 --- a/.github/config/lychee.toml +++ b/.github/config/lychee.toml @@ -12,11 +12,6 @@ include_fragments = true base_url = "https://prometheus.github.io" exclude_path = ["docs/themes"] -remap = [ - # workaround for https://github.com/lycheeverse/lychee/issues/1729 - "https://github.com/(.*?)/(.*?)/blob/(.*?)/(.*#.*)$ https://raw.githubusercontent.com/$1/$2/$3/$4" -] - exclude = [ # excluding links to pull requests and issues is done for performance "^https://github.com/prometheus/client_java/(issues|pull)/\\d+$", diff --git a/mise.toml b/mise.toml index 44ce631a6..a61bbb9dd 100644 --- a/mise.toml +++ b/mise.toml @@ -53,15 +53,15 @@ run = "./mvnw install -DskipTests -Dcoverage.skip=true" # Shared lint tasks from flint (https://github.com/grafana/flint) [tasks."lint:super-linter"] description = "Run Super-Linter on the repository" -file = "https://raw.githubusercontent.com/grafana/flint/79215390bdc8aa92f2c01e350062aa4bbbbf1858/tasks/lint/super-linter.sh" # v0.5.0 +file = "https://raw.githubusercontent.com/grafana/flint/5bb3726cfe3305072457c0c4fa85dce5ca154680/tasks/lint/super-linter.sh" # v0.6.0 [tasks."lint:links"] description = "Lint links" -file = "https://raw.githubusercontent.com/grafana/flint/79215390bdc8aa92f2c01e350062aa4bbbbf1858/tasks/lint/links.sh" # v0.5.0 +file = "https://raw.githubusercontent.com/grafana/flint/5bb3726cfe3305072457c0c4fa85dce5ca154680/tasks/lint/links.sh" # v0.6.0 [tasks."lint:renovate-deps"] description = "Verify renovate-tracked-deps.json is up to date" -file = "https://raw.githubusercontent.com/grafana/flint/79215390bdc8aa92f2c01e350062aa4bbbbf1858/tasks/lint/renovate-deps.py" # v0.5.0 +file = "https://raw.githubusercontent.com/grafana/flint/5bb3726cfe3305072457c0c4fa85dce5ca154680/tasks/lint/renovate-deps.py" # v0.6.0 [tasks."lint"] description = "Run all lints" From 93e2b6da48abc03ba7d96ffff5020ab73c1ee8c1 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 18 Feb 2026 11:35:18 +0100 Subject: [PATCH 106/110] fix: remove version manipulation from build-release.sh (#1886) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Remove redundant sed-based SNAPSHOT version replacement from `build-release.sh` โ€” release-please already sets the correct versions in pom.xml at the tagged commit - Remove `TAG` env var from `release.yml` and `test-release-build.yml` workflows ## Test plan - [x] `mise run build-release` succeeds locally - [x] `mise run lint` passes - [ ] CI passes on PR Signed-off-by: Gregor Zeitlinger --- .github/workflows/release.yml | 2 -- .github/workflows/test-release-build.yml | 3 --- .mise/tasks/build-release.sh | 18 ++---------------- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e950b4b36..93d32c188 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,8 +30,6 @@ jobs: - name: Build release version run: mise run build-release - env: - TAG: ${{ github.ref_name }} - name: Set up Apache Maven Central uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index 2d7d27ef3..f8de00d8c 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -32,6 +32,3 @@ jobs: BASE_URL: "/client_java" - name: Build release version run: mise run build-release - env: - # don't use the current snapshot version, to test a more realistic release - TAG: ${{ github.run_number }} diff --git a/.mise/tasks/build-release.sh b/.mise/tasks/build-release.sh index 9ddb48e53..620dca77a 100755 --- a/.mise/tasks/build-release.sh +++ b/.mise/tasks/build-release.sh @@ -1,22 +1,8 @@ #!/usr/bin/env bash #MISE description="Build release package" -#USAGE arg "[tag]" env="TAG" set -euo pipefail -PARENT_POM="prometheus-metrics-parent/pom.xml" -CURRENT_VERSION=$(sed -n 's/.*\(.*-SNAPSHOT\)<\/version>.*/\1/p' "$PARENT_POM" | head -1) - -if [[ -z "$CURRENT_VERSION" ]]; then - echo "ERROR: could not find SNAPSHOT version in $PARENT_POM" >&2 - exit 1 -fi - -# shellcheck disable=SC2154 # is set by mise -VERSION=${usage_tag:-$CURRENT_VERSION} -VERSION=${VERSION#v} - -find . -name 'pom.xml' -exec \ - sed -i "s/${CURRENT_VERSION}<\/version>/${VERSION}<\/version>/g" {} + -mvn -B package -P 'release,!default,!examples-and-integration-tests' -Dmaven.test.skip=true -Dgpg.skip=true +mvn -B package -P 'release,!default,!examples-and-integration-tests' \ + -Dmaven.test.skip=true -Dgpg.skip=true From ce811d0e656ea3c917f24f128957799b00ce0c10 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 18 Feb 2026 11:45:51 +0100 Subject: [PATCH 107/110] ci(release-please): add footer to release PRs with CI trigger reminder (#1893) ## Summary - Adds a `pull-request-footer` to release-please config with an `[!IMPORTANT]` callout reminding maintainers to close and reopen the PR to trigger CI checks ## Test plan - [ ] Verify the next release-please PR includes the footer text --- .github/config/release-please-config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/config/release-please-config.json b/.github/config/release-please-config.json index 131941946..0182b5204 100644 --- a/.github/config/release-please-config.json +++ b/.github/config/release-please-config.json @@ -1,5 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "pull-request-footer": "> [!IMPORTANT]\n> Close and reopen this PR to trigger CI checks.", "packages": { ".": { "release-type": "java", From af1f7f2f6c286740697a44dbfb30d7c5fbc23812 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 22:37:16 +0000 Subject: [PATCH 108/110] chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.146.1 (#1895) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [otel/opentelemetry-collector-contrib](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases) | minor | `0.145.0` โ†’ `0.146.1` | --- ### Release Notes
    open-telemetry/opentelemetry-collector-releases (otel/opentelemetry-collector-contrib) ### [`v0.146.1`](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/blob/HEAD/CHANGELOG.md#v01461) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/compare/v0.146.0...v0.146.1) ##### ๐Ÿ›‘ Breaking changes ๐Ÿ›‘ - `bigipreceiver`: Removing unmaintained component ([#​46039](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/issues/46039)) ### [`v0.146.0`](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/compare/v0.145.0...v0.146.0) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-collector-releases/compare/v0.145.0...v0.146.0)
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/example-exemplars-tail-sampling/docker-compose.yaml | 2 +- examples/example-exporter-opentelemetry/docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index cb9326e40..dee885885 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -36,7 +36,7 @@ services: - -jar - /example-greeting-service.jar collector: - image: otel/opentelemetry-collector-contrib:0.145.0@sha256:a7343f01869071ea3f4c5e1e97df1bb1b3c4d5c77247db80e053a80b9df530c4 + image: otel/opentelemetry-collector-contrib:0.146.1@sha256:f6e429c1052ab50f85a7afa5f7e32f25931697751622b0e1f453d10f79a1df3c network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml diff --git a/examples/example-exporter-opentelemetry/docker-compose.yaml b/examples/example-exporter-opentelemetry/docker-compose.yaml index 7cb140247..97bc9ab9b 100644 --- a/examples/example-exporter-opentelemetry/docker-compose.yaml +++ b/examples/example-exporter-opentelemetry/docker-compose.yaml @@ -13,7 +13,7 @@ services: #- -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 - /example-exporter-opentelemetry.jar collector: - image: otel/opentelemetry-collector-contrib:0.145.0@sha256:a7343f01869071ea3f4c5e1e97df1bb1b3c4d5c77247db80e053a80b9df530c4 + image: otel/opentelemetry-collector-contrib:0.146.1@sha256:f6e429c1052ab50f85a7afa5f7e32f25931697751622b0e1f453d10f79a1df3c network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml From 9776bc9ce102e5eff974b337fd6c44d97be0b8dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 22:38:56 +0000 Subject: [PATCH 109/110] chore(deps): update module go:github.com/gohugoio/hugo to v0.156.0 (#1894) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [go:github.com/gohugoio/hugo](https://redirect.github.com/gohugoio/hugo) | `v0.155.3` โ†’ `v0.156.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgohugoio%2fhugo/v0.156.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgohugoio%2fhugo/v0.155.3/v0.156.0?slim=true) | --- ### Release Notes
    gohugoio/hugo (go:github.com/gohugoio/hugo) ### [`v0.156.0`](https://redirect.github.com/gohugoio/hugo/compare/v0.155.3...v0.156.0) [Compare Source](https://redirect.github.com/gohugoio/hugo/compare/v0.155.3...v0.156.0)
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index a61bbb9dd..ebf962bc4 100644 --- a/mise.toml +++ b/mise.toml @@ -1,5 +1,5 @@ [tools] -"go:github.com/gohugoio/hugo" = "v0.155.3" +"go:github.com/gohugoio/hugo" = "v0.156.0" "go:github.com/grafana/oats" = "0.6.1" java = "temurin-25.0.2+10.0.LTS" lychee = "0.23.0" From 0d800d0a91578e48f34909472c183174fdf1d83e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 16:47:55 +0000 Subject: [PATCH 110/110] fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4.0.3 (#1900) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.springframework.boot:spring-boot-starter-parent](https://spring.io/projects/spring-boot) ([source](https://redirect.github.com/spring-projects/spring-boot)) | `4.0.2` โ†’ `4.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.springframework.boot:spring-boot-starter-parent/4.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.springframework.boot:spring-boot-starter-parent/4.0.2/4.0.3?slim=true) | --- ### Release Notes
    spring-projects/spring-boot (org.springframework.boot:spring-boot-starter-parent) ### [`v4.0.3`](https://redirect.github.com/spring-projects/spring-boot/compare/v4.0.2...v4.0.3) [Compare Source](https://redirect.github.com/spring-projects/spring-boot/compare/v4.0.2...v4.0.3)
    --- ### Configuration ๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). ๐Ÿšฆ **Automerge**: Enabled. โ™ป **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. ๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/prometheus/client_java). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- integration-tests/it-spring-boot-smoke-test/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index 56b5f91bb..ee653fbb4 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -8,7 +8,7 @@ org.springframework.boot spring-boot-starter-parent - 4.0.2 + 4.0.3