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();
+    }
+  }
 }

Reply via email to