Skip to content

Commit 395263f

Browse files
committed
Revert "use ThreadLocal so that metrics can re-use this solution if span is turned off"
This reverts commit a7fded2.
1 parent a7fded2 commit 395263f

File tree

5 files changed

+22
-127
lines changed

5 files changed

+22
-127
lines changed

java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryHelper.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,21 @@
2727
import com.google.cloud.RetryHelper;
2828
import io.opentelemetry.api.trace.Span;
2929
import io.opentelemetry.api.trace.Tracer;
30+
import io.opentelemetry.context.Context;
31+
import io.opentelemetry.context.ContextKey;
3032
import io.opentelemetry.context.Scope;
3133
import java.io.IOException;
3234
import java.util.concurrent.Callable;
3335
import java.util.concurrent.ExecutionException;
36+
import java.util.concurrent.atomic.AtomicInteger;
3437
import java.util.logging.Level;
3538
import java.util.logging.Logger;
3639

3740
public class BigQueryRetryHelper extends RetryHelper {
3841

42+
public static final ContextKey<AtomicInteger> RETRY_ATTEMPT_KEY =
43+
ContextKey.named("bq_retry_attempt");
44+
3945
private static final Logger LOG = Logger.getLogger(BigQueryRetryHelper.class.getName());
4046

4147
public static <V> V runWithRetries(
@@ -54,8 +60,11 @@ public static <V> V runWithRetries(
5460
.spanBuilder("com.google.cloud.bigquery.BigQueryRetryHelper.runWithRetries")
5561
.startSpan();
5662
}
57-
try (Scope runWithRetriesScope = runWithRetries != null ? runWithRetries.makeCurrent() : null;
58-
BigQueryRetryTracker tracker = new BigQueryRetryTracker()) {
63+
Context retryContext = Context.current().with(RETRY_ATTEMPT_KEY, new AtomicInteger(0));
64+
if (runWithRetries != null) {
65+
retryContext = retryContext.with(runWithRetries);
66+
}
67+
try (Scope runWithRetriesScope = retryContext.makeCurrent()) {
5968
// Suppressing should be ok as a workaraund. Current and only ResultRetryAlgorithm
6069
// implementation does not use response at all, so ignoring its type is ok.
6170
@SuppressWarnings("unchecked")

java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryRetryTracker.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/telemetry/HttpTracingRequestInitializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.google.api.client.http.*;
2020
import com.google.api.core.BetaApi;
2121
import com.google.api.core.InternalApi;
22-
import com.google.cloud.bigquery.BigQueryRetryTracker;
22+
import com.google.cloud.bigquery.BigQueryRetryHelper;
2323
import com.google.common.annotations.VisibleForTesting;
2424
import io.opentelemetry.api.common.AttributeKey;
2525
import io.opentelemetry.api.trace.Span;
@@ -86,7 +86,7 @@ public void initialize(HttpRequest request) throws IOException {
8686

8787
addInitialHttpAttributesToSpan(span, request);
8888

89-
AtomicInteger attemptTracker = BigQueryRetryTracker.get();
89+
AtomicInteger attemptTracker = Context.current().get(BigQueryRetryHelper.RETRY_ATTEMPT_KEY);
9090
if (attemptTracker != null) {
9191
int attempt = attemptTracker.getAndIncrement();
9292
if (attempt > 0) {

java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryRetryTrackerTest.java

Lines changed: 0 additions & 70 deletions
This file was deleted.

java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/telemetry/HttpTracingRequestInitializerTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@
4444
import com.google.api.client.testing.http.MockHttpTransport;
4545
import com.google.api.client.testing.http.MockLowLevelHttpRequest;
4646
import com.google.api.client.testing.http.MockLowLevelHttpResponse;
47-
import com.google.cloud.bigquery.BigQueryRetryTracker;
47+
import com.google.cloud.bigquery.BigQueryRetryHelper;
4848
import io.opentelemetry.api.common.AttributeKey;
4949
import io.opentelemetry.api.trace.Span;
5050
import io.opentelemetry.api.trace.Tracer;
51+
import io.opentelemetry.context.Context;
5152
import io.opentelemetry.context.Scope;
5253
import io.opentelemetry.sdk.OpenTelemetrySdk;
5354
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
@@ -56,6 +57,7 @@
5657
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
5758
import java.io.IOException;
5859
import java.util.List;
60+
import java.util.concurrent.atomic.AtomicInteger;
5961
import org.junit.jupiter.api.BeforeEach;
6062
import org.junit.jupiter.api.Test;
6163

@@ -319,13 +321,15 @@ public void testAddRequestBodySizeToSpan_WithEncoding() throws IOException {
319321
@Test
320322
public void testRetryCountFromContext() throws IOException {
321323
HttpTransport transport = createTransport();
324+
AtomicInteger counter = new AtomicInteger(2);
325+
Context context =
326+
io.opentelemetry.context.Context.current()
327+
.with(BigQueryRetryHelper.RETRY_ATTEMPT_KEY, counter);
322328

323-
try (BigQueryRetryTracker tracker = new BigQueryRetryTracker()) {
324-
BigQueryRetryTracker.get().set(2);
329+
try (io.opentelemetry.context.Scope scope = context.makeCurrent()) {
325330
HttpRequest request = buildGetRequest(transport, initializer, BASE_URL);
326331
HttpResponse response = request.execute();
327332
response.disconnect();
328-
assertEquals(3, BigQueryRetryTracker.get().get());
329333
}
330334

331335
spanScope.close();
@@ -336,6 +340,7 @@ public void testRetryCountFromContext() throws IOException {
336340
SpanData span = spans.get(0);
337341
assertEquals(
338342
2L, span.getAttributes().get(HttpTracingRequestInitializer.HTTP_REQUEST_RESEND_COUNT));
343+
assertEquals(3, counter.get());
339344
}
340345

341346
@Test

0 commit comments

Comments
 (0)