Skip to content

Commit 78da0f9

Browse files
committed
fix: missing attributes for the end of process
1 parent c84ab3d commit 78da0f9

File tree

4 files changed

+25
-13
lines changed

4 files changed

+25
-13
lines changed

messaging-wrappers/aliyun-mns-sdk/src/test/java/io/opentelemetry/contrib/messaging/wrappers/mns/AliyunMnsSdkTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
package io.opentelemetry.contrib.messaging.wrappers.mns;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
9+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
910
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
1011
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE;
1112
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ENVELOPE_SIZE;
13+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID;
1214
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION;
1315
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM;
1416
import static org.assertj.core.api.Assertions.assertThat;
@@ -32,6 +34,7 @@
3234
import io.opentelemetry.contrib.messaging.wrappers.testing.AbstractBaseTest;
3335
import java.nio.charset.StandardCharsets;
3436
import org.apache.commons.codec.binary.Base64;
37+
import org.assertj.core.api.AbstractAssert;
3538
import org.junit.jupiter.api.BeforeAll;
3639
import org.junit.jupiter.api.Test;
3740
import org.junit.jupiter.api.TestInstance;
@@ -151,7 +154,8 @@ public void assertTraces() {
151154
MESSAGING_MESSAGE_ENVELOPE_SIZE,
152155
Base64.encodeBase64(MESSAGE_BODY.getBytes(StandardCharsets.UTF_8))
153156
.length),
154-
equalTo(MESSAGING_OPERATION, "process")),
157+
equalTo(MESSAGING_OPERATION, "process"),
158+
satisfies(MESSAGING_MESSAGE_ID, AbstractAssert::isNotNull)),
155159
span ->
156160
span.hasName("process child")
157161
.hasKind(SpanKind.INTERNAL)

messaging-wrappers/api/src/main/java/io/opentelemetry/contrib/messaging/wrappers/MessagingProcessWrapper.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,30 +46,32 @@ public static <REQUEST> MessagingProcessWrapperBuilder<REQUEST> defaultBuilder()
4646
public <E extends Throwable> void doProcess(REQUEST request, ThrowingRunnable<E> runnable)
4747
throws E {
4848
Span span = handleStart(request);
49+
Context context = span.storeInContext(Context.current());
4950

50-
try (Scope scope = span.makeCurrent()) {
51+
try (Scope scope = context.makeCurrent()) {
5152
runnable.run();
5253
} catch (Throwable t) {
53-
handleEnd(span, request, t);
54+
handleEnd(span, context, request, t);
5455
throw t;
5556
}
5657

57-
handleEnd(span, request, null);
58+
handleEnd(span, context, request, null);
5859
}
5960

6061
public <R, E extends Throwable> R doProcess(REQUEST request, ThrowingSupplier<R, E> supplier)
6162
throws E {
6263
Span span = handleStart(request);
64+
Context context = span.storeInContext(Context.current());
6365

6466
R result = null;
65-
try (Scope scope = span.makeCurrent()) {
67+
try (Scope scope = context.makeCurrent()) {
6668
result = supplier.get();
6769
} catch (Throwable t) {
68-
handleEnd(span, request, t);
70+
handleEnd(span, context, request, t);
6971
throw t;
7072
}
7173

72-
handleEnd(span, request, null);
74+
handleEnd(span, context, request, null);
7375
return result;
7476
}
7577

@@ -86,11 +88,13 @@ protected Span handleStart(REQUEST request) {
8688
return spanBuilder.setAllAttributes(builder.build()).startSpan();
8789
}
8890

89-
protected void handleEnd(Span span, REQUEST request, @Nullable Throwable t) {
91+
protected void handleEnd(Span span, Context context, REQUEST request, @Nullable Throwable t) {
9092
AttributesBuilder builder = Attributes.builder();
9193
for (AttributesExtractor<REQUEST, Void> extractor : this.attributesExtractors) {
92-
extractor.onEnd(builder, Context.current(), request, null, t);
94+
extractor.onEnd(builder, context, request, null, t);
9395
}
96+
97+
span.setAllAttributes(builder.build());
9498
span.end();
9599
}
96100

messaging-wrappers/api/src/test/java/io/opentelemetry/contrib/messaging/wrappers/UserDefinedMessageSystemTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import static io.opentelemetry.contrib.messaging.wrappers.TestConstants.MESSAGE_BODY;
1111
import static io.opentelemetry.contrib.messaging.wrappers.TestConstants.MESSAGE_ID;
1212
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
13+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
1314
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
1415
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE;
16+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID;
1517
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION;
1618
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM;
1719

@@ -37,6 +39,8 @@
3739
import java.nio.charset.StandardCharsets;
3840
import java.util.Collections;
3941
import java.util.HashMap;
42+
43+
import org.assertj.core.api.AbstractAssert;
4044
import org.junit.jupiter.api.BeforeAll;
4145
import org.junit.jupiter.api.Test;
4246
import org.junit.jupiter.api.TestInstance;
@@ -127,7 +131,8 @@ public void assertTraces() {
127131
// semconv library right now. It should be replaced after semconv
128132
// release.
129133
equalTo(AttributeKey.stringKey("messaging.client_id"), CLIENT_ID),
130-
equalTo(MESSAGING_OPERATION, "process")),
134+
equalTo(MESSAGING_OPERATION, "process"),
135+
satisfies(MESSAGING_MESSAGE_ID, AbstractAssert::isNotNull)),
131136
span ->
132137
span.hasName("process child")
133138
.hasKind(SpanKind.INTERNAL)

messaging-wrappers/kafka-clients/src/test/java/io/opentelemetry/contrib/messaging/wrappers/kafka/KafkaClientTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
1212
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_PARTITION_ID;
1313
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_CONSUMER_GROUP;
14-
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_KEY;
1514
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_KAFKA_MESSAGE_OFFSET;
1615
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_BODY_SIZE;
16+
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID;
1717
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_OPERATION;
1818
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_SYSTEM;
1919

@@ -152,8 +152,7 @@ public void assertTraces() {
152152
AttributeKey.stringKey("messaging.client_id"), "test-consumer-1"),
153153
satisfies(MESSAGING_KAFKA_MESSAGE_OFFSET, AbstractAssert::isNotNull),
154154
equalTo(MESSAGING_KAFKA_CONSUMER_GROUP, "test"),
155-
equalTo(MESSAGING_OPERATION, "process"),
156-
equalTo(MESSAGING_KAFKA_MESSAGE_KEY, "42")),
155+
equalTo(MESSAGING_OPERATION, "process")),
157156
span ->
158157
span.hasName("process child")
159158
.hasKind(SpanKind.INTERNAL)

0 commit comments

Comments
 (0)