From ccb0200bbf213e8c3cd3cf607c69781acd8e059e Mon Sep 17 00:00:00 2001 From: Eunbin Son Date: Fri, 17 Jul 2026 05:14:48 +0900 Subject: [PATCH] Fix PrometheusHttpServerBuilder copy constructor dropping the default handler --- CHANGELOG.md | 2 ++ .../exporter/prometheus/PrometheusHttpServerBuilder.java | 1 + .../exporter/prometheus/PrometheusHttpServerTest.java | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 386c20ba941..83e43acd530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ #### Exporters +* Prometheus: Fix `PrometheusHttpServer.toBuilder()` dropping the configured default handler + ([#8619](https://github.com/open-telemetry/opentelemetry-java/pull/8619)) * Logging: Output event name in `SystemOutLogRecordExporter` ([#8609](https://github.com/open-telemetry/opentelemetry-java/pull/8609)) diff --git a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerBuilder.java b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerBuilder.java index 6466b8d32c4..7b85bb027ac 100644 --- a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerBuilder.java +++ b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerBuilder.java @@ -52,6 +52,7 @@ public final class PrometheusHttpServerBuilder { this.metricReaderBuilder = new PrometheusMetricReaderBuilder(builder.metricReaderBuilder); this.executor = builder.executor; this.memoryMode = builder.memoryMode; + this.defaultHandler = builder.defaultHandler; this.defaultAggregationSelector = builder.defaultAggregationSelector; this.authenticator = builder.authenticator; } diff --git a/exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerTest.java b/exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerTest.java index 97a58b7c202..389d81943f5 100644 --- a/exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerTest.java +++ b/exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/PrometheusHttpServerTest.java @@ -24,6 +24,7 @@ import com.linecorp.armeria.common.RequestHeaders; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpPrincipal; import io.github.netmikey.logunit.api.LogCapturer; import io.opentelemetry.api.common.Attributes; @@ -755,6 +756,9 @@ public Result authenticate(HttpExchange exchange) { }; builder.setAuthenticator(authenticator); + HttpHandler defaultHandler = exchange -> {}; + builder.setDefaultHandler(defaultHandler); + PrometheusHttpServer httpServer = builder.build(); PrometheusHttpServerBuilder fromOriginalBuilder = httpServer.toBuilder(); httpServer.close(); @@ -765,6 +769,7 @@ public Result authenticate(HttpExchange exchange) { .hasFieldOrPropertyWithValue("executor", executor) .hasFieldOrPropertyWithValue("prometheusRegistry", prometheusRegistry) .hasFieldOrPropertyWithValue("authenticator", authenticator) + .hasFieldOrPropertyWithValue("defaultHandler", defaultHandler) .extracting("metricReaderBuilder") .usingRecursiveComparison() .isEqualTo(