Skip to content

Commit c88ae14

Browse files
Remove message size trace attributes
1 parent d89492f commit c88ae14

File tree

10 files changed

+80
-136
lines changed

10 files changed

+80
-136
lines changed

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcClientMetrics.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,12 @@ public void onEnd(Context context, Attributes endAttributes, long endNanos) {
9898
clientDurationHistogram.record(
9999
(endNanos - state.startTimeNanos()) / NANOS_PER_MS, attributes, context);
100100

101-
Long rpcClientRequestBodySize =
102-
RpcMessageBodySizeUtil.getRpcRequestBodySize(endAttributes, state.startAttributes());
101+
Long rpcClientRequestBodySize = RpcMetricsHolder.getRequestBodySize(context);
103102
if (rpcClientRequestBodySize != null) {
104103
clientRequestSize.record(rpcClientRequestBodySize, attributes, context);
105104
}
106105

107-
Long rpcClientResponseBodySize =
108-
RpcMessageBodySizeUtil.getRpcResponseBodySize(endAttributes, state.startAttributes());
106+
Long rpcClientResponseBodySize = RpcMetricsHolder.getResponseBodySize(context);
109107
if (rpcClientResponseBodySize != null) {
110108
clientResponseSize.record(rpcClientResponseBodySize, attributes, context);
111109
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ abstract class RpcCommonAttributesExtractor<REQUEST, RESPONSE>
2020
static final AttributeKey<String> RPC_METHOD = AttributeKey.stringKey("rpc.method");
2121
static final AttributeKey<String> RPC_SERVICE = AttributeKey.stringKey("rpc.service");
2222
static final AttributeKey<String> RPC_SYSTEM = AttributeKey.stringKey("rpc.system");
23-
static final AttributeKey<Long> RPC_REQUEST_BODY_SIZE =
24-
AttributeKey.longKey("rpc.request.body.size");
25-
static final AttributeKey<Long> RPC_RESPONSE_BODY_SIZE =
26-
AttributeKey.longKey("rpc.response.body.size");
2723

2824
private final RpcAttributesGetter<REQUEST> getter;
2925

@@ -49,19 +45,19 @@ public final void onEnd(
4945
Long responseSize = getter.getResponseSize(request);
5046
if (this instanceof RpcClientAttributesExtractor) {
5147
if (requestSize != null) {
52-
internalSet(attributes, RPC_REQUEST_BODY_SIZE, requestSize);
48+
RpcMetricsHolder.setRequestBodySize(context, requestSize);
5349
}
5450
if (responseSize != null) {
55-
internalSet(attributes, RPC_RESPONSE_BODY_SIZE, responseSize);
51+
RpcMetricsHolder.setResponseBodySize(context, responseSize);
5652
}
5753
}
5854

5955
if (this instanceof RpcServerAttributesExtractor) {
6056
if (requestSize != null) {
61-
internalSet(attributes, RPC_REQUEST_BODY_SIZE, requestSize);
57+
RpcMetricsHolder.setRequestBodySize(context, requestSize);
6258
}
6359
if (responseSize != null) {
64-
internalSet(attributes, RPC_RESPONSE_BODY_SIZE, responseSize);
60+
RpcMetricsHolder.setResponseBodySize(context, responseSize);
6561
}
6662
}
6763
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcMessageBodySizeUtil.java

Lines changed: 0 additions & 36 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.api.incubator.semconv.rpc;
7+
8+
import static io.opentelemetry.context.ContextKey.named;
9+
10+
import javax.annotation.Nullable;
11+
12+
import io.opentelemetry.context.Context;
13+
import io.opentelemetry.context.ContextKey;
14+
import io.opentelemetry.context.ImplicitContextKeyed;
15+
16+
public class RpcMetricsHolder implements ImplicitContextKeyed {
17+
18+
private static final ContextKey<RpcMetricsHolder> KEY = named("opentelemetry-rpc-metrics");
19+
20+
@Nullable
21+
private Long requestBodySize = null;
22+
@Nullable
23+
private Long responseBodySize = null;
24+
25+
private RpcMetricsHolder() {}
26+
27+
public static Context init(Context context) {
28+
if (context.get(KEY) != null) {
29+
return context;
30+
}
31+
return context.with(new RpcMetricsHolder());
32+
}
33+
34+
public static void setRequestBodySize(Context context, long requestBodySize) {
35+
RpcMetricsHolder holder = context.get(KEY);
36+
if (holder != null) {
37+
holder.requestBodySize = requestBodySize;
38+
}
39+
}
40+
41+
public static void setResponseBodySize(Context context, long responseBodySize) {
42+
RpcMetricsHolder holder = context.get(KEY);
43+
if (holder != null) {
44+
holder.responseBodySize = responseBodySize;
45+
}
46+
}
47+
48+
public static Long getRequestBodySize(Context context) {
49+
RpcMetricsHolder holder = context.get(KEY);
50+
if (holder != null) {
51+
return holder.requestBodySize;
52+
}
53+
return null;
54+
}
55+
56+
public static Long getResponseBodySize(Context context) {
57+
RpcMetricsHolder holder = context.get(KEY);
58+
if (holder != null) {
59+
return holder.responseBodySize;
60+
}
61+
return null;
62+
}
63+
64+
@Override
65+
public Context storeInContext(Context context) {
66+
return context.with(KEY, this);
67+
}
68+
}

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcServerMetrics.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,12 @@ public void onEnd(Context context, Attributes endAttributes, long endNanos) {
9898
serverDurationHistogram.record(
9999
(endNanos - state.startTimeNanos()) / NANOS_PER_MS, attributes, context);
100100

101-
Long rpcServerRequestBodySize =
102-
RpcMessageBodySizeUtil.getRpcRequestBodySize(endAttributes, state.startAttributes());
101+
Long rpcServerRequestBodySize = RpcMetricsHolder.getRequestBodySize(context);
103102
if (rpcServerRequestBodySize != null) {
104103
serverRequestSize.record(rpcServerRequestBodySize, attributes, context);
105104
}
106105

107-
Long rpcServerResponseBodySize =
108-
RpcMessageBodySizeUtil.getRpcResponseBodySize(endAttributes, state.startAttributes());
106+
Long rpcServerResponseBodySize = RpcMetricsHolder.getResponseBodySize(context);
109107
if (rpcServerResponseBodySize != null) {
110108
serverResponseSize.record(rpcServerResponseBodySize, attributes, context);
111109
}

instrumentation/armeria/armeria-grpc-1.14/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/armeria/grpc/v1_14/ArmeriaGrpcTest.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import example.Helloworld;
2323
import io.grpc.Status;
2424
import io.grpc.stub.StreamObserver;
25-
import io.opentelemetry.api.common.AttributeKey;
2625
import io.opentelemetry.api.trace.SpanKind;
2726
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
2827
import io.opentelemetry.semconv.incubating.MessageIncubatingAttributes;
@@ -34,11 +33,6 @@ class ArmeriaGrpcTest {
3433
@RegisterExtension
3534
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();
3635

37-
private static final AttributeKey<Long> RPC_REQUEST_BODY_SIZE =
38-
AttributeKey.longKey("rpc.request.body.size");
39-
private static final AttributeKey<Long> RPC_RESPONSE_BODY_SIZE =
40-
AttributeKey.longKey("rpc.response.body.size");
41-
4236
@RegisterExtension
4337
static final ServerExtension server =
4438
new ServerExtension() {
@@ -73,8 +67,6 @@ void grpcInstrumentation() {
7367
Helloworld.Response response = testing.runWithSpan("parent", () -> client.sayHello(request));
7468

7569
assertThat(response.getMessage()).isEqualTo("Hello test");
76-
int requestSerializedSize = request.getSerializedSize();
77-
int responseSerializedSize = response.getSerializedSize();
7870

7971
testing.waitAndAssertTraces(
8072
trace ->
@@ -89,8 +81,6 @@ void grpcInstrumentation() {
8981
equalTo(RPC_SERVICE, "example.Greeter"),
9082
equalTo(RPC_METHOD, "SayHello"),
9183
equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()),
92-
equalTo(RPC_RESPONSE_BODY_SIZE, responseSerializedSize),
93-
equalTo(RPC_REQUEST_BODY_SIZE, requestSerializedSize),
9484
equalTo(SERVER_ADDRESS, "127.0.0.1"),
9585
equalTo(SERVER_PORT, (long) server.httpPort()))
9686
.hasEventsSatisfyingExactly(
@@ -116,8 +106,6 @@ void grpcInstrumentation() {
116106
equalTo(RPC_SERVICE, "example.Greeter"),
117107
equalTo(RPC_METHOD, "SayHello"),
118108
equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()),
119-
equalTo(RPC_REQUEST_BODY_SIZE, responseSerializedSize),
120-
equalTo(RPC_RESPONSE_BODY_SIZE, requestSerializedSize),
121109
equalTo(SERVER_ADDRESS, "127.0.0.1"),
122110
equalTo(SERVER_PORT, server.httpPort()))
123111
.hasEventsSatisfyingExactly(

instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.opentelemetry.api.common.AttributeKey;
1212
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientAttributesExtractor;
1313
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientMetrics;
14+
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcMetricsHolder;
1415
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerAttributesExtractor;
1516
import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerMetrics;
1617
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
@@ -175,6 +176,9 @@ public GrpcTelemetry build() {
175176
GrpcRpcAttributesGetter rpcAttributesGetter = GrpcRpcAttributesGetter.INSTANCE;
176177

177178
clientInstrumenterBuilder
179+
.addContextCustomizer(
180+
(context, request, attributes) ->
181+
RpcMetricsHolder.init(context))
178182
.setSpanStatusExtractor(GrpcSpanStatusExtractor.CLIENT)
179183
.addAttributesExtractors(additionalExtractors)
180184
.addAttributesExtractor(RpcClientAttributesExtractor.create(rpcAttributesGetter))

instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ public void start(Listener<RESPONSE> responseListener, Metadata headers) {
126126

127127
@Override
128128
public void sendMessage(REQUEST message) {
129-
request.setRequestSize(BodySizeUtil.getBodySize(message));
130129
try (Scope ignored = context.makeCurrent()) {
131130
super.sendMessage(message);
132131
} catch (Throwable e) {
@@ -160,7 +159,6 @@ final class TracingClientCallListener
160159

161160
@Override
162161
public void onMessage(RESPONSE message) {
163-
request.setResponseSize(BodySizeUtil.getBodySize(message));
164162
long messageId = RECEIVED_MESSAGE_ID_UPDATER.incrementAndGet(TracingClientCall.this);
165163
if (emitMessageEvents) {
166164
Attributes attributes = Attributes.of(MESSAGE_TYPE, RECEIVED, MESSAGE_ID, messageId);

instrumentation/grpc-1.6/testing/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/AbstractGrpcStreamingTest.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import io.grpc.ServerBuilder;
2929
import io.grpc.Status;
3030
import io.grpc.stub.StreamObserver;
31-
import io.opentelemetry.api.common.AttributeKey;
3231
import io.opentelemetry.api.trace.Span;
3332
import io.opentelemetry.api.trace.SpanKind;
3433
import io.opentelemetry.api.trace.Tracer;
@@ -53,11 +52,6 @@
5352

5453
public abstract class AbstractGrpcStreamingTest {
5554

56-
private static final AttributeKey<Long> RPC_REQUEST_BODY_SIZE =
57-
AttributeKey.longKey("rpc.request.body.size");
58-
private static final AttributeKey<Long> RPC_RESPONSE_BODY_SIZE =
59-
AttributeKey.longKey("rpc.response.body.size");
60-
6155
protected abstract ServerBuilder<?> configureServer(ServerBuilder<?> server);
6256

6357
protected abstract ManagedChannelBuilder<?> configureClient(ManagedChannelBuilder<?> client);
@@ -165,9 +159,6 @@ public void onCompleted() {
165159
.sorted()
166160
.collect(Collectors.toList()));
167161

168-
Helloworld.Response message = Helloworld.Response.newBuilder().setMessage("call " + 1).build();
169-
int requestSerializedSize = message.getSerializedSize();
170-
171162
List<Consumer<EventData>> clientEvents = new ArrayList<>();
172163
List<Consumer<EventData>> serverEvents = new ArrayList<>();
173164
for (long i = 0; i < clientMessageCount; i++) {
@@ -236,8 +227,6 @@ public void onCompleted() {
236227
equalTo(RPC_SERVICE, "example.Greeter"),
237228
equalTo(RPC_METHOD, "Conversation"),
238229
equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()),
239-
equalTo(RPC_RESPONSE_BODY_SIZE, requestSerializedSize),
240-
equalTo(RPC_REQUEST_BODY_SIZE, requestSerializedSize),
241230
equalTo(SERVER_ADDRESS, "localhost"),
242231
equalTo(SERVER_PORT, (long) server.getPort())))
243232
.satisfies(
@@ -253,8 +242,6 @@ public void onCompleted() {
253242
equalTo(RPC_SERVICE, "example.Greeter"),
254243
equalTo(RPC_METHOD, "Conversation"),
255244
equalTo(RPC_GRPC_STATUS_CODE, (long) Status.Code.OK.value()),
256-
equalTo(RPC_REQUEST_BODY_SIZE, requestSerializedSize),
257-
equalTo(RPC_RESPONSE_BODY_SIZE, requestSerializedSize),
258245
equalTo(SERVER_ADDRESS, "localhost"),
259246
equalTo(SERVER_PORT, server.getPort()),
260247
equalTo(NETWORK_TYPE, "ipv4"),

0 commit comments

Comments
 (0)