From c0e6adc3e1b85fb124ed3e53e13e30ecc481fcf9 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 19 Aug 2026 14:19:33 -0400 Subject: [PATCH 1/4] chore: Add sample retryContext --- .../google/cloud/bigquery/BigQueryImpl.java | 3 +- .../cloud/bigquery/BigQueryRetryHelper.java | 65 ++++++++++++++++++- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index 2ad09c33d7cb..e4a4298a995a 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -588,7 +588,8 @@ public com.google.api.services.bigquery.model.Job call() throws IOException { ? getBigQueryRetryConfig(optionsMap) : DEFAULT_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java index 6b7847c59892..8ce3c0633b0e 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java @@ -22,10 +22,16 @@ import com.google.api.gax.retrying.ResultRetryAlgorithm; import com.google.api.gax.retrying.RetryAlgorithm; import com.google.api.gax.retrying.RetrySettings; +import com.google.api.gax.retrying.RetryingContext; import com.google.api.gax.retrying.RetryingExecutor; import com.google.api.gax.retrying.RetryingFuture; import com.google.api.gax.retrying.TimedAttemptSettings; import com.google.api.gax.retrying.TimedRetryAlgorithm; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.tracing.ApiTracer; +import com.google.api.gax.tracing.ApiTracerFactory; +import com.google.api.gax.tracing.BaseApiTracer; +import com.google.api.gax.tracing.SpanName; import com.google.cloud.RetryHelper; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; @@ -33,6 +39,9 @@ import io.opentelemetry.context.ContextKey; import io.opentelemetry.context.Scope; import java.io.IOException; +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; @@ -53,7 +62,19 @@ public static V runWithRetries( ApiClock clock, BigQueryRetryConfig bigQueryRetryConfig, boolean isOpenTelemetryEnabled, - Tracer openTelemetryTracer) + Tracer openTelemetryTracer) { + return runWithRetries(callable, retrySettings, resultRetryAlgorithm, clock, bigQueryRetryConfig, isOpenTelemetryEnabled, openTelemetryTracer, null); + } + + public static V runWithRetries( + Callable callable, + RetrySettings retrySettings, + ResultRetryAlgorithm resultRetryAlgorithm, + ApiClock clock, + BigQueryRetryConfig bigQueryRetryConfig, + boolean isOpenTelemetryEnabled, + Tracer openTelemetryTracer, + ApiTracerFactory apiTracerFactory) throws RetryHelperException { Span runWithRetries = null; if (isOpenTelemetryEnabled && openTelemetryTracer != null) { @@ -75,7 +96,9 @@ public static V runWithRetries( callable, new ExponentialRetryAlgorithm(retrySettings, clock), algorithm, - bigQueryRetryConfig); + bigQueryRetryConfig, + retrySettings, + apiTracerFactory); } catch (Exception e) { // Checks for IOException and translate it into BigQueryException. The BigQueryException // constructor parses the IOException and translate it into internal code. @@ -94,7 +117,9 @@ private static V run( Callable callable, TimedRetryAlgorithm timedAlgorithm, ResultRetryAlgorithm resultAlgorithm, - BigQueryRetryConfig bigQueryRetryConfig) + BigQueryRetryConfig bigQueryRetryConfig, + RetrySettings retrySettings, + ApiTracerFactory apiTracerFactory) throws ExecutionException, InterruptedException { RetryAlgorithm retryAlgorithm = new BigQueryRetryAlgorithm<>( @@ -105,6 +130,40 @@ private static V run( // BigQueryRetryAlgorithm retries considering bigQueryRetryConfig RetryingExecutor executor = new DirectRetryingExecutor<>(retryAlgorithm); + // 1. Resolve method name for the tracer span + String methodName = "execute"; + try { + Method enclosingMethod = callable.getClass().getEnclosingMethod(); + if (enclosingMethod != null) { + methodName = enclosingMethod.getName(); + } + } catch (Exception ignored) { + } + + // 2. Obtain ApiTracer from the factory + final ApiTracer tracer = (apiTracerFactory != null) + ? apiTracerFactory.newTracer( + null, SpanName.of("BigQuery", methodName), ApiTracerFactory.OperationType.Unary) + : BaseApiTracer.getInstance(); + + // 3. Construct RetryingContext + RetryingContext context = new RetryingContext() { + @Override + public ApiTracer getTracer() { + return tracer; + } + + @Override + public RetrySettings getRetrySettings() { + return retrySettings; + } + + @Override + public Set getRetryableCodes() { + return Collections.emptySet(); + } + }; + // Log retry info if (LOG.isLoggable(Level.FINEST)) { LOG.log( From 413f087a47cd78cfb65b26ca209ddc9da068bea7 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 24 Aug 2026 12:24:09 -0400 Subject: [PATCH 2/4] chore: Pass the executor in --- .../java/com/google/cloud/bigquery/BigQueryRetryHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java index 8ce3c0633b0e..a82f2ebeb8bb 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java @@ -128,7 +128,7 @@ private static V run( bigQueryRetryConfig); // using BigQueryRetryAlgorithm in place of // com.google.api.gax.retrying.RetryAlgorithm, as // BigQueryRetryAlgorithm retries considering bigQueryRetryConfig - RetryingExecutor executor = new DirectRetryingExecutor<>(retryAlgorithm); + DirectRetryingExecutor executor = new DirectRetryingExecutor<>(retryAlgorithm); // 1. Resolve method name for the tracer span String methodName = "execute"; @@ -175,7 +175,7 @@ public Set getRetryableCodes() { }); } - RetryingFuture retryingFuture = executor.createFuture(callable); + RetryingFuture retryingFuture = executor.createFuture(callable, context); executor.submit(retryingFuture); return retryingFuture.get(); } From 35978a892518622093a81921ac6a0cdc90805d1e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 24 Aug 2026 14:45:00 -0400 Subject: [PATCH 3/4] chore: Resolve lint issues --- .../cloud/bigquery/BigQueryRetryHelper.java | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java index a82f2ebeb8bb..5cb19e46cd4d 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java @@ -23,7 +23,6 @@ import com.google.api.gax.retrying.RetryAlgorithm; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.retrying.RetryingContext; -import com.google.api.gax.retrying.RetryingExecutor; import com.google.api.gax.retrying.RetryingFuture; import com.google.api.gax.retrying.TimedAttemptSettings; import com.google.api.gax.retrying.TimedRetryAlgorithm; @@ -63,7 +62,15 @@ public static V runWithRetries( BigQueryRetryConfig bigQueryRetryConfig, boolean isOpenTelemetryEnabled, Tracer openTelemetryTracer) { - return runWithRetries(callable, retrySettings, resultRetryAlgorithm, clock, bigQueryRetryConfig, isOpenTelemetryEnabled, openTelemetryTracer, null); + return runWithRetries( + callable, + retrySettings, + resultRetryAlgorithm, + clock, + bigQueryRetryConfig, + isOpenTelemetryEnabled, + openTelemetryTracer, + null); } public static V runWithRetries( @@ -141,28 +148,30 @@ private static V run( } // 2. Obtain ApiTracer from the factory - final ApiTracer tracer = (apiTracerFactory != null) - ? apiTracerFactory.newTracer( - null, SpanName.of("BigQuery", methodName), ApiTracerFactory.OperationType.Unary) - : BaseApiTracer.getInstance(); + final ApiTracer tracer = + (apiTracerFactory != null) + ? apiTracerFactory.newTracer( + null, SpanName.of("BigQuery", methodName), ApiTracerFactory.OperationType.Unary) + : BaseApiTracer.getInstance(); // 3. Construct RetryingContext - RetryingContext context = new RetryingContext() { - @Override - public ApiTracer getTracer() { - return tracer; - } + RetryingContext context = + new RetryingContext() { + @Override + public ApiTracer getTracer() { + return tracer; + } - @Override - public RetrySettings getRetrySettings() { - return retrySettings; - } + @Override + public RetrySettings getRetrySettings() { + return retrySettings; + } - @Override - public Set getRetryableCodes() { - return Collections.emptySet(); - } - }; + @Override + public Set getRetryableCodes() { + return Collections.emptySet(); + } + }; // Log retry info if (LOG.isLoggable(Level.FINEST)) { From 77870f4b9a608bd276c99fa326f4e98118e72e52 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 28 Aug 2026 18:09:56 -0400 Subject: [PATCH 4/4] chore(bigquery): pass ApiTracerFactory to all runWithRetries calls --- .../google/cloud/bigquery/BigQueryImpl.java | 93 ++++++++++++------- .../google/cloud/bigquery/ConnectionImpl.java | 18 ++-- .../cloud/bigquery/TableDataWriteChannel.java | 6 +- 3 files changed, 78 insertions(+), 39 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index e4a4298a995a..1890f731f6eb 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -317,7 +317,8 @@ public com.google.api.services.bigquery.model.Dataset call() throws IOException getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -365,7 +366,8 @@ public Tuple> call() { serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String nextPageToken = result.x(); Iterable projects = Iterables.transform( @@ -430,7 +432,8 @@ public com.google.api.services.bigquery.model.Table call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -486,7 +489,8 @@ public com.google.api.services.bigquery.model.Routine call() throws IOException getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -683,7 +687,8 @@ public com.google.api.services.bigquery.model.Dataset call() throws IOException getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); return Dataset.fromPb(this, answer); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { @@ -749,7 +754,8 @@ private static Page listDatasets( serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String cursor = result.x(); return new PageImpl<>( new DatasetPageFetcher(projectId, serviceOptions, cursor, optionsMap), @@ -801,7 +807,8 @@ public Boolean call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { return false; @@ -852,7 +859,8 @@ public Boolean call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { return false; @@ -898,7 +906,8 @@ public Boolean call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { return false; @@ -944,7 +953,8 @@ public Boolean call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { return false; @@ -988,7 +998,8 @@ public Boolean call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -1029,7 +1040,8 @@ public com.google.api.services.bigquery.model.Dataset call() throws IOException getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -1076,7 +1088,8 @@ public com.google.api.services.bigquery.model.Table call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -1122,7 +1135,8 @@ public com.google.api.services.bigquery.model.Model call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -1168,7 +1182,8 @@ public com.google.api.services.bigquery.model.Routine call() throws IOException getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -1222,7 +1237,8 @@ public com.google.api.services.bigquery.model.Table call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); return Table.fromPb(this, answer); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { @@ -1281,7 +1297,8 @@ public com.google.api.services.bigquery.model.Model call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); return Model.fromPb(this, answer); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { @@ -1340,7 +1357,8 @@ public com.google.api.services.bigquery.model.Routine call() throws IOException getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); return Routine.fromPb(this, answer); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { @@ -1558,7 +1576,8 @@ public Tuple> cal serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String cursor = result.x(); Iterable tables = Iterables.transform( @@ -1599,7 +1618,8 @@ public Tuple> cal serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String cursor = result.x(); Iterable models = Iterables.transform( @@ -1640,7 +1660,8 @@ private static Page listRoutines( serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String cursor = result.x(); Iterable routines = Iterables.transform( @@ -1726,7 +1747,8 @@ public TableDataInsertAllResponse call() throws Exception { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } @@ -1821,7 +1843,8 @@ public TableDataList call() throws IOException { serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String cursor = result.getPageToken(); Map pageOptionMap = Strings.isNullOrEmpty(cursor) ? optionsMap : optionMap(TableDataListOption.startIndex(0)); @@ -1898,7 +1921,8 @@ public com.google.api.services.bigquery.model.Job call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); return Job.fromPb(this, answer); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { @@ -1955,7 +1979,8 @@ public Tuple> call( serviceOptions.getClock(), EMPTY_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); String cursor = result.x(); Iterable jobs = Iterables.transform( @@ -2010,7 +2035,8 @@ public Boolean call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { if (isRetryErrorCodeHttpNotFound(e)) { return false; @@ -2059,7 +2085,8 @@ public com.google.api.services.bigquery.model.QueryResponse call() getOptions().getClock(), DEFAULT_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); } catch (BigQueryRetryHelper.BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -2271,7 +2298,8 @@ public GetQueryResultsResponse call() throws IOException { serviceOptions.getClock(), DEFAULT_RETRY_CONFIG, serviceOptions.isOpenTelemetryTracingEnabled(), - serviceOptions.getOpenTelemetryTracer()); + serviceOptions.getOpenTelemetryTracer(), + serviceOptions.getApiTracerFactory()); TableSchema schemaPb = results.getSchema(); @@ -2342,7 +2370,8 @@ public com.google.api.services.bigquery.model.Policy call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -2388,7 +2417,8 @@ public com.google.api.services.bigquery.model.Policy call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer())); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory())); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally { @@ -2436,7 +2466,8 @@ public com.google.api.services.bigquery.model.TestIamPermissionsResponse call() getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); return response.getPermissions() == null ? ImmutableList.of() : ImmutableList.copyOf(response.getPermissions()); diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java index b8832edb19de..77306bf279b6 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java @@ -479,7 +479,8 @@ private BigQueryResult queryRpc( bigQueryOptions.getClock(), retryConfig, false, - null); + null, + bigQueryOptions.getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } @@ -938,7 +939,8 @@ private Job getQueryJobRpc(JobId jobId) { bigQueryOptions.getClock(), EMPTY_RETRY_CONFIG, false, - null); + null, + bigQueryOptions.getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { if (e.getCause() instanceof BigQueryException) { if (((BigQueryException) e.getCause()).getCode() == HTTP_NOT_FOUND) { @@ -985,7 +987,8 @@ TableDataList tableDataListRpc(TableId destinationTable, String pageToken) { bigQueryOptions.getClock(), EMPTY_RETRY_CONFIG, false, - null); + null, + bigQueryOptions.getApiTracerFactory()); return results; } catch (BigQueryRetryHelperException e) { @@ -1226,7 +1229,8 @@ GetQueryResultsResponse getQueryResultsFirstPage(JobId jobId) { bigQueryOptions.getClock(), retryConfig, false, - null); + null, + bigQueryOptions.getApiTracerFactory()); if (results.getErrors() != null) { List bigQueryErrors = @@ -1493,7 +1497,8 @@ com.google.api.services.bigquery.model.Job createQueryJob( bigQueryOptions.getClock(), retryConfig, false, - null); + null, + bigQueryOptions.getApiTracerFactory()); } catch (BigQueryRetryHelper.BigQueryRetryHelperException e) { logger.log(Level.WARNING, "\n Error occurred while calling createJobForQuery", e); throw BigQueryException.translateAndThrow(e); @@ -1538,7 +1543,8 @@ com.google.api.services.bigquery.model.Job createDryRunJob(String sql) { bigQueryOptions.getClock(), retryConfig, false, - null); + null, + bigQueryOptions.getApiTracerFactory()); } catch (BigQueryRetryHelper.BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java index dde4c0818713..733969bea4ec 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java @@ -81,7 +81,8 @@ public com.google.api.services.bigquery.model.Job call() throws IOException { getOptions().getClock(), EMPTY_RETRY_CONFIG, getOptions().isOpenTelemetryTracingEnabled(), - getOptions().getOpenTelemetryTracer()); + getOptions().getOpenTelemetryTracer(), + getOptions().getApiTracerFactory()); job = jobPb != null ? Job.fromPb(getOptions().getService(), jobPb) : null; } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); @@ -130,7 +131,8 @@ public String call() throws IOException { options.getClock(), EMPTY_RETRY_CONFIG, options.isOpenTelemetryTracingEnabled(), - options.getOpenTelemetryTracer()); + options.getOpenTelemetryTracer(), + options.getApiTracerFactory()); } catch (BigQueryRetryHelperException e) { throw BigQueryException.translateAndThrow(e); } finally {