Skip to content

Commit ab71745

Browse files
committed
Make trace context interceptor conditional based on client opt-in
1 parent be7d426 commit ab71745

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,8 @@ public GapicSpannerRpc(final SpannerOptions options) {
348348
MoreObjects.firstNonNull(
349349
options.getInterceptorProvider(),
350350
SpannerInterceptorProvider.createDefault(options.getOpenTelemetry())))
351+
// This sets the trace context headers.
352+
.withTraceContext(serverSideTracingEnabled, options.getOpenTelemetry())
351353
// This sets the response compressor (Server -> Client).
352354
.withEncoding(compressorName))
353355
.setHeaderProvider(headerProviderWithUserAgent)

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ public static SpannerInterceptorProvider createDefault(OpenTelemetry openTelemet
5151
defaultInterceptorList.add(
5252
new LoggingInterceptor(Logger.getLogger(GapicSpannerRpc.class.getName()), Level.FINER));
5353
defaultInterceptorList.add(new HeaderInterceptor(new SpannerRpcMetrics(openTelemetry)));
54-
defaultInterceptorList.add(new TraceContextInterceptor(openTelemetry));
5554
return new SpannerInterceptorProvider(ImmutableList.copyOf(defaultInterceptorList));
5655
}
5756

@@ -75,6 +74,13 @@ SpannerInterceptorProvider withEncoding(String encoding) {
7574
return this;
7675
}
7776

77+
SpannerInterceptorProvider withTraceContext(boolean serverSideTracingEnabled, OpenTelemetry openTelemetry) {
78+
if (serverSideTracingEnabled) {
79+
return with(new TraceContextInterceptor(openTelemetry));
80+
}
81+
return this;
82+
}
83+
7884
@Override
7985
public List<ClientInterceptor> getInterceptors() {
8086
return clientInterceptors;

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

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -631,15 +631,15 @@ public void testCustomUserAgent() {
631631
}
632632

633633
@Test
634-
public void testTraceContextHeaderWithOpenTelemetry() {
634+
public void testTraceContextHeaderWithOpenTelemetryAndServerSideTracingEnabled() {
635635
OpenTelemetry openTelemetry =
636636
OpenTelemetrySdk.builder()
637637
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
638638
.setTracerProvider(SdkTracerProvider.builder().setSampler(Sampler.alwaysOn()).build())
639639
.build();
640640

641641
final SpannerOptions options =
642-
createSpannerOptions().toBuilder().setOpenTelemetry(openTelemetry).build();
642+
createSpannerOptions().toBuilder().setOpenTelemetry(openTelemetry).enableServerSideTracing().build();
643643
try (Spanner spanner = options.getService()) {
644644
final DatabaseClient databaseClient =
645645
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
@@ -652,6 +652,28 @@ public void testTraceContextHeaderWithOpenTelemetry() {
652652
}
653653
}
654654

655+
@Test
656+
public void testTraceContextHeaderWithOpenTelemetryAndServerSideTracingDisabled() {
657+
OpenTelemetry openTelemetry =
658+
OpenTelemetrySdk.builder()
659+
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
660+
.setTracerProvider(SdkTracerProvider.builder().setSampler(Sampler.alwaysOn()).build())
661+
.build();
662+
663+
final SpannerOptions options =
664+
createSpannerOptions().toBuilder().setOpenTelemetry(openTelemetry).disableServerSideTracing().build();
665+
try (Spanner spanner = options.getService()) {
666+
final DatabaseClient databaseClient =
667+
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
668+
669+
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
670+
rs.next();
671+
}
672+
673+
assertFalse(isTraceContextPresent);
674+
}
675+
}
676+
655677
@Test
656678
public void testTraceContextHeaderWithoutOpenTelemetry() {
657679
final SpannerOptions options = createSpannerOptions();

0 commit comments

Comments
 (0)