From 17b4cbf6a1bdca4a6ed451f4455272cbc98d1405 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Fri, 23 Jan 2026 17:39:04 -0800 Subject: [PATCH 1/2] Add compression mode OTLP property See https://github.com/micrometer-metrics/micrometer/issues/7009 See gh-48957 --- .../export/otlp/OtlpMetricsProperties.java | 14 ++++++++++++++ .../otlp/OtlpMetricsPropertiesConfigAdapter.java | 6 ++++++ .../OtlpMetricsPropertiesConfigAdapterTests.java | 12 ++++++++++++ .../export/otlp/OtlpMetricsPropertiesTests.java | 1 + 4 files changed, 33 insertions(+) diff --git a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java index 0c77d1f6058..e267cc37e32 100644 --- a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java +++ b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.CompressionMode; import io.micrometer.registry.otlp.HistogramFlavor; import org.jspecify.annotations.Nullable; @@ -49,6 +50,11 @@ public class OtlpMetricsProperties extends StepRegistryProperties { */ private AggregationTemporality aggregationTemporality = AggregationTemporality.CUMULATIVE; + /** + * Compression mode for metric data sender. + */ + private CompressionMode compressionMode = CompressionMode.NONE; + /** * Headers for the exported metrics. */ @@ -96,6 +102,14 @@ public class OtlpMetricsProperties extends StepRegistryProperties { this.aggregationTemporality = aggregationTemporality; } + public CompressionMode getCompressionMode() { + return this.compressionMode; + } + + public void setCompressionMode(CompressionMode compressionMode) { + this.compressionMode = compressionMode; + } + public @Nullable Map getHeaders() { return this.headers; } diff --git a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java index 122aaf1ca2d..80dfe0f2f7b 100644 --- a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java +++ b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.CompressionMode; import io.micrometer.registry.otlp.HistogramFlavor; import io.micrometer.registry.otlp.OtlpConfig; @@ -72,6 +73,11 @@ class OtlpMetricsPropertiesConfigAdapter extends StepRegistryPropertiesConfigAda return obtain(OtlpMetricsProperties::getAggregationTemporality, OtlpConfig.super::aggregationTemporality); } + @Override + public CompressionMode compressionMode() { + return obtain(OtlpMetricsProperties::getCompressionMode, OtlpConfig.super::compressionMode); + } + @Override public Map resourceAttributes() { Map resourceAttributes = new LinkedHashMap<>(); diff --git a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java index 116c37eda32..2fe0e850b73 100644 --- a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java +++ b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.CompressionMode; import io.micrometer.registry.otlp.HistogramFlavor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -88,6 +89,17 @@ class OtlpMetricsPropertiesConfigAdapterTests { assertThat(createAdapter().aggregationTemporality()).isSameAs(AggregationTemporality.DELTA); } + @Test + void whenPropertiesCompressionModeIsNotSetAdapterCompressionModeReturnsNone() { + assertThat(createAdapter().compressionMode()).isSameAs(CompressionMode.NONE); + } + + @Test + void whenPropertiesCompressionModeIsSetAdapterCompressionModeReturnsIt() { + this.properties.setCompressionMode(CompressionMode.GZIP); + assertThat(createAdapter().compressionMode()).isSameAs(CompressionMode.GZIP); + } + @Test void whenOpenTelemetryPropertiesResourceAttributesIsSetAdapterResourceAttributesReturnsIt() { this.openTelemetryProperties.setResourceAttributes(Map.of("service.name", "boot-service")); diff --git a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java index 47eeffc0948..c34f0c39f20 100644 --- a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java +++ b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java @@ -36,6 +36,7 @@ class OtlpMetricsPropertiesTests extends StepRegistryPropertiesTests { OtlpConfig config = OtlpConfig.DEFAULT; assertStepRegistryDefaultValues(properties, config); assertThat(properties.getAggregationTemporality()).isSameAs(config.aggregationTemporality()); + assertThat(properties.getCompressionMode()).isSameAs(config.compressionMode()); assertThat(properties.getHistogramFlavor()).isSameAs(config.histogramFlavor()); assertThat(properties.getMaxScale()).isEqualTo(config.maxScale()); assertThat(properties.getMaxBucketCount()).isEqualTo(config.maxBucketCount()); From f67f232e69ae4422dd48c316972075abe6b71ae4 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 10 Feb 2026 11:10:26 +0000 Subject: [PATCH 2/2] Polish "Add compression mode OTLP property" See gh-48957 --- .../autoconfigure/export/otlp/OtlpMetricsProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java index e267cc37e32..62577bdfdcb 100644 --- a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java +++ b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java @@ -51,7 +51,7 @@ public class OtlpMetricsProperties extends StepRegistryProperties { private AggregationTemporality aggregationTemporality = AggregationTemporality.CUMULATIVE; /** - * Compression mode for metric data sender. + * Compression mode to use when exporting metrics. */ private CompressionMode compressionMode = CompressionMode.NONE;