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..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,8 @@
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;
import io.opentelemetry.api.trace.Tracer;
@@ -1139,6 +1141,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 +1179,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((ManagedChannelBuilder) b);
+ return b;
+ });
+ }
+ activeProvider = builder.build();
}
if (activeProvider instanceof InstantiatingGrpcChannelProvider) {
@@ -1191,8 +1207,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());