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