From b95f1221e2672e3c824daaed81783a6228d54fe3 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:19:07 -0400 Subject: [PATCH 01/19] chore(main): release 2.53.1-SNAPSHOT (#3886) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- benchmark/pom.xml | 2 +- google-cloud-bigquery-bom/pom.xml | 4 ++-- google-cloud-bigquery/pom.xml | 4 ++-- pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/benchmark/pom.xml b/benchmark/pom.xml index 8674b7102..9352cc46f 100644 --- a/benchmark/pom.xml +++ b/benchmark/pom.xml @@ -6,7 +6,7 @@ google-cloud-bigquery-parent com.google.cloud - 2.53.0 + 2.53.1-SNAPSHOT diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml index bc3a9e0c3..c41c4c601 100644 --- a/google-cloud-bigquery-bom/pom.xml +++ b/google-cloud-bigquery-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-bigquery-bom - 2.53.0 + 2.53.1-SNAPSHOT pom com.google.cloud @@ -54,7 +54,7 @@ com.google.cloud google-cloud-bigquery - 2.53.0 + 2.53.1-SNAPSHOT diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml index ad20f607e..b3f4461a0 100644 --- a/google-cloud-bigquery/pom.xml +++ b/google-cloud-bigquery/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-bigquery - 2.53.0 + 2.53.1-SNAPSHOT jar BigQuery https://github.com/googleapis/java-bigquery @@ -11,7 +11,7 @@ com.google.cloud google-cloud-bigquery-parent - 2.53.0 + 2.53.1-SNAPSHOT google-cloud-bigquery diff --git a/pom.xml b/pom.xml index 4bc7652ba..bfbc88b03 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-bigquery-parent pom - 2.53.0 + 2.53.1-SNAPSHOT BigQuery Parent https://github.com/googleapis/java-bigquery @@ -93,7 +93,7 @@ com.google.cloud google-cloud-bigquery - 2.53.0 + 2.53.1-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 7e1bfd314..9900dc829 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -44,7 +44,7 @@ com.google.cloud google-cloud-bigquery - 2.53.0 + 2.53.1-SNAPSHOT diff --git a/versions.txt b/versions.txt index 5245c445b..73c78399e 100644 --- a/versions.txt +++ b/versions.txt @@ -1,4 +1,4 @@ # Format: # module:released-version:current-version -google-cloud-bigquery:2.53.0:2.53.0 \ No newline at end of file +google-cloud-bigquery:2.53.0:2.53.1-SNAPSHOT \ No newline at end of file From a2dbafb9bc1c37ffda6e21605e98637a52b42ee3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 15 Jul 2025 17:49:48 +0200 Subject: [PATCH 02/19] chore(deps): update dependency com.google.cloud:google-cloud-bigquery to v2.53.0 (#3887) --- samples/install-without-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 11e13e43e..3faa29981 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -45,7 +45,7 @@ com.google.cloud google-cloud-bigquery - 2.52.0 + 2.53.0 From 84207e297eec75bcb4f1cc1b64423d7c2ddd6c30 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 15 Jul 2025 18:54:15 +0200 Subject: [PATCH 03/19] deps: update dependency com.google.api.grpc:proto-google-cloud-bigqueryconnection-v1 to v2.70.0 (#3890) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bfbc88b03..32f6636a6 100644 --- a/pom.xml +++ b/pom.xml @@ -149,7 +149,7 @@ com.google.api.grpc proto-google-cloud-bigqueryconnection-v1 - 2.69.0 + 2.70.0 test From 83278f66bbab19a5ff6131374687c65358dc392a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 17 Jul 2025 18:24:49 +0200 Subject: [PATCH 04/19] chore(deps): update dependency com.google.cloud:google-cloud-bigtable to v2.62.0 (#3894) --- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 3faa29981..fac67658a 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -63,7 +63,7 @@ com.google.cloud google-cloud-bigtable - 2.61.0 + 2.62.0 test diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 9900dc829..9f836d721 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -61,7 +61,7 @@ com.google.cloud google-cloud-bigtable - 2.61.0 + 2.62.0 test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 62c7f22ec..7ec8cdc10 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -79,7 +79,7 @@ com.google.cloud google-cloud-bigtable - 2.61.0 + 2.62.0 test From 92371d9d9a4dd64f5291342aff1e4f5aae16da9e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 17 Jul 2025 19:33:10 +0200 Subject: [PATCH 05/19] chore(deps): update dependency com.google.cloud:libraries-bom to v26.64.0 (#3895) --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 7ec8cdc10..3f293ddd0 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -47,7 +47,7 @@ com.google.cloud libraries-bom - 26.63.0 + 26.64.0 pom import From fce3d8f874f800a0f48e59f80c47ff53e2b7f166 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Fri, 18 Jul 2025 13:02:17 -0700 Subject: [PATCH 06/19] chore: create LTS branch 2.51.x (#3896) --- .github/release-please.yml | 4 ++++ .github/sync-repo-settings.yaml | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/.github/release-please.yml b/.github/release-please.yml index d722d35a2..f87ac1ecc 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -35,6 +35,10 @@ branches: handleGHRelease: true releaseType: java-backport branch: 2.52.x + - bumpMinorPreMajor: true + handleGHRelease: true + releaseType: java-backport + branch: 2.51.x bumpMinorPreMajor: true handleGHRelease: true releaseType: java-yoshi diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 26f85cb16..8a7fa3e30 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -147,6 +147,21 @@ branchProtectionRules: - cla/google - javadoc - unmanaged_dependency_check + - pattern: 2.51.x + isAdminEnforced: true + requiredApprovingReviewCount: 1 + requiresCodeOwnerReviews: true + requiresStrictStatusChecks: false + requiredStatusCheckContexts: + - dependencies (17) + - lint + - clirr + - units (8) + - units (11) + - 'Kokoro - Test: Integration' + - cla/google + - javadoc + - unmanaged_dependency_check permissionRules: - team: api-bigquery permission: admin From 36d3e82c80a1de7b00d83b0d85c1a5ad65d84640 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 21 Jul 2025 17:55:40 +0200 Subject: [PATCH 07/19] chore(deps): update google cloud java monorepo updates (#3889) --- pom.xml | 4 ++-- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 32f6636a6..850b288e5 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ com.google.cloud google-cloud-datacatalog-bom - 1.73.0 + 1.74.0 pom import @@ -143,7 +143,7 @@ com.google.cloud google-cloud-bigqueryconnection - 2.69.0 + 2.70.0 test diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index fac67658a..c492b1182 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -69,7 +69,7 @@ com.google.cloud google-cloud-bigqueryconnection - 2.69.0 + 2.70.0 test diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 9f836d721..496458c70 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -67,7 +67,7 @@ com.google.cloud google-cloud-bigqueryconnection - 2.69.0 + 2.70.0 test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 3f293ddd0..0e32438ed 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -85,7 +85,7 @@ com.google.cloud google-cloud-bigqueryconnection - 2.69.0 + 2.70.0 test From e3d9ed92ca5d9b58b5747960d74f895ed8733ebf Mon Sep 17 00:00:00 2001 From: Liam Huffman <44932470+whuffman36@users.noreply.github.com> Date: Wed, 23 Jul 2025 10:46:24 -0700 Subject: [PATCH 08/19] feat(bigquery): Add OpenTelemetry Samples (#3899) * feat(bigquery): Add OpenTelemetry Samples * Add dependencies to pom files * fix style * Fix dependencies, clean up sample * Add sample without parent span * Fix copy/paste error * Remove reference to global otel object * Replace custom exporter with logging exporter * Add logging exporter dep to snapshot and without-bom * Generate random strings for ds names * feat(bigquery): Add custom console exporter to samples * fix style, remove comments --- samples/install-without-bom/pom.xml | 31 +++++ samples/snapshot/pom.xml | 42 +++++++ samples/snippets/pom.xml | 37 ++++++ .../bigquery/EnableOpenTelemetryTracing.java | 85 ++++++++++++++ ...bleOpenTelemetryTracingWithParentSpan.java | 105 +++++++++++++++++ .../EnableOpenTelemetryTracingIT.java | 105 +++++++++++++++++ ...eOpenTelemetryTracingWithParentSpanIT.java | 110 ++++++++++++++++++ 7 files changed, 515 insertions(+) create mode 100644 samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java create mode 100644 samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java create mode 100644 samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java create mode 100644 samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index c492b1182..87a567033 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -59,6 +59,37 @@ google-oauth-client-jetty 1.39.0 + + io.opentelemetry + opentelemetry-api + 1.48.0 + + + io.opentelemetry + opentelemetry-context + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk-common + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk-trace + 1.48.0 + + + io.opentelemetry + opentelemetry-exporter-logging + 1.48.0 + + com.google.cloud diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 496458c70..f2c96c00d 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -39,6 +39,18 @@ UTF-8 + + + + io.opentelemetry + opentelemetry-bom + 1.48.0 + pom + import + + + + @@ -82,6 +94,36 @@ 1.4.4 test + + io.opentelemetry + opentelemetry-api + 1.48.0 + + + io.opentelemetry + opentelemetry-context + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk-common + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk-trace + 1.48.0 + + + io.opentelemetry + opentelemetry-exporter-logging + 1.48.0 + diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 0e32438ed..2b5dfd4bc 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -51,6 +51,13 @@ pom import + + io.opentelemetry + opentelemetry-bom + 1.48.0 + pom + import + @@ -59,6 +66,36 @@ com.google.cloud google-cloud-bigquery + + io.opentelemetry + opentelemetry-api + 1.48.0 + + + io.opentelemetry + opentelemetry-context + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk-common + 1.48.0 + + + io.opentelemetry + opentelemetry-sdk-trace + 1.48.0 + + + io.opentelemetry + opentelemetry-exporter-logging + 1.48.0 + diff --git a/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java new file mode 100644 index 000000000..57ec7eb71 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java @@ -0,0 +1,85 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.bigquery; + +// [START bigquery_enable_otel_tracing] +import com.google.cloud.bigquery.BigQuery; +import com.google.cloud.bigquery.BigQueryOptions; +import com.google.cloud.bigquery.Dataset; +import com.google.cloud.bigquery.DatasetInfo; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.exporter.logging.LoggingSpanExporter; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.samplers.Sampler; +import java.util.logging.ConsoleHandler; +import java.util.logging.Logger; + +public class EnableOpenTelemetryTracing { + private static final Logger log = Logger.getLogger(EnableOpenTelemetryTracing.class.getName()); + + public static void main(String[] args) { + // Set logging to System.err. + ConsoleHandler ch = new ConsoleHandler(); + log.addHandler(ch); + + // TODO(developer): Replace values before running the sample. + final String tracerName = "Sample Tracer"; + final String datasetId = "sampleDatasetId"; + + // Create TracerProvider that exports to a logger. + SdkTracerProvider tracerProvider = + SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.builder(LoggingSpanExporter.create()).build()) + .setSampler(Sampler.alwaysOn()) + .build(); + + // Create global OpenTelemetry instance using the TracerProvider. + OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build(); + + // Create Tracer instance from the OpenTelemetry object. Tracers are used to create + // Spans. There can be multiple Tracers in an OpenTelemetry instance. + Tracer tracer = otel.getTracer(tracerName); + + enableOpenTelemetry(tracer, datasetId); + } + + public static void enableOpenTelemetry(Tracer tracer, String datasetId) { + // Create BigQuery client to trace. EnableOpenTelemetryTracing and OpenTelemetryTracer must + // be set to enable tracing. + BigQueryOptions otelOptions = + BigQueryOptions.newBuilder() + .setEnableOpenTelemetryTracing(true) + .setOpenTelemetryTracer(tracer) + .build(); + BigQuery bigquery = otelOptions.getService(); + + try { + // Create dataset. + DatasetInfo info = DatasetInfo.newBuilder(datasetId).build(); + Dataset dataset = bigquery.create(info); + } catch (Exception e) { + System.out.println( + String.format("Failed to create dataset: %s: %s", e.toString(), e.getMessage())); + } finally { + bigquery.delete(datasetId); + } + } +} +// [END bigquery_enable_otel_tracing] diff --git a/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java new file mode 100644 index 000000000..af69df10b --- /dev/null +++ b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java @@ -0,0 +1,105 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.bigquery; + +// [START bigquery_enable_otel_tracing_with_parent_span] +import com.google.cloud.bigquery.BigQuery; +import com.google.cloud.bigquery.BigQueryOptions; +import com.google.cloud.bigquery.Dataset; +import com.google.cloud.bigquery.DatasetInfo; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Scope; +import io.opentelemetry.exporter.logging.LoggingSpanExporter; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.samplers.Sampler; +import java.time.LocalDate; +import java.util.logging.ConsoleHandler; +import java.util.logging.Logger; + +public class EnableOpenTelemetryTracingWithParentSpan { + private static final Logger log = + Logger.getLogger(EnableOpenTelemetryTracingWithParentSpan.class.getName()); + + public static void main(String[] args) { + // Set logging to System.err. + ConsoleHandler ch = new ConsoleHandler(); + log.addHandler(ch); + + // TODO(developer): Replace values before running the sample. + final String tracerName = "Sample Tracer"; + final String parentSpanName = "Sample Parent Span"; + final String datasetId = "sampleDatasetId"; + + // Create TracerProvider that exports to a logger. + SdkTracerProvider tracerProvider = + SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.builder(LoggingSpanExporter.create()).build()) + .setSampler(Sampler.alwaysOn()) + .build(); + + // Create OpenTelemetry instance using the TracerProvider. + OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build(); + + // Create Tracer instance from the global OpenTelemetry object. Tracers are used to create + // Spans. There can be multiple Tracers in a global OpenTelemetry instance. + final Tracer tracer = otel.getTracer(tracerName); + enableOpenTelemetryWithParentSpan(tracer, parentSpanName, datasetId); + } + + public static void enableOpenTelemetryWithParentSpan( + Tracer tracer, String parentSpanName, String datasetId) { + // Create BigQuery client to trace. EnableOpenTelemetryTracing and OpenTelemetryTracer must + // be set to enable tracing. + BigQueryOptions otelOptions = + BigQueryOptions.newBuilder() + .setEnableOpenTelemetryTracing(true) + .setOpenTelemetryTracer(tracer) + .build(); + BigQuery bigquery = otelOptions.getService(); + + LocalDate currentDate = LocalDate.now(); + + // Create the root parent Span. setNoParent() ensures that it is a parent Span with a Span ID + // of 0. + Span parentSpan = + tracer + .spanBuilder(parentSpanName) + .setNoParent() + .setAttribute("current_date", currentDate.toString()) + .startSpan(); + + // The Span Context is automatically passed on to any functions called within the scope of the + // try block. parentSpan.makeCurrent() sets parentSpan to be the parent of any Spans created in + // this scope, or the scope of any functions called within this scope. + try (Scope parentScope = parentSpan.makeCurrent()) { + DatasetInfo info = DatasetInfo.newBuilder(datasetId).build(); + Dataset dataset = bigquery.create(info); + } catch (Exception e) { + System.out.println( + String.format("Failed to create dataset: %s: %s", e.toString(), e.getMessage())); + } finally { + // finally block ensures that Spans are cleaned up properly. + parentSpan.end(); + bigquery.delete(datasetId); + } + } +} +// [END bigquery_enable_otel_tracing_with_parent_span] diff --git a/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java new file mode 100644 index 000000000..0ad565101 --- /dev/null +++ b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java @@ -0,0 +1,105 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.bigquery; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.bigquery.testing.RemoteBigQueryHelper; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.samplers.Sampler; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Collection; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class EnableOpenTelemetryTracingIT { + private final Logger log = Logger.getLogger(this.getClass().getName()); + private ByteArrayOutputStream bout; + private PrintStream out; + private PrintStream originalPrintStream; + + private static class ConsoleSpanExporter + implements io.opentelemetry.sdk.trace.export.SpanExporter { + @Override + public CompletableResultCode export(Collection collection) { + if (collection.isEmpty()) { + return CompletableResultCode.ofFailure(); + } + for (SpanData data : collection) { + System.out.println(data); + } + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode flush() { + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode shutdown() { + return CompletableResultCode.ofSuccess(); + } + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + originalPrintStream = System.out; + System.setOut(out); + } + + @After + public void tearDown() { + // restores print statements in the original method + System.out.flush(); + System.setOut(originalPrintStream); + log.log(Level.INFO, "\n" + bout.toString()); + } + + @Test + public void testEnableOpenTelemetryTracing() { + final String tracerName = "testSampleTracer"; + final String datasetId = RemoteBigQueryHelper.generateDatasetName(); + + SdkTracerProvider tracerProvider = + SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.builder(new ConsoleSpanExporter()).build()) + .setSampler(Sampler.alwaysOn()) + .build(); + + OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build(); + + final Tracer tracer = otel.getTracer(tracerName); + + EnableOpenTelemetryTracing.enableOpenTelemetry(tracer, datasetId); + + assertThat(bout.toString()).contains("com.google.cloud.bigquery.BigQuery.createDataset"); + assertThat(bout.toString()).contains("com.google.cloud.bigquery.BigQuery.deleteDataset"); + } +} diff --git a/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java new file mode 100644 index 000000000..482915008 --- /dev/null +++ b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java @@ -0,0 +1,110 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.bigquery; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.bigquery.testing.RemoteBigQueryHelper; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.samplers.Sampler; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.time.LocalDate; +import java.util.Collection; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class EnableOpenTelemetryTracingWithParentSpanIT { + private final Logger log = Logger.getLogger(this.getClass().getName()); + private ByteArrayOutputStream bout; + private PrintStream out; + private PrintStream originalPrintStream; + + private static class ConsoleSpanExporter + implements io.opentelemetry.sdk.trace.export.SpanExporter { + @Override + public CompletableResultCode export(Collection collection) { + if (collection.isEmpty()) { + return CompletableResultCode.ofFailure(); + } + for (SpanData data : collection) { + System.out.println(data); + } + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode flush() { + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode shutdown() { + return CompletableResultCode.ofSuccess(); + } + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + originalPrintStream = System.out; + System.setOut(out); + } + + @After + public void tearDown() { + // restores print statements in the original method + System.out.flush(); + System.setOut(originalPrintStream); + log.log(Level.INFO, "\n" + bout.toString()); + } + + @Test + public void testEnableOpenTelemetryWithParentSpan() { + final String tracerName = "testSampleTracer"; + final String parentSpanName = "testSampleParentSpan"; + final String datasetId = RemoteBigQueryHelper.generateDatasetName(); + final LocalDate currentDate = LocalDate.now(); + + SdkTracerProvider tracerProvider = + SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.builder(new ConsoleSpanExporter()).build()) + .setSampler(Sampler.alwaysOn()) + .build(); + + OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build(); + + final Tracer tracer = otel.getTracer(tracerName); + + EnableOpenTelemetryTracingWithParentSpan.enableOpenTelemetryWithParentSpan( + tracer, parentSpanName, datasetId); + + assertThat(bout.toString()).contains(parentSpanName); + assertThat(bout.toString()) + .contains(String.format("AttributesMap{data={current_date=%s}", currentDate.toString())); + } +} From aa3d10bc7f1f44f2e92ee631da8056aa762b25e3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 25 Jul 2025 03:48:02 +0200 Subject: [PATCH 09/19] test(deps): update dependency com.google.cloud:google-cloud-storage to v2.53.3 (#3882) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 850b288e5..e0e3aa024 100644 --- a/pom.xml +++ b/pom.xml @@ -137,7 +137,7 @@ com.google.cloud google-cloud-storage - 2.53.2 + 2.53.3 test From 4071e4cb2547b236183fd4fbb92c73f074cf2fa0 Mon Sep 17 00:00:00 2001 From: Liam Huffman <44932470+whuffman36@users.noreply.github.com> Date: Fri, 25 Jul 2025 09:06:15 -0700 Subject: [PATCH 10/19] feat(bigquery): Add otel metrics to request headers (#3900) --- .../bigquery/spi/v2/HttpBigQueryRpc.java | 147 +++++++++++++++++- 1 file changed, 142 insertions(+), 5 deletions(-) diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java index 9d89435ea..16737dc4b 100644 --- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java +++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java @@ -158,6 +158,9 @@ public Dataset getDatasetSkipExceptionTranslation( if (options.containsKey(Option.DATASET_VIEW)) { bqGetRequest.setDatasetView(options.get(Option.DATASET_VIEW).toString()); } + bqGetRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); Span getDataset = null; if (this.options.isOpenTelemetryTracingEnabled() @@ -205,6 +208,10 @@ public Tuple> listDatasetsSkipExceptionTranslation( .setMaxResults(Option.MAX_RESULTS.getLong(options)) .setPageToken(Option.PAGE_TOKEN.getString(options)); + datasetsListRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span listDatasets = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -256,6 +263,9 @@ public Dataset createSkipExceptionTranslation(Dataset dataset, Map op if (options.containsKey(Option.ACCESS_POLICY_VERSION)) { bqCreateRequest.setAccessPolicyVersion((Integer) options.get(Option.ACCESS_POLICY_VERSION)); } + bqCreateRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); Span createDataset = null; if (this.options.isOpenTelemetryTracingEnabled() @@ -302,6 +312,10 @@ public Table createSkipExceptionTranslation(Table table, Map options) .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqCreateRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span createTable = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -345,6 +359,10 @@ public Routine createSkipExceptionTranslation(Routine routine, Map op .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqCreateRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span createRoutine = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -391,6 +409,10 @@ public Job createSkipExceptionTranslation(Job job, Map options) throw .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqCreateRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span createJob = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -434,6 +456,10 @@ public Job createJobForQuerySkipExceptionTranslation(Job job) throws IOException Bigquery.Jobs.Insert bqCreateRequest = bigquery.jobs().insert(projectId, job).setPrettyPrint(false); + bqCreateRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span createJob = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -481,6 +507,10 @@ public boolean deleteDatasetSkipExceptionTranslation( .setPrettyPrint(false) .setDeleteContents(Option.DELETE_CONTENTS.getBoolean(options)); + bqDeleteRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span deleteDataset = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -528,6 +558,9 @@ public Dataset patchSkipExceptionTranslation(Dataset dataset, Map opt if (options.containsKey(Option.DATASET_UPDATE_MODE)) { bqPatchRequest.setUpdateMode(options.get(Option.DATASET_UPDATE_MODE).toString()); } + bqPatchRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); Span patchDataset = null; if (this.options.isOpenTelemetryTracingEnabled() @@ -576,6 +609,10 @@ public Table patchSkipExceptionTranslation(Table table, Map options) .setFields(Option.FIELDS.getString(options)) .setAutodetectSchema(BigQueryRpc.Option.AUTODETECT_SCHEMA.getBoolean(options)); + bqPatchRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span patchTable = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -625,6 +662,10 @@ public Table getTableSkipExceptionTranslation( .setFields(Option.FIELDS.getString(options)) .setView(getTableMetadataOption(options)); + bqGetRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getTable = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -676,6 +717,10 @@ public Tuple> listTablesSkipExceptionTranslation( .setMaxResults(Option.MAX_RESULTS.getLong(options)) .setPageToken(Option.PAGE_TOKEN.getString(options)); + tableListRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span listTables = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -740,6 +785,10 @@ public boolean deleteTableSkipExceptionTranslation( Bigquery.Tables.Delete bqDeleteRequest = bigquery.tables().delete(projectId, datasetId, tableId); + bqDeleteRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span deleteTable = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -783,6 +832,10 @@ public Model patchSkipExceptionTranslation(Model model, Map options) .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqPatchRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span patchModel = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -832,6 +885,10 @@ public Model getModelSkipExceptionTranslation( .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqGetRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getModel = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -877,6 +934,10 @@ public Tuple> listModelsSkipExceptionTranslation( .setMaxResults(Option.MAX_RESULTS.getLong(options)) .setPageToken(Option.PAGE_TOKEN.getString(options)); + modelListRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span listModels = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -923,6 +984,10 @@ public boolean deleteModelSkipExceptionTranslation( Bigquery.Models.Delete bqDeleteRequest = bigquery.models().delete(projectId, datasetId, modelId); + bqDeleteRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span deleteModels = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -968,6 +1033,10 @@ public Routine updateSkipExceptionTranslation(Routine routine, Map op .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqUpdateRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span updateRoutine = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1017,6 +1086,10 @@ public Routine getRoutineSkipExceptionTranslation( .setPrettyPrint(false) .setFields(Option.FIELDS.getString(options)); + bqGetRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getRoutine = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1062,6 +1135,10 @@ public Tuple> listRoutinesSkipExceptionTranslation( .setMaxResults(Option.MAX_RESULTS.getLong(options)) .setPageToken(Option.PAGE_TOKEN.getString(options)); + routineListRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span listRoutines = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1109,6 +1186,10 @@ public boolean deleteRoutineSkipExceptionTranslation( Bigquery.Routines.Delete bqDeleteRequest = bigquery.routines().delete(projectId, datasetId, routineId); + bqDeleteRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span deleteRoutine = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1150,6 +1231,10 @@ public TableDataInsertAllResponse insertAllSkipExceptionTranslation( .insertAll(projectId, datasetId, tableId, request) .setPrettyPrint(false); + insertAllRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span insertAll = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1197,6 +1282,10 @@ public TableDataList listTableDataSkipExceptionTranslation( ? BigInteger.valueOf(Option.START_INDEX.getLong(options)) : null); + bqListRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span listTableData = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1251,6 +1340,10 @@ public TableDataList listTableDataWithRowLimitSkipExceptionTranslation( .setMaxResults(Long.valueOf(maxResultPerPage)) .setPageToken(pageToken); + bqListRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span listTableData = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1297,6 +1390,10 @@ public Job getJobSkipExceptionTranslation( .setLocation(location) .setFields(Option.FIELDS.getString(options)); + bqGetRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getJob = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1340,6 +1437,10 @@ public Job getQueryJobSkipExceptionTranslation(String projectId, String jobId, S Bigquery.Jobs.Get bqGetRequest = bigquery.jobs().get(projectId, jobId).setPrettyPrint(false).setLocation(location); + bqGetRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getJob = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1375,7 +1476,7 @@ public Tuple> listJobs(String projectId, Map op public Tuple> listJobsSkipExceptionTranslation( String projectId, Map options) throws IOException { validateRPC(); - Bigquery.Jobs.List request = + Bigquery.Jobs.List listJobsRequest = bigquery .jobs() .list(projectId) @@ -1388,11 +1489,16 @@ public Tuple> listJobsSkipExceptionTranslation( .setProjection(DEFAULT_PROJECTION) .setParentJobId(Option.PARENT_JOB_ID.getString(options)); if (Option.MIN_CREATION_TIME.getLong(options) != null) { - request.setMinCreationTime(BigInteger.valueOf(Option.MIN_CREATION_TIME.getLong(options))); + listJobsRequest.setMinCreationTime( + BigInteger.valueOf(Option.MIN_CREATION_TIME.getLong(options))); } if (Option.MAX_CREATION_TIME.getLong(options) != null) { - request.setMaxCreationTime(BigInteger.valueOf(Option.MAX_CREATION_TIME.getLong(options))); + listJobsRequest.setMaxCreationTime( + BigInteger.valueOf(Option.MAX_CREATION_TIME.getLong(options))); } + listJobsRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); Span listJobs = null; if (this.options.isOpenTelemetryTracingEnabled() @@ -1405,11 +1511,11 @@ public Tuple> listJobsSkipExceptionTranslation( .setAttribute("bq.rpc.service", "JobService") .setAttribute("bq.rpc.method", "ListJobs") .setAttribute("bq.rpc.system", "http") - .setAttribute("bq.rpc.page_token", request.getPageToken()) + .setAttribute("bq.rpc.page_token", listJobsRequest.getPageToken()) .setAllAttributes(otelAttributesFromOptions(options)) .startSpan(); } - JobList jobsList = request.execute(); + JobList jobsList = listJobsRequest.execute(); if (listJobs != null) { listJobs.setAttribute("bq.rpc.next_page_token", jobsList.getNextPageToken()); listJobs.end(); @@ -1463,6 +1569,10 @@ public boolean cancelSkipExceptionTranslation(String projectId, String jobId, St Bigquery.Jobs.Cancel bqCancelRequest = bigquery.jobs().cancel(projectId, jobId).setLocation(location).setPrettyPrint(false); + bqCancelRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span cancelJob = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1499,6 +1609,10 @@ public boolean deleteJobSkipExceptionTranslation( Bigquery.Jobs.Delete bqDeleteRequest = bigquery.jobs().delete(projectId, jobName).setLocation(location).setPrettyPrint(false); + bqDeleteRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span deleteJob = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1547,6 +1661,10 @@ public GetQueryResultsResponse getQueryResultsSkipExceptionTranslation( : null) .setTimeoutMs(Option.TIMEOUT.getLong(options)); + queryRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getQueryResults = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1595,6 +1713,10 @@ public GetQueryResultsResponse getQueryResultsWithRowLimitSkipExceptionTranslati .setMaxResults(Long.valueOf(maxResultPerPage)) .setTimeoutMs(timeoutMs); + queryRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); + Span getQueryResults = null; if (this.options.isOpenTelemetryTracingEnabled() && this.options.getOpenTelemetryTracer() != null) { @@ -1631,6 +1753,9 @@ public QueryResponse queryRpcSkipExceptionTranslation(String projectId, QueryReq throws IOException { validateRPC(); Bigquery.Jobs.Query queryRequest = bigquery.jobs().query(projectId, content); + queryRequest + .getRequestHeaders() + .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled()); Span getQueryResults = null; if (this.options.isOpenTelemetryTracingEnabled() @@ -1765,6 +1890,10 @@ public Policy getIamPolicySkipExceptionTranslation(String resourceId, Map From e6453bf08cb822e820ffeb9ee3bd43cfcf2d4d15 Mon Sep 17 00:00:00 2001 From: Phong Chuong <147636638+PhongChuong@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:03:23 -0400 Subject: [PATCH 16/19] =?UTF-8?q?chore(samples):=20update=20sample=20open?= =?UTF-8?q?=20telemetry=20dep=20to=20reduce=20#=20of=20renov=E2=80=A6=20(#?= =?UTF-8?q?3911)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(samples): update sample open telemetry dep to reduce # of renovate-bot PRs * fix extra dep --- samples/install-without-bom/pom.xml | 13 +++++++------ samples/snapshot/pom.xml | 6 ------ samples/snippets/pom.xml | 6 ------ 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 4bc7f7a2b..7cd683afd 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -37,6 +37,7 @@ 1.8 1.8 UTF-8 + 1.52.0 @@ -62,32 +63,32 @@ io.opentelemetry opentelemetry-api - 1.52.0 + ${opentelemetry.version} io.opentelemetry opentelemetry-context - 1.52.0 + ${opentelemetry.version} io.opentelemetry opentelemetry-sdk - 1.48.0 + ${opentelemetry.version} io.opentelemetry opentelemetry-sdk-common - 1.48.0 + ${opentelemetry.version} io.opentelemetry opentelemetry-sdk-trace - 1.48.0 + ${opentelemetry.version} io.opentelemetry opentelemetry-exporter-logging - 1.52.0 + ${opentelemetry.version} diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 7e2a08cab..f94d4c4c1 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -97,32 +97,26 @@ io.opentelemetry opentelemetry-api - 1.52.0 io.opentelemetry opentelemetry-context - 1.52.0 io.opentelemetry opentelemetry-sdk - 1.48.0 io.opentelemetry opentelemetry-sdk-common - 1.48.0 io.opentelemetry opentelemetry-sdk-trace - 1.48.0 io.opentelemetry opentelemetry-exporter-logging - 1.52.0 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index da5d031b5..d6f779c24 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -69,32 +69,26 @@ io.opentelemetry opentelemetry-api - 1.52.0 io.opentelemetry opentelemetry-context - 1.52.0 io.opentelemetry opentelemetry-sdk - 1.48.0 io.opentelemetry opentelemetry-sdk-common - 1.48.0 io.opentelemetry opentelemetry-sdk-trace - 1.48.0 io.opentelemetry opentelemetry-exporter-logging - 1.52.0 From 82056237f194a6c99ec4fb3a4315023efdedff1b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 31 Jul 2025 16:14:46 +0200 Subject: [PATCH 17/19] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.50.2 (#3901) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/continuous/graalvm-native-a.cfg | 2 +- .kokoro/continuous/graalvm-native-b.cfg | 2 +- .kokoro/continuous/graalvm-native-c.cfg | 2 +- .kokoro/presubmit/graalvm-native-a.cfg | 2 +- .kokoro/presubmit/graalvm-native-b.cfg | 2 +- .kokoro/presubmit/graalvm-native-c.cfg | 2 +- google-cloud-bigquery-bom/pom.xml | 2 +- pom.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 1795d3b24..6d5c25a0c 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -17,7 +17,7 @@ jobs: # repository .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.50.1 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.50.2 with: # java-bigquery does not produce a BOM. Fortunately the root pom.xml # defines google-cloud-bigquery in dependencyManagement section. So diff --git a/.kokoro/continuous/graalvm-native-a.cfg b/.kokoro/continuous/graalvm-native-a.cfg index 13d12ce34..bfe47cf7d 100644 --- a/.kokoro/continuous/graalvm-native-a.cfg +++ b/.kokoro/continuous/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.2" } env_vars: { diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg index 4696d04ef..603c54174 100644 --- a/.kokoro/continuous/graalvm-native-b.cfg +++ b/.kokoro/continuous/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.2" } env_vars: { diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg index 26d39a747..6b35d89de 100644 --- a/.kokoro/continuous/graalvm-native-c.cfg +++ b/.kokoro/continuous/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.2" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg index 13d12ce34..bfe47cf7d 100644 --- a/.kokoro/presubmit/graalvm-native-a.cfg +++ b/.kokoro/presubmit/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.2" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg index 4696d04ef..603c54174 100644 --- a/.kokoro/presubmit/graalvm-native-b.cfg +++ b/.kokoro/presubmit/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.2" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg index 26d39a747..6b35d89de 100644 --- a/.kokoro/presubmit/graalvm-native-c.cfg +++ b/.kokoro/presubmit/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.2" } env_vars: { diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml index c41c4c601..90111de1a 100644 --- a/google-cloud-bigquery-bom/pom.xml +++ b/google-cloud-bigquery-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.50.1 + 3.50.2 diff --git a/pom.xml b/pom.xml index 79a2629d0..7304158de 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.50.1 + 3.50.2 From bb6f6dcb90b1ddf72e630c4dc64737cf2c2ebd2e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 31 Jul 2025 17:32:25 +0200 Subject: [PATCH 18/19] chore(deps): update dependency com.google.cloud:google-cloud-bigquerystorage-bom to v3.16.1 (#3912) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7304158de..e0d9c5550 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ com.google.cloud google-cloud-bigquerystorage-bom - 3.16.0 + 3.16.1 pom import From 548f5b6bbb71f949ad4d1560ab28e72708e31919 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 31 Jul 2025 17:28:28 -0400 Subject: [PATCH 19/19] chore(main): release 2.54.0 (#3892) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 19 +++++++++++++++++++ benchmark/pom.xml | 2 +- google-cloud-bigquery-bom/pom.xml | 4 ++-- google-cloud-bigquery/pom.xml | 4 ++-- pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 2 +- 7 files changed, 28 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9336a4195..147b9c589 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [2.54.0](https://github.com/googleapis/java-bigquery/compare/v2.53.0...v2.54.0) (2025-07-31) + + +### Features + +* **bigquery:** Add OpenTelemetry Samples ([#3899](https://github.com/googleapis/java-bigquery/issues/3899)) ([e3d9ed9](https://github.com/googleapis/java-bigquery/commit/e3d9ed92ca5d9b58b5747960d74f895ed8733ebf)) +* **bigquery:** Add otel metrics to request headers ([#3900](https://github.com/googleapis/java-bigquery/issues/3900)) ([4071e4c](https://github.com/googleapis/java-bigquery/commit/4071e4cb2547b236183fd4fbb92c73f074cf2fa0)) + + +### Dependencies + +* Update dependency com.google.api.grpc:proto-google-cloud-bigqueryconnection-v1 to v2.70.0 ([#3890](https://github.com/googleapis/java-bigquery/issues/3890)) ([84207e2](https://github.com/googleapis/java-bigquery/commit/84207e297eec75bcb4f1cc1b64423d7c2ddd6c30)) +* Update dependency com.google.apis:google-api-services-bigquery to v2-rev20250706-2.0.0 ([#3910](https://github.com/googleapis/java-bigquery/issues/3910)) ([ae5c971](https://github.com/googleapis/java-bigquery/commit/ae5c97146c7076e90c000fd98b797ec8e08a9cd8)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.2 ([#3901](https://github.com/googleapis/java-bigquery/issues/3901)) ([8205623](https://github.com/googleapis/java-bigquery/commit/82056237f194a6c99ec4fb3a4315023efdedff1b)) +* Update dependency io.opentelemetry:opentelemetry-api to v1.52.0 ([#3902](https://github.com/googleapis/java-bigquery/issues/3902)) ([772407b](https://github.com/googleapis/java-bigquery/commit/772407b12f4da005f79eafc944d4c53f0eec5c27)) +* Update dependency io.opentelemetry:opentelemetry-bom to v1.52.0 ([#3903](https://github.com/googleapis/java-bigquery/issues/3903)) ([509a6fc](https://github.com/googleapis/java-bigquery/commit/509a6fc0bb7e7a101bf0d4334a3ff1adde2cab09)) +* Update dependency io.opentelemetry:opentelemetry-context to v1.52.0 ([#3904](https://github.com/googleapis/java-bigquery/issues/3904)) ([96c1bae](https://github.com/googleapis/java-bigquery/commit/96c1bae0fcdfdfc2dbb25dcae5007c5d02111a8c)) +* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.52.0 ([#3905](https://github.com/googleapis/java-bigquery/issues/3905)) ([28ee4c9](https://github.com/googleapis/java-bigquery/commit/28ee4c941b99b1fe3803aefbe7a8ae57100d76cb)) + ## [2.53.0](https://github.com/googleapis/java-bigquery/compare/v2.52.0...v2.53.0) (2025-07-14) diff --git a/benchmark/pom.xml b/benchmark/pom.xml index 9352cc46f..5f875493d 100644 --- a/benchmark/pom.xml +++ b/benchmark/pom.xml @@ -6,7 +6,7 @@ google-cloud-bigquery-parent com.google.cloud - 2.53.1-SNAPSHOT + 2.54.0 diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml index 90111de1a..cefddd199 100644 --- a/google-cloud-bigquery-bom/pom.xml +++ b/google-cloud-bigquery-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-bigquery-bom - 2.53.1-SNAPSHOT + 2.54.0 pom com.google.cloud @@ -54,7 +54,7 @@ com.google.cloud google-cloud-bigquery - 2.53.1-SNAPSHOT + 2.54.0 diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml index b3f4461a0..058a06caa 100644 --- a/google-cloud-bigquery/pom.xml +++ b/google-cloud-bigquery/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-bigquery - 2.53.1-SNAPSHOT + 2.54.0 jar BigQuery https://github.com/googleapis/java-bigquery @@ -11,7 +11,7 @@ com.google.cloud google-cloud-bigquery-parent - 2.53.1-SNAPSHOT + 2.54.0 google-cloud-bigquery diff --git a/pom.xml b/pom.xml index e0d9c5550..534e91a49 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-bigquery-parent pom - 2.53.1-SNAPSHOT + 2.54.0 BigQuery Parent https://github.com/googleapis/java-bigquery @@ -93,7 +93,7 @@ com.google.cloud google-cloud-bigquery - 2.53.1-SNAPSHOT + 2.54.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index f94d4c4c1..186090714 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -56,7 +56,7 @@ com.google.cloud google-cloud-bigquery - 2.53.1-SNAPSHOT + 2.54.0 diff --git a/versions.txt b/versions.txt index 73c78399e..f0fee808c 100644 --- a/versions.txt +++ b/versions.txt @@ -1,4 +1,4 @@ # Format: # module:released-version:current-version -google-cloud-bigquery:2.53.0:2.53.1-SNAPSHOT \ No newline at end of file +google-cloud-bigquery:2.54.0:2.54.0 \ No newline at end of file