Skip to content

Commit 50f91e6

Browse files
author
Mateusz Rzeszutek
authored
Deprecate AttributesExtractor#set() method (open-telemetry#5749)
* Deprecate AttributesExtractor#set() method * code review comments
1 parent 39e1fcb commit 50f91e6

File tree

35 files changed

+238
-162
lines changed

35 files changed

+238
-162
lines changed

docs/logger-mdc-instrumentation.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ event's MDC copy:
1919
(same as `Span.current().getSpanContext().getTraceFlags().asHex()`).
2020

2121
Those three pieces of information can be included in log statements produced by the logging library
22-
by specifying them in the pattern/format.
22+
by specifying them in the pattern/format.
2323

2424
Tip: for Spring Boot configuration which uses logback, you can add MDC to log lines by overriding only the `logging.pattern.level`:
2525
```properties

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/code/CodeAttributesExtractor.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.code;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
@@ -35,9 +37,9 @@ private CodeAttributesExtractor(CodeAttributesGetter<REQUEST> getter) {
3537
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
3638
Class<?> cls = getter.codeClass(request);
3739
if (cls != null) {
38-
set(attributes, SemanticAttributes.CODE_NAMESPACE, cls.getName());
40+
internalSet(attributes, SemanticAttributes.CODE_NAMESPACE, cls.getName());
3941
}
40-
set(attributes, SemanticAttributes.CODE_FUNCTION, getter.methodName(request));
42+
internalSet(attributes, SemanticAttributes.CODE_FUNCTION, getter.methodName(request));
4143
}
4244

4345
@Override

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/DbClientAttributesExtractor.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.db;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
@@ -35,7 +37,7 @@ public static <REQUEST, RESPONSE> DbClientAttributesExtractor<REQUEST, RESPONSE>
3537
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
3638
super.onStart(attributes, parentContext, request);
3739

38-
set(attributes, SemanticAttributes.DB_STATEMENT, getter.statement(request));
39-
set(attributes, SemanticAttributes.DB_OPERATION, getter.operation(request));
40+
internalSet(attributes, SemanticAttributes.DB_STATEMENT, getter.statement(request));
41+
internalSet(attributes, SemanticAttributes.DB_OPERATION, getter.operation(request));
4042
}
4143
}

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/DbClientCommonAttributesExtractor.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.db;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.instrumentation.api.annotations.UnstableApi;
@@ -26,10 +28,11 @@ abstract class DbClientCommonAttributesExtractor<
2628

2729
@Override
2830
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
29-
set(attributes, SemanticAttributes.DB_SYSTEM, getter.system(request));
30-
set(attributes, SemanticAttributes.DB_USER, getter.user(request));
31-
set(attributes, SemanticAttributes.DB_NAME, getter.name(request));
32-
set(attributes, SemanticAttributes.DB_CONNECTION_STRING, getter.connectionString(request));
31+
internalSet(attributes, SemanticAttributes.DB_SYSTEM, getter.system(request));
32+
internalSet(attributes, SemanticAttributes.DB_USER, getter.user(request));
33+
internalSet(attributes, SemanticAttributes.DB_NAME, getter.name(request));
34+
internalSet(
35+
attributes, SemanticAttributes.DB_CONNECTION_STRING, getter.connectionString(request));
3336
}
3437

3538
@Override

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/db/SqlClientAttributesExtractor.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.db;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributeKey;
911
import io.opentelemetry.api.common.AttributesBuilder;
1012
import io.opentelemetry.context.Context;
@@ -55,8 +57,8 @@ public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST
5557

5658
SqlStatementInfo sanitizedStatement =
5759
SqlStatementSanitizer.sanitize(getter.rawStatement(request));
58-
set(attributes, SemanticAttributes.DB_STATEMENT, sanitizedStatement.getFullStatement());
59-
set(attributes, SemanticAttributes.DB_OPERATION, sanitizedStatement.getOperation());
60-
set(attributes, dbTableAttribute, sanitizedStatement.getTable());
60+
internalSet(attributes, SemanticAttributes.DB_STATEMENT, sanitizedStatement.getFullStatement());
61+
internalSet(attributes, SemanticAttributes.DB_OPERATION, sanitizedStatement.getOperation());
62+
internalSet(attributes, dbTableAttribute, sanitizedStatement.getTable());
6163
}
6264
}

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.http;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.instrumentation.api.annotations.UnstableApi;
@@ -53,7 +55,7 @@ public static <REQUEST, RESPONSE> HttpClientAttributesExtractorBuilder<REQUEST,
5355
@Override
5456
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
5557
super.onStart(attributes, parentContext, request);
56-
set(attributes, SemanticAttributes.HTTP_URL, getter.url(request));
58+
internalSet(attributes, SemanticAttributes.HTTP_URL, getter.url(request));
5759
}
5860

5961
@Override
@@ -64,7 +66,7 @@ public void onEnd(
6466
@Nullable RESPONSE response,
6567
@Nullable Throwable error) {
6668
super.onEnd(attributes, context, request, response, error);
67-
set(attributes, SemanticAttributes.HTTP_FLAVOR, getter.flavor(request, response));
69+
internalSet(attributes, SemanticAttributes.HTTP_FLAVOR, getter.flavor(request, response));
6870
}
6971

7072
/**

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.lowercase;
99
import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.requestAttributeKey;
1010
import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.responseAttributeKey;
11+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
1112

1213
import io.opentelemetry.api.common.AttributesBuilder;
1314
import io.opentelemetry.context.Context;
@@ -38,13 +39,13 @@ abstract class HttpCommonAttributesExtractor<
3839

3940
@Override
4041
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
41-
set(attributes, SemanticAttributes.HTTP_METHOD, getter.method(request));
42-
set(attributes, SemanticAttributes.HTTP_USER_AGENT, userAgent(request));
42+
internalSet(attributes, SemanticAttributes.HTTP_METHOD, getter.method(request));
43+
internalSet(attributes, SemanticAttributes.HTTP_USER_AGENT, userAgent(request));
4344

4445
for (String name : capturedRequestHeaders) {
4546
List<String> values = getter.requestHeader(request, name);
4647
if (!values.isEmpty()) {
47-
set(attributes, requestAttributeKey(name), values);
48+
internalSet(attributes, requestAttributeKey(name), values);
4849
}
4950
}
5051
}
@@ -57,33 +58,33 @@ public void onEnd(
5758
@Nullable RESPONSE response,
5859
@Nullable Throwable error) {
5960

60-
set(
61+
internalSet(
6162
attributes,
6263
SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH,
6364
getter.requestContentLength(request, response));
64-
set(
65+
internalSet(
6566
attributes,
6667
SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,
6768
getter.requestContentLengthUncompressed(request, response));
6869

6970
if (response != null) {
7071
Integer statusCode = getter.statusCode(request, response);
7172
if (statusCode != null && statusCode > 0) {
72-
set(attributes, SemanticAttributes.HTTP_STATUS_CODE, (long) statusCode);
73+
internalSet(attributes, SemanticAttributes.HTTP_STATUS_CODE, (long) statusCode);
7374
}
74-
set(
75+
internalSet(
7576
attributes,
7677
SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH,
7778
getter.responseContentLength(request, response));
78-
set(
79+
internalSet(
7980
attributes,
8081
SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,
8182
getter.responseContentLengthUncompressed(request, response));
8283

8384
for (String name : capturedResponseHeaders) {
8485
List<String> values = getter.responseHeader(request, response, name);
8586
if (!values.isEmpty()) {
86-
set(attributes, responseAttributeKey(name), values);
87+
internalSet(attributes, responseAttributeKey(name), values);
8788
}
8889
}
8990
}

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractor.java

+10-11
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import static io.opentelemetry.instrumentation.api.instrumenter.http.ForwardedHeaderParser.extractClientIpFromForwardedHeader;
1010
import static io.opentelemetry.instrumentation.api.instrumenter.http.ForwardedHeaderParser.extractProtoFromForwardedHeader;
1111
import static io.opentelemetry.instrumentation.api.instrumenter.http.ForwardedHeaderParser.extractProtoFromForwardedProtoHeader;
12+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
1213

1314
import io.opentelemetry.api.common.AttributesBuilder;
1415
import io.opentelemetry.context.Context;
@@ -68,17 +69,15 @@ public static <REQUEST, RESPONSE> HttpServerAttributesExtractorBuilder<REQUEST,
6869
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
6970
super.onStart(attributes, parentContext, request);
7071

71-
set(attributes, SemanticAttributes.HTTP_FLAVOR, getter.flavor(request));
72+
internalSet(attributes, SemanticAttributes.HTTP_FLAVOR, getter.flavor(request));
7273
String forwardedProto = forwardedProto(request);
73-
set(
74-
attributes,
75-
SemanticAttributes.HTTP_SCHEME,
76-
forwardedProto != null ? forwardedProto : getter.scheme(request));
77-
set(attributes, SemanticAttributes.HTTP_HOST, host(request));
78-
set(attributes, SemanticAttributes.HTTP_TARGET, getter.target(request));
79-
set(attributes, SemanticAttributes.HTTP_ROUTE, getter.route(request));
80-
set(attributes, SemanticAttributes.HTTP_SERVER_NAME, getter.serverName(request));
81-
set(attributes, SemanticAttributes.HTTP_CLIENT_IP, clientIp(request));
74+
String value = forwardedProto != null ? forwardedProto : getter.scheme(request);
75+
internalSet(attributes, SemanticAttributes.HTTP_SCHEME, value);
76+
internalSet(attributes, SemanticAttributes.HTTP_HOST, host(request));
77+
internalSet(attributes, SemanticAttributes.HTTP_TARGET, getter.target(request));
78+
internalSet(attributes, SemanticAttributes.HTTP_ROUTE, getter.route(request));
79+
internalSet(attributes, SemanticAttributes.HTTP_SERVER_NAME, getter.serverName(request));
80+
internalSet(attributes, SemanticAttributes.HTTP_CLIENT_IP, clientIp(request));
8281
}
8382

8483
@Override
@@ -90,7 +89,7 @@ public void onEnd(
9089
@Nullable Throwable error) {
9190

9291
super.onEnd(attributes, context, request, response, error);
93-
set(attributes, SemanticAttributes.HTTP_ROUTE, httpRouteHolderGetter.apply(context));
92+
internalSet(attributes, SemanticAttributes.HTTP_ROUTE, httpRouteHolderGetter.apply(context));
9493
}
9594

9695
@Nullable

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/messaging/MessagingAttributesExtractor.java

+19-13
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.instrumentation.api.instrumenter.messaging.MessageOperation.PROCESS;
99
import static io.opentelemetry.instrumentation.api.instrumenter.messaging.MessageOperation.RECEIVE;
10+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
1011

1112
import io.opentelemetry.api.common.AttributesBuilder;
1213
import io.opentelemetry.context.Context;
@@ -50,29 +51,33 @@ private MessagingAttributesExtractor(
5051
@SuppressWarnings("deprecation") // operationName
5152
@Override
5253
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
53-
set(attributes, SemanticAttributes.MESSAGING_SYSTEM, getter.system(request));
54-
set(attributes, SemanticAttributes.MESSAGING_DESTINATION_KIND, getter.destinationKind(request));
54+
internalSet(attributes, SemanticAttributes.MESSAGING_SYSTEM, getter.system(request));
55+
internalSet(
56+
attributes, SemanticAttributes.MESSAGING_DESTINATION_KIND, getter.destinationKind(request));
5557
boolean isTemporaryDestination = getter.temporaryDestination(request);
5658
if (isTemporaryDestination) {
57-
set(attributes, SemanticAttributes.MESSAGING_TEMP_DESTINATION, true);
58-
set(attributes, SemanticAttributes.MESSAGING_DESTINATION, TEMP_DESTINATION_NAME);
59+
internalSet(attributes, SemanticAttributes.MESSAGING_TEMP_DESTINATION, true);
60+
internalSet(attributes, SemanticAttributes.MESSAGING_DESTINATION, TEMP_DESTINATION_NAME);
5961
} else {
60-
set(attributes, SemanticAttributes.MESSAGING_DESTINATION, getter.destination(request));
62+
internalSet(
63+
attributes, SemanticAttributes.MESSAGING_DESTINATION, getter.destination(request));
6164
}
62-
set(attributes, SemanticAttributes.MESSAGING_PROTOCOL, getter.protocol(request));
63-
set(attributes, SemanticAttributes.MESSAGING_PROTOCOL_VERSION, getter.protocolVersion(request));
64-
set(attributes, SemanticAttributes.MESSAGING_URL, getter.url(request));
65-
set(attributes, SemanticAttributes.MESSAGING_CONVERSATION_ID, getter.conversationId(request));
66-
set(
65+
internalSet(attributes, SemanticAttributes.MESSAGING_PROTOCOL, getter.protocol(request));
66+
internalSet(
67+
attributes, SemanticAttributes.MESSAGING_PROTOCOL_VERSION, getter.protocolVersion(request));
68+
internalSet(attributes, SemanticAttributes.MESSAGING_URL, getter.url(request));
69+
internalSet(
70+
attributes, SemanticAttributes.MESSAGING_CONVERSATION_ID, getter.conversationId(request));
71+
internalSet(
6772
attributes,
6873
SemanticAttributes.MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,
6974
getter.messagePayloadSize(request));
70-
set(
75+
internalSet(
7176
attributes,
7277
SemanticAttributes.MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,
7378
getter.messagePayloadCompressedSize(request));
7479
if (operation == RECEIVE || operation == PROCESS) {
75-
set(attributes, SemanticAttributes.MESSAGING_OPERATION, operation.operationName());
80+
internalSet(attributes, SemanticAttributes.MESSAGING_OPERATION, operation.operationName());
7681
}
7782
}
7883

@@ -83,7 +88,8 @@ public void onEnd(
8388
REQUEST request,
8489
@Nullable RESPONSE response,
8590
@Nullable Throwable error) {
86-
set(attributes, SemanticAttributes.MESSAGING_MESSAGE_ID, getter.messageId(request, response));
91+
internalSet(
92+
attributes, SemanticAttributes.MESSAGING_MESSAGE_ID, getter.messageId(request, response));
8793
}
8894

8995
/**

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractor.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.net;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
@@ -45,19 +47,19 @@ public void onEnd(
4547
@Nullable RESPONSE response,
4648
@Nullable Throwable error) {
4749

48-
set(attributes, SemanticAttributes.NET_TRANSPORT, getter.transport(request, response));
50+
internalSet(attributes, SemanticAttributes.NET_TRANSPORT, getter.transport(request, response));
4951

5052
String peerIp = getter.peerIp(request, response);
5153
String peerName = getter.peerName(request, response);
5254

5355
if (peerName != null && !peerName.equals(peerIp)) {
54-
set(attributes, SemanticAttributes.NET_PEER_NAME, peerName);
56+
internalSet(attributes, SemanticAttributes.NET_PEER_NAME, peerName);
5557
}
56-
set(attributes, SemanticAttributes.NET_PEER_IP, peerIp);
58+
internalSet(attributes, SemanticAttributes.NET_PEER_IP, peerIp);
5759

5860
Integer peerPort = getter.peerPort(request, response);
5961
if (peerPort != null && peerPort > 0) {
60-
set(attributes, SemanticAttributes.NET_PEER_PORT, (long) peerPort);
62+
internalSet(attributes, SemanticAttributes.NET_PEER_PORT, (long) peerPort);
6163
}
6264
}
6365
}

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractor.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.net;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
@@ -33,15 +35,15 @@ private NetServerAttributesExtractor(NetServerAttributesGetter<REQUEST> getter)
3335

3436
@Override
3537
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
36-
set(attributes, SemanticAttributes.NET_TRANSPORT, getter.transport(request));
38+
internalSet(attributes, SemanticAttributes.NET_TRANSPORT, getter.transport(request));
3739

3840
String peerIp = getter.peerIp(request);
3941

40-
set(attributes, SemanticAttributes.NET_PEER_IP, peerIp);
42+
internalSet(attributes, SemanticAttributes.NET_PEER_IP, peerIp);
4143

4244
Integer peerPort = getter.peerPort(request);
4345
if (peerPort != null && peerPort > 0) {
44-
set(attributes, SemanticAttributes.NET_PEER_PORT, (long) peerPort);
46+
internalSet(attributes, SemanticAttributes.NET_PEER_PORT, (long) peerPort);
4547
}
4648
}
4749

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.instrumenter.rpc;
77

8+
import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
9+
810
import io.opentelemetry.api.common.AttributesBuilder;
911
import io.opentelemetry.context.Context;
1012
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
@@ -22,9 +24,9 @@ abstract class RpcCommonAttributesExtractor<REQUEST, RESPONSE>
2224

2325
@Override
2426
public final void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
25-
set(attributes, SemanticAttributes.RPC_SYSTEM, getter.system(request));
26-
set(attributes, SemanticAttributes.RPC_SERVICE, getter.service(request));
27-
set(attributes, SemanticAttributes.RPC_METHOD, getter.method(request));
27+
internalSet(attributes, SemanticAttributes.RPC_SYSTEM, getter.system(request));
28+
internalSet(attributes, SemanticAttributes.RPC_SERVICE, getter.service(request));
29+
internalSet(attributes, SemanticAttributes.RPC_METHOD, getter.method(request));
2830
}
2931

3032
@Override

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/AttributesExtractor.java

+4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ void onEnd(
4040
/**
4141
* Sets the {@code value} with the given {@code key} to the {@link AttributesBuilder} if {@code
4242
* value} is not {@code null}.
43+
*
44+
* @deprecated This method will be removed.
4345
*/
46+
// TODO: remove after 1.13 release
47+
@Deprecated
4448
default <T> void set(AttributesBuilder attributes, AttributeKey<T> key, @Nullable T value) {
4549
if (value != null) {
4650
attributes.put(key, value);

0 commit comments

Comments
 (0)