This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new f2a22bb2163 [improve][build] Upgrade OpenTelemetry to latest (java
1.62.0, instrumentation 2.28.1, semconv 1.41.1) (#25906)
f2a22bb2163 is described below
commit f2a22bb2163f7a87f0e5382e89d2a22fd3ff26c5
Author: Lari Hotari <[email protected]>
AuthorDate: Mon Jun 1 10:41:04 2026 +0300
[improve][build] Upgrade OpenTelemetry to latest (java 1.62.0,
instrumentation 2.28.1, semconv 1.41.1) (#25906)
---
distribution/server/src/assemble/LICENSE.bin.txt | 16 ++++++++--------
distribution/shell/src/assemble/LICENSE.bin.txt | 2 +-
gradle/libs.versions.toml | 10 +++++-----
.../pulsar/opentelemetry/OpenTelemetryService.java | 9 ++++++++-
.../opentelemetry/OpenTelemetryServiceTest.java | 21 +++++++++++++++++++++
5 files changed, 43 insertions(+), 15 deletions(-)
diff --git a/distribution/server/src/assemble/LICENSE.bin.txt
b/distribution/server/src/assemble/LICENSE.bin.txt
index 5cb6438d7c8..05e9050e2e0 100644
--- a/distribution/server/src/assemble/LICENSE.bin.txt
+++ b/distribution/server/src/assemble/LICENSE.bin.txt
@@ -528,13 +528,13 @@ The Apache Software License, Version 2.0
- org.roaringbitmap-RoaringBitmap-1.6.9.jar
* OpenTelemetry
- io.opentelemetry-opentelemetry-api-1.62.0.jar
- - io.opentelemetry-opentelemetry-api-incubator-1.61.0-alpha.jar
+ - io.opentelemetry-opentelemetry-api-incubator-1.62.0-alpha.jar
- io.opentelemetry-opentelemetry-common-1.62.0.jar
- io.opentelemetry-opentelemetry-context-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-common-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-otlp-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-otlp-common-1.62.0.jar
- - io.opentelemetry-opentelemetry-exporter-prometheus-1.61.0-alpha.jar
+ - io.opentelemetry-opentelemetry-exporter-prometheus-1.62.0-alpha.jar
- io.opentelemetry-opentelemetry-exporter-sender-okhttp-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-common-1.62.0.jar
@@ -543,13 +543,13 @@ The Apache Software License, Version 2.0
- io.opentelemetry-opentelemetry-sdk-logs-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-metrics-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-trace-1.62.0.jar
- -
io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-2.27.0.jar
- -
io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-incubator-2.27.0-alpha.jar
- - io.opentelemetry.instrumentation-opentelemetry-resources-2.27.0-alpha.jar
- -
io.opentelemetry.instrumentation-opentelemetry-runtime-telemetry-2.27.0-alpha.jar
- - io.opentelemetry.semconv-opentelemetry-semconv-1.41.0.jar
+ -
io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-2.28.1.jar
+ -
io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-incubator-2.28.1-alpha.jar
+ - io.opentelemetry.instrumentation-opentelemetry-resources-2.28.1-alpha.jar
+ -
io.opentelemetry.instrumentation-opentelemetry-runtime-telemetry-2.28.1-alpha.jar
+ - io.opentelemetry.semconv-opentelemetry-semconv-1.41.1.jar
- com.google.cloud.opentelemetry-detector-resources-support-0.36.0.jar
- - io.opentelemetry.contrib-opentelemetry-gcp-resources-1.48.0-alpha.jar
+ - io.opentelemetry.contrib-opentelemetry-gcp-resources-1.57.0-alpha.jar
* Spotify completable-futures
- com.spotify-completable-futures-0.3.6.jar
* JSpecify
diff --git a/distribution/shell/src/assemble/LICENSE.bin.txt
b/distribution/shell/src/assemble/LICENSE.bin.txt
index a56e6b5f20c..3491eec8f8b 100644
--- a/distribution/shell/src/assemble/LICENSE.bin.txt
+++ b/distribution/shell/src/assemble/LICENSE.bin.txt
@@ -388,7 +388,7 @@ The Apache Software License, Version 2.0
- log4j-web-2.25.4.jar
* OpenTelemetry
- opentelemetry-api-1.62.0.jar
- - opentelemetry-api-incubator-1.61.0-alpha.jar
+ - opentelemetry-api-incubator-1.62.0-alpha.jar
- opentelemetry-common-1.62.0.jar
- opentelemetry-context-1.62.0.jar
* Slog
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index cd94415b05b..f7a7a81cbb3 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -39,10 +39,10 @@ log4j2 = "2.25.4"
lombok = "1.18.42"
# OpenTelemetry
opentelemetry = "1.62.0"
-opentelemetry-alpha = "1.61.0-alpha"
-opentelemetry-instrumentation = "2.27.0"
-opentelemetry-instrumentation-alpha = "2.27.0-alpha"
-opentelemetry-semconv = "1.41.0"
+opentelemetry-alpha = "1.62.0-alpha"
+opentelemetry-instrumentation = "2.28.1"
+opentelemetry-instrumentation-alpha = "2.28.1-alpha"
+opentelemetry-semconv = "1.41.1"
# Apache Commons
commons-lang3 = "3.20.0"
commons-io = "2.21.0"
@@ -79,7 +79,7 @@ google-auth = "1.24.1"
google-http-client = "1.41.0"
j2objc-annotations = "1.3"
opencensus = "0.28.0"
-opentelemetry-gcp-resources = "1.48.0-alpha"
+opentelemetry-gcp-resources = "1.57.0-alpha"
# Data structures / Utils
guava = "33.4.8-jre"
caffeine = "3.2.4"
diff --git
a/pulsar-opentelemetry/src/main/java/org/apache/pulsar/opentelemetry/OpenTelemetryService.java
b/pulsar-opentelemetry/src/main/java/org/apache/pulsar/opentelemetry/OpenTelemetryService.java
index 9dcc4cd02e2..abe9266f5d3 100644
---
a/pulsar-opentelemetry/src/main/java/org/apache/pulsar/opentelemetry/OpenTelemetryService.java
+++
b/pulsar-opentelemetry/src/main/java/org/apache/pulsar/opentelemetry/OpenTelemetryService.java
@@ -47,6 +47,7 @@ import org.apache.commons.lang3.StringUtils;
public class OpenTelemetryService implements Closeable {
public static final String OTEL_SDK_DISABLED_KEY = "otel.sdk.disabled";
+ static final String OTEL_EXPORTER_PROMETHEUS_HOST_KEY =
"otel.exporter.prometheus.host";
static final int MAX_CARDINALITY_LIMIT = 10000;
private final AtomicReference<OpenTelemetrySdk> openTelemetrySdkReference
= new AtomicReference<>();
@@ -79,7 +80,13 @@ public class OpenTelemetryService implements Closeable {
// Cardinality limit includes the overflow attribute set, so
we need to add 1.
"otel.java.metrics.cardinality.limit",
Integer.toString(MAX_CARDINALITY_LIMIT + 1),
// Reduce number of allocations by using reusable data mode.
- "otel.java.exporter.memory_mode",
MemoryMode.REUSABLE_DATA.name()
+ "otel.java.exporter.memory_mode",
MemoryMode.REUSABLE_DATA.name(),
+ // Preserve the pre-OpenTelemetry-1.62.0 behavior of binding
the Prometheus exporter's HTTP server
+ // to all interfaces. OpenTelemetry 1.62.0 changed the default
host from "0.0.0.0" to "localhost",
+ // which makes the metrics endpoint unreachable from outside
the host (e.g. another container or a
+ // remote Prometheus scraper). Supplied as a default, so it is
still overridden by an explicit
+ // OTEL_EXPORTER_PROMETHEUS_HOST environment variable /
otel.exporter.prometheus.host system property.
+ OTEL_EXPORTER_PROMETHEUS_HOST_KEY, "0.0.0.0"
));
sdkBuilder.addResourceCustomizer(
diff --git
a/pulsar-opentelemetry/src/test/java/org/apache/pulsar/opentelemetry/OpenTelemetryServiceTest.java
b/pulsar-opentelemetry/src/test/java/org/apache/pulsar/opentelemetry/OpenTelemetryServiceTest.java
index fbf819aed78..efb6bdecccb 100644
---
a/pulsar-opentelemetry/src/test/java/org/apache/pulsar/opentelemetry/OpenTelemetryServiceTest.java
+++
b/pulsar-opentelemetry/src/test/java/org/apache/pulsar/opentelemetry/OpenTelemetryServiceTest.java
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import lombok.Cleanup;
import org.apache.commons.lang3.StringUtils;
@@ -153,6 +154,26 @@ public class OpenTelemetryServiceTest {
});
}
+ @Test
+ public void testPrometheusExporterDefaultsToAllInterfacesHost() {
+ // OpenTelemetry 1.62.0 changed the Prometheus exporter's default
server host from "0.0.0.0" to "localhost".
+ // Pulsar restores the previous "0.0.0.0" default so the metrics
endpoint stays reachable from outside the
+ // local host (e.g. another container or a remote Prometheus scraper).
The default must remain overridable
+ // via the standard OTEL_EXPORTER_PROMETHEUS_HOST /
otel.exporter.prometheus.host configuration.
+ var capturedHost = new AtomicReference<String>();
+ @Cleanup
+ var ots = OpenTelemetryService.builder()
+ .builderCustomizer(getBuilderCustomizer(null,
+ Map.of(OpenTelemetryService.OTEL_SDK_DISABLED_KEY,
"false"))
+ .andThen(builder ->
builder.addPropertiesCustomizer(config -> {
+
capturedHost.set(config.getString(OpenTelemetryService.OTEL_EXPORTER_PROMETHEUS_HOST_KEY));
+ return Map.of();
+ })))
+ .clusterName("openTelemetryServicePrometheusHostTestCluster")
+ .build();
+ assertThat(capturedHost.get()).isEqualTo("0.0.0.0");
+ }
+
@Test
public void testLongCounter() {
var longCounter = meter.counterBuilder("dummyLongCounter").build();