This is an automated email from the ASF dual-hosted git repository.
yhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new a9e2e68e507 [OpenTelemetry] Add OpenTelemetry options to
SdkHarnessOptions (#36716)
a9e2e68e507 is described below
commit a9e2e68e5079944bb0212a3ff121441707bd8dac
Author: Steven van Rossum <[email protected]>
AuthorDate: Tue Nov 25 16:19:03 2025 +0100
[OpenTelemetry] Add OpenTelemetry options to SdkHarnessOptions (#36716)
* Add OpenTelemetry options to SdkHarnessOptions
* Add missing dependency licenses
---
.../org/apache/beam/gradle/BeamModulePlugin.groovy | 4 ++++
scripts/tools/bomupgrader.py | 1 +
.../container/license_scripts/dep_urls_java.yaml | 8 +++++++
sdks/java/core/build.gradle | 2 ++
.../apache/beam/sdk/options/SdkHarnessOptions.java | 28 ++++++++++++++++++++++
5 files changed, 43 insertions(+)
diff --git
a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
index 3f299916db8..e941de9dfb6 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -634,6 +634,8 @@ class BeamModulePlugin implements Plugin<Project> {
def nemo_version = "0.1"
// [bomupgrader] determined by: io.grpc:grpc-netty, consistent with:
google_cloud_platform_libraries_bom
def netty_version = "4.1.110.Final"
+ // [bomupgrader] determined by: io.opentelemetry:opentelemetry-sdk,
consistent with: google_cloud_platform_libraries_bom
+ def opentelemetry_version = "1.47.0"
def postgres_version = "42.2.16"
// [bomupgrader] determined by: com.google.protobuf:protobuf-java,
consistent with: google_cloud_platform_libraries_bom
def protobuf_version = "4.33.0"
@@ -853,6 +855,8 @@ class BeamModulePlugin implements Plugin<Project> {
netty_tcnative_boringssl_static :
"io.netty:netty-tcnative-boringssl-static:2.0.52.Final",
netty_transport :
"io.netty:netty-transport:$netty_version",
netty_transport_native_epoll :
"io.netty:netty-transport-native-epoll:$netty_version",
+ opentelemetry_api :
"io.opentelemetry:opentelemetry-api", // google_cloud_platform_libraries_bom
sets version
+ opentelemetry_bom :
"io.opentelemetry:opentelemetry-bom-alpha:$opentelemetry_version-alpha", //
alpha required by extensions
postgres :
"org.postgresql:postgresql:$postgres_version",
protobuf_java :
"com.google.protobuf:protobuf-java:$protobuf_version",
protobuf_java_util :
"com.google.protobuf:protobuf-java-util:$protobuf_version",
diff --git a/scripts/tools/bomupgrader.py b/scripts/tools/bomupgrader.py
index 23de807a4fa..a759bae827b 100644
--- a/scripts/tools/bomupgrader.py
+++ b/scripts/tools/bomupgrader.py
@@ -52,6 +52,7 @@ class BeamModulePluginProcessor:
"grpc":
"io.grpc:grpc-netty", # use "grpc-netty" to pick up proper netty
version
"netty": "io.netty:netty-transport",
+ "opentelemetry": "io.opentelemetry:opentelemetry-sdk",
"protobuf": "com.google.protobuf:protobuf-java"
}
# dependencies managed by GCP-BOM that used the dependencies in KNOWN_DEPS
diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml
b/sdks/java/container/license_scripts/dep_urls_java.yaml
index 06e6235fd2d..cc103c376e1 100644
--- a/sdks/java/container/license_scripts/dep_urls_java.yaml
+++ b/sdks/java/container/license_scripts/dep_urls_java.yaml
@@ -65,6 +65,14 @@ org.eclipse.jgit:
'4.4.1.201607150455-r':
license: "https://www.eclipse.org/org/documents/edl-v10.html"
type: "Eclipse Distribution License - v1.0"
+opentelemetry-bom:
+ '1.47.0':
+ license:
"https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE"
+ type: "Apache License 2.0"
+opentelemetry-bom-alpha:
+ '1.47.0-alpha':
+ license:
"https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE"
+ type: "Apache License 2.0"
zstd-jni:
'1.5.2-5':
license: "https://raw.githubusercontent.com/luben/zstd-jni/master/LICENSE"
diff --git a/sdks/java/core/build.gradle b/sdks/java/core/build.gradle
index 4a6d2f11973..4f37ad47ec4 100644
--- a/sdks/java/core/build.gradle
+++ b/sdks/java/core/build.gradle
@@ -96,6 +96,8 @@ dependencies {
shadow library.java.jackson_core
shadow library.java.jackson_annotations
shadow library.java.jackson_databind
+ shadow platform(library.java.opentelemetry_bom)
+ shadow library.java.opentelemetry_api
shadow library.java.slf4j_api
shadow library.java.snappy_java
shadow library.java.joda_time
diff --git
a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java
b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java
index ecebeee4bba..5833bcc21a4 100644
---
a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java
+++
b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java
@@ -20,6 +20,9 @@ package org.apache.beam.sdk.options;
import static
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions.checkNotNull;
import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.opentelemetry.api.GlobalOpenTelemetry;
+import io.opentelemetry.api.OpenTelemetry;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
@@ -452,4 +455,29 @@ public interface SdkHarnessOptions extends
PipelineOptions, MemoryMonitorOptions
List<String> getAvroSerializableClasses();
void setAvroSerializableClasses(List<String> options);
+
+ /**
+ * The OpenTelemetry properties that will be appended to the set of system
properties for SDK
+ * harness instances. Property names must be specified without the 'otel.'
prefix.
+ */
+ @Description(
+ "The OpenTelemetry properties that will be appended to the set of system
properties for SDK "
+ + "harness instances. Property names must be specified without the
'otel.' prefix.")
+ Map<String, String> getOpenTelemetryProperties();
+
+ void setOpenTelemetryProperties(Map<String, String> value);
+
+ @JsonIgnore
+ @Hidden
+ @Default.InstanceFactory(GlobalOpenTelemetryFactory.class)
+ OpenTelemetry getOpenTelemetry();
+
+ void setOpenTelemetry(OpenTelemetry value);
+
+ class GlobalOpenTelemetryFactory implements
DefaultValueFactory<OpenTelemetry> {
+ @Override
+ public OpenTelemetry create(PipelineOptions options) {
+ return GlobalOpenTelemetry.get();
+ }
+ }
}