Skip to content

Commit 266b837

Browse files
committed
changes
1 parent 6536c0f commit 266b837

File tree

7 files changed

+33
-87
lines changed

7 files changed

+33
-87
lines changed

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

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,10 @@ class BuiltInMetricsTracer extends MetricsTracer implements ApiTracer {
3939
private final Map<String, String> attributes = new HashMap<>();
4040
private Float gfeLatency = null;
4141
private Float afeLatency = null;
42-
4342
private TraceWrapper traceWrapper;
4443
private long gfeHeaderMissingCount = 0;
4544
private long afeHeaderMissingCount = 0;
46-
private ISpan currentSpan;
47-
48-
BuiltInMetricsTracer(
49-
MethodName methodName, BuiltInMetricsRecorder builtInOpenTelemetryMetricsRecorder) {
50-
super(methodName, builtInOpenTelemetryMetricsRecorder);
51-
this.builtInOpenTelemetryMetricsRecorder = builtInOpenTelemetryMetricsRecorder;
52-
this.attributes.put(METHOD_ATTRIBUTE, methodName.toString());
53-
}
45+
private final ISpan currentSpan;
5446

5547
BuiltInMetricsTracer(
5648
MethodName methodName,
@@ -60,11 +52,6 @@ class BuiltInMetricsTracer extends MetricsTracer implements ApiTracer {
6052
super(methodName, builtInOpenTelemetryMetricsRecorder);
6153
this.builtInOpenTelemetryMetricsRecorder = builtInOpenTelemetryMetricsRecorder;
6254
this.attributes.put(METHOD_ATTRIBUTE, methodName.toString());
63-
// Metrics attributes which are filtered from metrics views are sent to exemplars as
64-
// filtered_attributes.
65-
// Below testmetric attribute will be available in exemplar as we have added a attributefilter
66-
// for our metric views.
67-
// this.attributes.put("request_id", "test");
6855
this.traceWrapper = traceWrapper;
6956
this.currentSpan = currentSpan;
7057
}
@@ -89,10 +76,12 @@ public void attemptSucceeded() {
8976
*/
9077
@Override
9178
public void attemptCancelled() {
92-
super.attemptCancelled();
93-
attributes.put(STATUS_ATTRIBUTE, StatusCode.Code.CANCELLED.toString());
94-
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
95-
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
79+
try (IScope s = this.traceWrapper.withSpan(this.currentSpan)) {
80+
super.attemptCancelled();
81+
attributes.put(STATUS_ATTRIBUTE, StatusCode.Code.CANCELLED.toString());
82+
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
83+
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
84+
}
9685
}
9786

9887
/**
@@ -105,10 +94,12 @@ public void attemptCancelled() {
10594
*/
10695
@Override
10796
public void attemptFailedDuration(Throwable error, java.time.Duration delay) {
108-
super.attemptFailedDuration(error, delay);
109-
attributes.put(STATUS_ATTRIBUTE, extractStatus(error));
110-
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
111-
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
97+
try (IScope s = this.traceWrapper.withSpan(this.currentSpan)) {
98+
super.attemptFailedDuration(error, delay);
99+
attributes.put(STATUS_ATTRIBUTE, extractStatus(error));
100+
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
101+
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
102+
}
112103
}
113104

114105
/**
@@ -120,10 +111,12 @@ public void attemptFailedDuration(Throwable error, java.time.Duration delay) {
120111
*/
121112
@Override
122113
public void attemptFailedRetriesExhausted(Throwable error) {
123-
super.attemptFailedRetriesExhausted(error);
124-
attributes.put(STATUS_ATTRIBUTE, extractStatus(error));
125-
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
126-
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
114+
try (IScope s = this.traceWrapper.withSpan(this.currentSpan)) {
115+
super.attemptFailedRetriesExhausted(error);
116+
attributes.put(STATUS_ATTRIBUTE, extractStatus(error));
117+
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
118+
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
119+
}
127120
}
128121

129122
/**
@@ -135,10 +128,12 @@ public void attemptFailedRetriesExhausted(Throwable error) {
135128
*/
136129
@Override
137130
public void attemptPermanentFailure(Throwable error) {
138-
super.attemptPermanentFailure(error);
139-
attributes.put(STATUS_ATTRIBUTE, extractStatus(error));
140-
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
141-
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
131+
try (IScope s = this.traceWrapper.withSpan(this.currentSpan)) {
132+
super.attemptPermanentFailure(error);
133+
attributes.put(STATUS_ATTRIBUTE, extractStatus(error));
134+
builtInOpenTelemetryMetricsRecorder.recordServerTimingHeaderMetrics(
135+
gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes);
136+
}
142137
}
143138

144139
void recordGFELatency(Float gfeLatency) {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,6 @@ private static String makeSpanName(String projectId, String traceId, String span
294294

295295
private static DroppedLabels mapFilteredAttributes(Attributes attributes) {
296296
DroppedLabels.Builder labels = DroppedLabels.newBuilder();
297-
attributes.forEach((k, v) -> labels.putLabel(cleanAttributeKey(k.getKey()), v.toString()));
298297
attributes.forEach(
299298
(k, v) -> {
300299
String key = cleanAttributeKey(k.getKey());

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
@@ -179,7 +179,7 @@ public class SpannerOptions extends ServiceOptions<Spanner, SpannerOptions> {
179179
private final boolean enableDirectAccess;
180180
private final DirectedReadOptions directedReadOptions;
181181
private final boolean useVirtualThreads;
182-
private OpenTelemetry openTelemetry;
182+
private final OpenTelemetry openTelemetry;
183183
private final boolean enableApiTracing;
184184
private final boolean enableBuiltInMetrics;
185185
private final boolean enableExtendedTracing;

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@
2424
import static com.google.cloud.spanner.spi.v1.SpannerRpcViews.SPANNER_GFE_LATENCY;
2525

2626
import com.google.api.gax.tracing.ApiTracer;
27-
import com.google.cloud.spanner.BuiltInMetricsConstant;
28-
import com.google.cloud.spanner.CompositeTracer;
29-
import com.google.cloud.spanner.SpannerExceptionFactory;
30-
import com.google.cloud.spanner.SpannerRpcMetrics;
27+
import com.google.cloud.spanner.*;
3128
import com.google.common.cache.Cache;
3229
import com.google.common.cache.CacheBuilder;
3330
import com.google.spanner.admin.database.v1.DatabaseName;
@@ -128,7 +125,7 @@ public void onHeaders(Metadata metadata) {
128125
Boolean isDirectPathUsed =
129126
isDirectPathUsed(getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR));
130127
addDirectPathUsedAttribute(compositeTracer, isDirectPathUsed);
131-
addRequestIdAttribute(compositeTracer, "test");
128+
addRequestIdAttribute(compositeTracer, getRequestIdFromMetadata(metadata));
132129
processHeader(
133130
metadata, tagContext, attributes, span, compositeTracer, isDirectPathUsed);
134131
super.onHeaders(metadata);
@@ -309,6 +306,10 @@ private void addDirectPathUsedAttribute(
309306
}
310307
}
311308

309+
private String getRequestIdFromMetadata(Metadata md) {
310+
return md.get(XGoogSpannerRequestId.REQUEST_HEADER_KEY);
311+
}
312+
312313
private void addRequestIdAttribute(CompositeTracer compositeTracer, String requestId) {
313314
if (compositeTracer != null) {
314315
compositeTracer.addAttributes(BuiltInMetricsConstant.REQUEST_ID_KEY.getKey(), requestId);

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

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import com.google.api.client.util.BackOff;
2020
import com.google.api.client.util.ExponentialBackOff;
2121
import com.google.api.gax.longrunning.OperationFuture;
22-
import com.google.cloud.opentelemetry.trace.TraceConfiguration;
23-
import com.google.cloud.opentelemetry.trace.TraceExporter;
2422
import com.google.cloud.spanner.BatchClient;
2523
import com.google.cloud.spanner.Database;
2624
import com.google.cloud.spanner.DatabaseClient;
@@ -34,14 +32,6 @@
3432
import com.google.cloud.spanner.SpannerOptions;
3533
import com.google.common.collect.Iterables;
3634
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
37-
import io.opentelemetry.api.OpenTelemetry;
38-
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
39-
import io.opentelemetry.context.propagation.ContextPropagators;
40-
import io.opentelemetry.sdk.OpenTelemetrySdk;
41-
import io.opentelemetry.sdk.resources.Resource;
42-
import io.opentelemetry.sdk.trace.SdkTracerProvider;
43-
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
44-
import io.opentelemetry.sdk.trace.samplers.Sampler;
4535
import java.util.ArrayList;
4636
import java.util.Arrays;
4737
import java.util.Collections;
@@ -230,8 +220,6 @@ public void cleanUp() {
230220
* using this will be created in the given instance.
231221
*/
232222
public static RemoteSpannerHelper create(InstanceId instanceId) {
233-
SpannerOptions.enableOpenTelemetryTraces();
234-
// createTraceExporter(instanceId.getProject());
235223
SpannerOptions options =
236224
SpannerOptions.newBuilder()
237225
.setProjectId(instanceId.getProject())
@@ -250,37 +238,4 @@ public static RemoteSpannerHelper create(SpannerOptions options, InstanceId inst
250238
Spanner client = options.getService();
251239
return new RemoteSpannerHelper(options, instanceId, client);
252240
}
253-
254-
public static OpenTelemetry createTraceExporter() {
255-
// Tried with separate OT object for Traces. In this case exemplars are coming up but not linked
256-
// to correct trace id.
257-
Resource resource =
258-
Resource.getDefault().merge(Resource.builder().put("service.name", "surbhi").build());
259-
260-
io.opentelemetry.sdk.trace.export.SpanExporter traceExporter =
261-
TraceExporter.createWithConfiguration(TraceConfiguration.builder().build());
262-
263-
// Using a batch span processor
264-
// You can use `.setScheduleDelay()`, `.setExporterTimeout()`,
265-
// `.setMaxQueueSize`(), and `.setMaxExportBatchSize()` to further customize.
266-
BatchSpanProcessor otlpGrpcSpanProcessor = BatchSpanProcessor.builder(traceExporter).build();
267-
268-
// Create a new tracer provider
269-
SdkTracerProvider sdkTracerProvider =
270-
SdkTracerProvider.builder()
271-
// Use Otlp exporter or any other exporter of your choice.
272-
.addSpanProcessor(otlpGrpcSpanProcessor)
273-
.setResource(resource)
274-
.setSampler(Sampler.traceIdRatioBased(1))
275-
.build();
276-
277-
// Export to a collector that is expecting OTLP using gRPC.
278-
OpenTelemetry openTelemetry =
279-
OpenTelemetrySdk.builder()
280-
.setTracerProvider(sdkTracerProvider)
281-
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
282-
.build();
283-
284-
return openTelemetry;
285-
}
286241
}

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2222
import com.google.auth.oauth2.GoogleCredentials;
2323
import com.google.cloud.spanner.spi.v1.SpannerInterceptorProvider;
24-
import com.google.cloud.spanner.testing.RemoteSpannerHelper;
2524
import io.grpc.CallOptions;
2625
import io.grpc.Channel;
2726
import io.grpc.ClientCall;
@@ -91,9 +90,6 @@ public GceTestEnvConfig() {
9190
interceptorProvider.with(new DirectPathAddressCheckInterceptor(directPathTestScenario));
9291
}
9392
builder.setInterceptorProvider(interceptorProvider);
94-
builder.setEnableEndToEndTracing(true);
95-
builder.setEnableApiTracing(true);
96-
builder.setOpenTelemetry(RemoteSpannerHelper.createTraceExporter());
9793
// DirectPath tests need to set a custom endpoint to the ChannelProvider
9894
InstantiatingGrpcChannelProvider.Builder customChannelProviderBuilder =
9995
InstantiatingGrpcChannelProvider.newBuilder();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ boolean isCloudDevel() {
128128

129129
@Override
130130
protected void before() throws Throwable {
131-
SpannerOptions.enableOpenTelemetryTraces();
132131
this.initializeConfig();
133132
assumeFalse(alwaysCreateNewInstance && isCloudDevel());
133+
134134
this.config.setUp();
135135
SpannerOptions options = config.spannerOptions();
136136
if (testEnvOptions.stream()

0 commit comments

Comments
 (0)