Skip to content

Commit 0f14584

Browse files
committed
changed
1 parent 44523b5 commit 0f14584

File tree

4 files changed

+28
-8
lines changed

4 files changed

+28
-8
lines changed

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class BuiltInMetricsTracer extends MetricsTracer implements ApiTracer {
4545
private final TraceWrapper traceWrapper;
4646
private long gfeHeaderMissingCount = 0;
4747
private long afeHeaderMissingCount = 0;
48+
private ISpan currentSpan;
4849

4950
BuiltInMetricsTracer(
5051
MethodName methodName,
@@ -61,25 +62,37 @@ class BuiltInMetricsTracer extends MetricsTracer implements ApiTracer {
6162
this.traceWrapper = traceWrapper;
6263
}
6364

65+
BuiltInMetricsTracer(
66+
MethodName methodName,
67+
BuiltInMetricsRecorder builtInOpenTelemetryMetricsRecorder,
68+
TraceWrapper traceWrapper,
69+
ISpan currentSpan) {
70+
super(methodName, builtInOpenTelemetryMetricsRecorder);
71+
this.builtInOpenTelemetryMetricsRecorder = builtInOpenTelemetryMetricsRecorder;
72+
this.attributes.put(METHOD_ATTRIBUTE, methodName.toString());
73+
// Metrics attributes which are filtered from metrics views are sent to exemplars as
74+
// filtered_attributes.
75+
// Below testmetric attribute will be available in exemplar as we have added a attributefilter
76+
// for our metric views.
77+
this.attributes.put("request_id", "test");
78+
this.traceWrapper = traceWrapper;
79+
this.currentSpan = currentSpan;
80+
}
81+
6482
/**
6583
* Adds an annotation that the attempt succeeded. Successful attempt add "OK" value to the status
6684
* attribute key.
6785
*/
6886
@Override
6987
public void attemptSucceeded() {
70-
// For exemplars to worj metrics should be recorded with the span context.
71-
// Creating a new span to verify this.
72-
ISpan currentSpan = this.traceWrapper.getCurrentSpan();
7388
AttributesBuilder builder = Attributes.builder();
7489
builder.put("test1", "abc");
75-
ISpan span = this.traceWrapper.spanBuilder("attempt succeeded", builder.build());
76-
try (IScope s = this.traceWrapper.withSpan(span)) {
90+
try (IScope s = this.traceWrapper.withSpan(this.currentSpan)) {
7791
super.attemptSucceeded();
7892
attributes.put(STATUS_ATTRIBUTE, StatusCode.Code.OK.toString());
7993
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
8094
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
8195
}
82-
span.end();
8396
}
8497

8598
/**

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,13 @@ public BuiltInMetricsTracerFactory(
5656

5757
@Override
5858
public ApiTracer newTracer(ApiTracer parent, SpanName spanName, OperationType operationType) {
59+
ISpan currentSpan = this.traceWrapper.getCurrentSpan();
5960
BuiltInMetricsTracer metricsTracer =
6061
new BuiltInMetricsTracer(
6162
MethodName.of(spanName.getClientName(), spanName.getMethodName()),
6263
builtInMetricsRecorder,
63-
this.traceWrapper);
64+
this.traceWrapper,
65+
currentSpan);
6466
metricsTracer.addAttributes(attributes);
6567
return metricsTracer;
6668
}

google-cloud-spanner/src/main/java/com/google/cloud/spanner/testing/RemoteSpannerHelper.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import com.google.common.collect.Iterables;
3636
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
3737
import io.opentelemetry.api.OpenTelemetry;
38+
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
39+
import io.opentelemetry.context.propagation.ContextPropagators;
3840
import io.opentelemetry.sdk.OpenTelemetrySdk;
3941
import io.opentelemetry.sdk.resources.Resource;
4042
import io.opentelemetry.sdk.trace.SdkTracerProvider;
@@ -274,7 +276,8 @@ public static OpenTelemetry createTraceExporter() {
274276

275277
// Export to a collector that is expecting OTLP using gRPC.
276278
OpenTelemetry openTelemetry =
277-
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).build();
279+
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).setPropagators(
280+
ContextPropagators.create(W3CTraceContextPropagator.getInstance())).build();
278281

279282
return openTelemetry;
280283
}

google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ public GceTestEnvConfig() {
9191
interceptorProvider.with(new DirectPathAddressCheckInterceptor(directPathTestScenario));
9292
}
9393
builder.setInterceptorProvider(interceptorProvider);
94+
builder.setEnableEndToEndTracing(true);
95+
builder.setEnableApiTracing(true);
9496
builder.setOpenTelemetry(RemoteSpannerHelper.createTraceExporter());
9597
// DirectPath tests need to set a custom endpoint to the ChannelProvider
9698
InstantiatingGrpcChannelProvider.Builder customChannelProviderBuilder =

0 commit comments

Comments
 (0)