Skip to content

Commit 0fc647b

Browse files
committed
feat(bigquery): add opentelemetry W3C Trace Context to headers
1 parent 39133b5 commit 0fc647b

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import io.opentelemetry.api.common.AttributeKey;
2424
import io.opentelemetry.api.trace.Span;
2525
import io.opentelemetry.api.trace.Tracer;
26+
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
27+
import io.opentelemetry.context.Context;
2628
import java.io.IOException;
2729

2830
/**
@@ -77,6 +79,10 @@ public void initialize(HttpRequest request) throws IOException {
7779
// No active span to exists, skip instrumentation
7880
return;
7981
}
82+
// propagate the W3C Trace Context (traceID and spanID) from the active span in headers
83+
W3CTraceContextPropagator.getInstance()
84+
.inject(Context.current(), request.getHeaders(), (headers, k, v) -> headers.set(k, v));
85+
8086
addInitialHttpAttributesToSpan(span, request);
8187

8288
HttpResponseInterceptor originalInterceptor = request.getResponseInterceptor();

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,23 @@ public void testNoSpanIsCreatedIfNoActiveSpan() throws IOException {
145145
verify(delegateInitializer, times(1)).initialize(any(HttpRequest.class));
146146
}
147147

148+
@Test
149+
public void testTraceContextIsPropagatedInHeaders() throws IOException {
150+
HttpTransport transport = createTransport();
151+
HttpRequest request = buildGetRequest(transport, initializer, BASE_URL);
152+
153+
HttpResponse response = request.execute();
154+
response.disconnect();
155+
156+
assertEquals(
157+
String.format(
158+
"00-%s-%s-%s",
159+
parentSpan.getSpanContext().getTraceId(),
160+
parentSpan.getSpanContext().getSpanId(),
161+
parentSpan.getSpanContext().getTraceFlags().asHex()),
162+
request.getHeaders().get("traceparent"));
163+
}
164+
148165
@Test
149166
public void testDelegateInitializerIsCalled() throws IOException {
150167
HttpRequestInitializer delegateInitializer = mock(HttpRequestInitializer.class);

0 commit comments

Comments
 (0)