From be14793d8f1df9069769b5da885ed43ad08195c7 Mon Sep 17 00:00:00 2001 From: Keshav Dandeva Date: Thu, 28 May 2026 19:51:54 +0000 Subject: [PATCH 1/2] chore: link OpenTelemetry instrumentation with underlying SDK --- java-bigquery-jdbc/pom.xml | 10 +++++++++ .../bigquery/jdbc/BigQueryConnection.java | 22 +++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/java-bigquery-jdbc/pom.xml b/java-bigquery-jdbc/pom.xml index 152924230b26..e4243ec08d17 100644 --- a/java-bigquery-jdbc/pom.xml +++ b/java-bigquery-jdbc/pom.xml @@ -320,6 +320,16 @@ io.grpc grpc-netty-shaded + + io.grpc + grpc-opentelemetry + + + io.opentelemetry + opentelemetry-api + + + org.apache.arrow diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index 8e530ccf060c..0bd2c04a4ec3 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -44,6 +44,7 @@ import com.google.cloud.logging.Logging; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSortedSet; +import io.grpc.opentelemetry.GrpcOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.baggage.Baggage; import io.opentelemetry.api.trace.Tracer; @@ -1139,6 +1140,7 @@ private BigQuery getBigQueryConnection() { || this.useGlobalOpenTelemetry) { Tracer sdkTracer = this.openTelemetry.getTracer(BigQueryJdbcOpenTelemetry.BIGQUERY_NAMESPACE); bigQueryOptions.setOpenTelemetryTracer(sdkTracer); + bigQueryOptions.setEnableOpenTelemetryTracing(true); this.tracer = this.openTelemetry.getTracer(BigQueryJdbcOpenTelemetry.INSTRUMENTATION_SCOPE_NAME); } @@ -1176,7 +1178,20 @@ private BigQueryReadClient getBigQueryReadClientConnection() throws IOException } TransportChannelProvider activeProvider = this.transportChannelProvider; if (activeProvider == null) { - activeProvider = BigQueryReadSettings.defaultGrpcTransportProviderBuilder().build(); + InstantiatingGrpcChannelProvider.Builder builder = + BigQueryReadSettings.defaultGrpcTransportProviderBuilder(); + if (this.enableGcpTraceExporter + || this.customOpenTelemetry != null + || this.useGlobalOpenTelemetry) { + GrpcOpenTelemetry grpcOpenTelemetry = + GrpcOpenTelemetry.newBuilder().sdk(this.openTelemetry).build(); + builder.setChannelConfigurator( + b -> { + grpcOpenTelemetry.configureChannelBuilder(b); + return b; + }); + } + activeProvider = builder.build(); } if (activeProvider instanceof InstantiatingGrpcChannelProvider) { @@ -1191,8 +1206,11 @@ private BigQueryReadClient getBigQueryReadClientConnection() throws IOException bigQueryReadSettings.setTransportChannelProvider(activeProvider); - if (this.enableGcpTraceExporter || this.customOpenTelemetry != null) { + if (this.enableGcpTraceExporter + || this.customOpenTelemetry != null + || this.useGlobalOpenTelemetry) { bigQueryReadSettings.setOpenTelemetryTracerProvider(this.openTelemetry.getTracerProvider()); + bigQueryReadSettings.setEnableOpenTelemetryTracing(true); } return BigQueryReadClient.create(bigQueryReadSettings.build()); From 1844abcad413e583a710809cb792d49bbc6d8b5b Mon Sep 17 00:00:00 2001 From: Keshav Dandeva Date: Thu, 28 May 2026 19:59:17 +0000 Subject: [PATCH 2/2] lint --- .../com/google/cloud/bigquery/jdbc/BigQueryConnection.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index 0bd2c04a4ec3..cd423b634ea8 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -44,6 +44,7 @@ import com.google.cloud.logging.Logging; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSortedSet; +import io.grpc.ManagedChannelBuilder; import io.grpc.opentelemetry.GrpcOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.baggage.Baggage; @@ -1187,7 +1188,7 @@ private BigQueryReadClient getBigQueryReadClientConnection() throws IOException GrpcOpenTelemetry.newBuilder().sdk(this.openTelemetry).build(); builder.setChannelConfigurator( b -> { - grpcOpenTelemetry.configureChannelBuilder(b); + grpcOpenTelemetry.configureChannelBuilder((ManagedChannelBuilder) b); return b; }); }