Skip to content

Commit 233acd2

Browse files
committed
resolve comments
1 parent 3eb5e47 commit 233acd2

File tree

4 files changed

+57
-57
lines changed

4 files changed

+57
-57
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1480,7 +1480,7 @@ public static void enableOpenCensusTraces() {
14801480
*/
14811481
@ObsoleteApi(
14821482
"The OpenCensus project is deprecated. Use enableOpenTelemetryTraces to switch to OpenTelemetry traces")
1483-
static void resetActiveTracingFramework() {
1483+
public static void resetActiveTracingFramework() {
14841484
activeTracingFramework = null;
14851485
}
14861486

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerInterceptorProvider.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import io.grpc.ClientInterceptor;
2424
import io.opentelemetry.api.GlobalOpenTelemetry;
2525
import io.opentelemetry.api.OpenTelemetry;
26-
2726
import java.util.ArrayList;
2827
import java.util.List;
2928
import java.util.logging.Level;
Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2021 Google LLC
2+
* Copyright 2024 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,52 +23,51 @@
2323
import io.grpc.ForwardingClientCallListener.SimpleForwardingClientCallListener;
2424
import io.grpc.Metadata;
2525
import io.grpc.MethodDescriptor;
26-
import io.grpc.Status;
2726
import io.opentelemetry.api.OpenTelemetry;
2827
import io.opentelemetry.context.Context;
29-
import io.opentelemetry.context.propagation.ContextPropagators;
28+
import io.opentelemetry.context.propagation.TextMapPropagator;
3029
import io.opentelemetry.context.propagation.TextMapSetter;
3130

32-
public class TraceContextInterceptor implements ClientInterceptor {
33-
34-
private final ContextPropagators propagators;
31+
/**
32+
* Intercepts all gRPC calls and injects trace context related headers to propagate trace context to
33+
* Spanner. This class takes reference from OpenTelemetry's JAVA instrumentation library for gRPC.
34+
* https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/9ecf7965aa455d41ea8cc0761b6c6b6eeb106324/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java#L27
35+
*/
36+
class TraceContextInterceptor implements ClientInterceptor {
3537

36-
TraceContextInterceptor(OpenTelemetry openTelemetry) {
37-
this.propagators = openTelemetry.getPropagators();
38-
}
38+
private final TextMapPropagator textMapPropagator;
3939

40-
enum MetadataSetter implements TextMapSetter<Metadata> {
41-
INSTANCE;
40+
TraceContextInterceptor(OpenTelemetry openTelemetry) {
41+
this.textMapPropagator = openTelemetry.getPropagators().getTextMapPropagator();
42+
}
4243

43-
@SuppressWarnings("null")
44-
@Override
45-
public void set(Metadata carrier, String key, String value) {
46-
carrier.put(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER), value);
47-
}
48-
}
44+
enum MetadataSetter implements TextMapSetter<Metadata> {
45+
INSTANCE;
4946

47+
@SuppressWarnings("null")
5048
@Override
51-
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method,
52-
CallOptions callOptions, Channel next) {
53-
return new SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {
54-
@Override
55-
public void start(Listener<RespT> responseListener, Metadata headers) {
56-
Context parentContext = Context.current();
57-
58-
propagators.getTextMapPropagator().inject(parentContext, headers, MetadataSetter.INSTANCE);
59-
60-
super.start(new SimpleForwardingClientCallListener<RespT>(responseListener) {
61-
@Override
62-
public void onHeaders(Metadata headers) {
63-
super.onHeaders(headers);
64-
}
49+
public void set(Metadata carrier, String key, String value) {
50+
carrier.put(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER), value);
51+
}
52+
}
6553

66-
@Override
67-
public void onClose(Status status, Metadata trailers) {
68-
super.onClose(status, trailers);
69-
}
70-
}, headers);
71-
}
72-
};
54+
private static final class NoopSimpleForwardingClientCallListener<RespT>
55+
extends SimpleForwardingClientCallListener<RespT> {
56+
public NoopSimpleForwardingClientCallListener(ClientCall.Listener<RespT> responseListener) {
57+
super(responseListener);
7358
}
59+
}
60+
61+
@Override
62+
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
63+
MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
64+
return new SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {
65+
@Override
66+
public void start(Listener<RespT> responseListener, Metadata headers) {
67+
Context parentContext = Context.current();
68+
textMapPropagator.inject(parentContext, headers, MetadataSetter.INSTANCE);
69+
super.start(new NoopSimpleForwardingClientCallListener<RespT>(responseListener), headers);
70+
}
71+
};
72+
}
7473
}

google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@
8282
import io.opentelemetry.sdk.OpenTelemetrySdk;
8383
import io.opentelemetry.sdk.trace.SdkTracerProvider;
8484
import io.opentelemetry.sdk.trace.samplers.Sampler;
85-
8685
import java.io.IOException;
8786
import java.net.InetSocketAddress;
8887
import java.util.HashMap;
@@ -167,6 +166,7 @@ public static Object[] data() {
167166
@Before
168167
public void startServer() throws IOException {
169168
// Enable OpenTelemetry tracing.
169+
SpannerOptions.resetActiveTracingFramework();
170170
SpannerOptions.enableOpenTelemetryTraces();
171171

172172
assumeTrue(
@@ -552,36 +552,38 @@ public void testCustomUserAgent() {
552552

553553
@Test
554554
public void testTraceContextHeaderWithOpenTelemetry() {
555-
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
556-
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
557-
.setTracerProvider(SdkTracerProvider.builder().setSampler(Sampler.alwaysOn()).build())
558-
.build();
555+
OpenTelemetry openTelemetry =
556+
OpenTelemetrySdk.builder()
557+
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
558+
.setTracerProvider(SdkTracerProvider.builder().setSampler(Sampler.alwaysOn()).build())
559+
.build();
559560

560-
final SpannerOptions options = createSpannerOptions().toBuilder().setOpenTelemetry(openTelemetry).build();
561+
final SpannerOptions options =
562+
createSpannerOptions().toBuilder().setOpenTelemetry(openTelemetry).build();
561563
try (Spanner spanner = options.getService()) {
562564
final DatabaseClient databaseClient =
563-
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
565+
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
564566

565-
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
566-
rs.next();
567-
}
567+
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
568+
rs.next();
569+
}
568570

569-
assertTrue(isTraceContextPresent);
570-
}
571+
assertTrue(isTraceContextPresent);
572+
}
571573
}
572574

573575
@Test
574576
public void testTraceContextHeaderWithoutOpenTelemetry() {
575577
final SpannerOptions options = createSpannerOptions();
576578
try (Spanner spanner = options.getService()) {
577579
final DatabaseClient databaseClient =
578-
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
580+
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
579581

580-
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
581-
rs.next();
582-
}
582+
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
583+
rs.next();
584+
}
583585

584-
assertFalse(isTraceContextPresent);
586+
assertFalse(isTraceContextPresent);
585587
}
586588
}
587589

0 commit comments

Comments
 (0)