Skip to content

Commit 5f44dd8

Browse files
authored
add nullaway to spring jms (part 2) (#15409)
1 parent 284668a commit 5f44dd8

File tree

12 files changed

+37
-6
lines changed

12 files changed

+37
-6
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,15 @@ public <REQUEST, RESPONSE> Context suppressSpan(
327327
Instrumenter<REQUEST, RESPONSE> instrumenter,
328328
Context parentContext,
329329
REQUEST request) {
330-
SpanKind spanKind = instrumenter.spanKindExtractor.extract(request);
330+
return suppressSpan(
331+
instrumenter, parentContext, instrumenter.spanKindExtractor.extract(request));
332+
}
331333

334+
@Override
335+
public <REQUEST, RESPONSE> Context suppressSpan(
336+
Instrumenter<REQUEST, RESPONSE> instrumenter,
337+
Context parentContext,
338+
SpanKind spanKind) {
332339
return instrumenter.spanSuppressor.storeInContext(
333340
parentContext, spanKind, Span.getInvalid());
334341
}

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InstrumenterAccess.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.instrumentation.api.internal;
77

8+
import io.opentelemetry.api.trace.SpanKind;
89
import io.opentelemetry.context.Context;
910
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1011
import java.time.Instant;
@@ -27,4 +28,7 @@ <REQUEST, RESPONSE> Context startAndEnd(
2728

2829
<REQUEST, RESPONSE> Context suppressSpan(
2930
Instrumenter<REQUEST, RESPONSE> instrumenter, Context parentContext, REQUEST request);
31+
32+
<REQUEST, RESPONSE> Context suppressSpan(
33+
Instrumenter<REQUEST, RESPONSE> instrumenter, Context parentContext, SpanKind spanKind);
3034
}

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/InstrumenterUtil.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package io.opentelemetry.instrumentation.api.internal;
77

88
import com.google.errorprone.annotations.CanIgnoreReturnValue;
9+
import io.opentelemetry.api.trace.SpanKind;
910
import io.opentelemetry.context.Context;
1011
import io.opentelemetry.context.propagation.TextMapGetter;
1112
import io.opentelemetry.context.propagation.TextMapSetter;
@@ -53,6 +54,11 @@ public static <REQUEST, RESPONSE> Context suppressSpan(
5354
return instrumenterAccess.suppressSpan(instrumenter, parentContext, request);
5455
}
5556

57+
public static <REQUEST, RESPONSE> Context suppressSpan(
58+
Instrumenter<REQUEST, RESPONSE> instrumenter, Context parentContext, SpanKind spanKind) {
59+
return instrumenterAccess.suppressSpan(instrumenter, parentContext, spanKind);
60+
}
61+
5662
public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> buildUpstreamInstrumenter(
5763
InstrumenterBuilder<REQUEST, RESPONSE> builder,
5864
TextMapGetter<REQUEST> getter,

instrumentation/jms/jms-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessageWithDestination.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package io.opentelemetry.javaagent.instrumentation.jms;
77

88
import com.google.auto.value.AutoValue;
9+
import javax.annotation.Nullable;
910

1011
@AutoValue
1112
public abstract class MessageWithDestination {
@@ -20,7 +21,7 @@ public abstract class MessageWithDestination {
2021
public abstract boolean isTemporaryDestination();
2122

2223
public static MessageWithDestination create(
23-
MessageAdapter message, DestinationAdapter fallbackDestination) {
24+
MessageAdapter message, @Nullable DestinationAdapter fallbackDestination) {
2425
DestinationAdapter jmsDestination = null;
2526
try {
2627
jmsDestination = message.getJmsDestination();

instrumentation/spring/spring-jms/spring-jms-2.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("otel.javaagent-instrumentation")
3+
id("otel.nullaway-conventions")
34
}
45

56
muzzle {

instrumentation/spring/spring-jms/spring-jms-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v2_0/AbstractPollingMessageListenerContainerInstrumentation.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.javaagent.bootstrap.jms.JmsReceiveContextHolder;
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
17+
import javax.annotation.Nullable;
1718
import net.bytebuddy.asm.Advice;
1819
import net.bytebuddy.description.type.TypeDescription;
1920
import net.bytebuddy.matcher.ElementMatcher;
@@ -34,6 +35,7 @@ public void transform(TypeTransformer transformer) {
3435
public static class ReceiveAndExecuteAdvice {
3536

3637
@Advice.OnMethodEnter(suppress = Throwable.class)
38+
@Nullable
3739
public static Scope onEnter() {
3840
if (isReceiveTelemetryEnabled()) {
3941
Context context = JmsReceiveContextHolder.init(Java8BytecodeBridge.currentContext());

instrumentation/spring/spring-jms/spring-jms-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v2_0/JmsDestinationAccessorInstrumentation.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
import static net.bytebuddy.matcher.ElementMatchers.named;
1111
import static net.bytebuddy.matcher.ElementMatchers.returns;
1212

13+
import io.opentelemetry.api.trace.SpanKind;
1314
import io.opentelemetry.context.Context;
1415
import io.opentelemetry.context.Scope;
1516
import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil;
1617
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
1718
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1819
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
20+
import javax.annotation.Nullable;
1921
import net.bytebuddy.asm.Advice;
2022
import net.bytebuddy.description.type.TypeDescription;
2123
import net.bytebuddy.matcher.ElementMatcher;
@@ -37,14 +39,15 @@ public void transform(TypeTransformer transformer) {
3739
public static class ReceiveAdvice {
3840

3941
@Advice.OnMethodEnter(suppress = Throwable.class)
42+
@Nullable
4043
public static Scope onEnter() {
4144
if (isReceiveTelemetryEnabled()) {
4245
return null;
4346
}
4447
// suppress receive span creation in jms instrumentation
4548
Context context =
4649
InstrumenterUtil.suppressSpan(
47-
receiveInstrumenter(), Java8BytecodeBridge.currentContext(), null);
50+
receiveInstrumenter(), Java8BytecodeBridge.currentContext(), SpanKind.CONSUMER);
4851
return context.makeCurrent();
4952
}
5053

instrumentation/spring/spring-jms/spring-jms-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v2_0/SpringJmsMessageListenerInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,14 @@ public static AdviceScope enter(Message message) {
8181
return new AdviceScope(request, context, context.makeCurrent());
8282
}
8383

84-
public void exit(Throwable throwable) {
84+
public void exit(@Nullable Throwable throwable) {
8585
scope.close();
8686
listenerInstrumenter().end(context, request, null, throwable);
8787
}
8888
}
8989

9090
@Advice.OnMethodEnter(suppress = Throwable.class)
91+
@Nullable
9192
public static AdviceScope onEnter(@Advice.Argument(0) Message message) {
9293
return AdviceScope.enter(message);
9394
}

instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("otel.javaagent-instrumentation")
3+
id("otel.nullaway-conventions")
34
}
45

56
muzzle {

instrumentation/spring/spring-jms/spring-jms-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/jms/v6_0/AbstractPollingMessageListenerContainerInstrumentation.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.javaagent.bootstrap.jms.JmsReceiveContextHolder;
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
17+
import javax.annotation.Nullable;
1718
import net.bytebuddy.asm.Advice;
1819
import net.bytebuddy.description.type.TypeDescription;
1920
import net.bytebuddy.matcher.ElementMatcher;
@@ -34,6 +35,7 @@ public void transform(TypeTransformer transformer) {
3435
public static class ReceiveAndExecuteAdvice {
3536

3637
@Advice.OnMethodEnter(suppress = Throwable.class)
38+
@Nullable
3739
public static Scope onEnter() {
3840
if (isReceiveTelemetryEnabled()) {
3941
Context context = JmsReceiveContextHolder.init(Java8BytecodeBridge.currentContext());

0 commit comments

Comments
 (0)