diff --git a/instrumentation/jms-1.1/javaagent/src/jms2Test/groovy/Jms2Test.groovy b/instrumentation/jms-1.1/javaagent/src/jms2Test/groovy/Jms2Test.groovy index 4dca6858bd..a1ad3da172 100644 --- a/instrumentation/jms-1.1/javaagent/src/jms2Test/groovy/Jms2Test.groovy +++ b/instrumentation/jms-1.1/javaagent/src/jms2Test/groovy/Jms2Test.groovy @@ -161,22 +161,8 @@ class Jms2Test extends AgentTestRunner { expect: receivedMessage == null - assertTraces(1) { - trace(0, 1) { // Consumer trace - span(0) { - hasNoParent() - name destinationName + " receive" - kind CONSUMER - errored false - attributes { - "${SemanticAttributes.MESSAGING_SYSTEM.key}" "jms" - "${SemanticAttributes.MESSAGING_DESTINATION_KIND.key}" destinationType - "${SemanticAttributes.MESSAGING_DESTINATION.key}" destinationName - "${SemanticAttributes.MESSAGING_OPERATION.key}" "receive" - } - } - } - } + // span is not created if no message is received + assertTraces(0,{}) cleanup: consumer.close() @@ -196,23 +182,8 @@ class Jms2Test extends AgentTestRunner { expect: receivedMessage == null - assertTraces(1) { - trace(0, 1) { // Consumer trace - span(0) { - hasNoParent() - name destinationName + " receive" - kind CONSUMER - errored false - attributes { - "${SemanticAttributes.MESSAGING_SYSTEM.key}" "jms" - "${SemanticAttributes.MESSAGING_DESTINATION_KIND.key}" destinationType - "${SemanticAttributes.MESSAGING_DESTINATION.key}" destinationName - "${SemanticAttributes.MESSAGING_OPERATION.key}" "receive" - - } - } - } - } + // span is not created if no message is received + assertTraces(0, {}) cleanup: consumer.close() diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsInstrumentationModule.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsInstrumentationModule.java index 3fd3adfd04..a3cfb97733 100644 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsInstrumentationModule.java +++ b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsInstrumentationModule.java @@ -25,8 +25,7 @@ public class JmsInstrumentationModule extends InstrumentationModule { return asList( new JmsMessageConsumerInstrumentation(), new JmsMessageListenerInstrumentation(), - new JmsMessageProducerInstrumentation(), - new JmsSessionInstrumentation()); + new JmsMessageProducerInstrumentation()); } @Override diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java index e452053a2c..11590a9bdd 100644 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java +++ b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsMessageConsumerInstrumentation.java @@ -13,12 +13,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.api.trace.Span; -import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import io.opentelemetry.javaagent.tooling.TypeInstrumentation; import java.util.HashMap; import java.util.Map; import javax.jms.Message; -import javax.jms.MessageConsumer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -57,21 +55,15 @@ public class JmsMessageConsumerInstrumentation implements TypeInstrumentation { @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void stopSpan( - @Advice.This MessageConsumer consumer, @Advice.Enter long startTime, @Advice.Return Message message, @Advice.Thrown Throwable throwable) { MessageDestination destination; if (message == null) { - destination = - InstrumentationContext.get(MessageConsumer.class, MessageDestination.class) - .get(consumer); - if (destination == null) { - destination = MessageDestination.UNKNOWN; - } - } else { - destination = tracer().extractDestination(message, null); + // Do not create span when no message is received + return; } + destination = tracer().extractDestination(message, null); Span span = tracer().startConsumerSpan(destination, "receive", message, startTime); diff --git a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsSessionInstrumentation.java b/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsSessionInstrumentation.java deleted file mode 100644 index 26a21167a8..0000000000 --- a/instrumentation/jms-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/JmsSessionInstrumentation.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.jms; - -import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; -import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; -import static net.bytebuddy.matcher.ElementMatchers.isPublic; -import static net.bytebuddy.matcher.ElementMatchers.named; -import static net.bytebuddy.matcher.ElementMatchers.takesArgument; - -import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; -import io.opentelemetry.javaagent.tooling.TypeInstrumentation; -import java.util.Map; -import javax.jms.Destination; -import javax.jms.MessageConsumer; -import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; -import net.bytebuddy.description.type.TypeDescription; -import net.bytebuddy.matcher.ElementMatcher; - -public class JmsSessionInstrumentation implements TypeInstrumentation { - - @Override - public ElementMatcher classLoaderOptimization() { - return hasClassesNamed("javax.jms.Session"); - } - - @Override - public ElementMatcher typeMatcher() { - return implementsInterface(named("javax.jms.Session")); - } - - @Override - public Map, String> transformers() { - return singletonMap( - named("createConsumer") - .and(takesArgument(0, named("javax.jms.Destination"))) - .and(isPublic()), - JmsSessionInstrumentation.class.getName() + "$ConsumerAdvice"); - } - - public static class ConsumerAdvice { - - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void onExit( - @Advice.Argument(0) Destination destination, @Advice.Return MessageConsumer consumer) { - MessageDestination messageDestination = JmsTracer.extractMessageDestination(destination); - InstrumentationContext.get(MessageConsumer.class, MessageDestination.class) - .put(consumer, messageDestination); - } - } -} diff --git a/instrumentation/jms-1.1/javaagent/src/test/groovy/Jms1Test.groovy b/instrumentation/jms-1.1/javaagent/src/test/groovy/Jms1Test.groovy index eedc931e60..d1d1250383 100644 --- a/instrumentation/jms-1.1/javaagent/src/test/groovy/Jms1Test.groovy +++ b/instrumentation/jms-1.1/javaagent/src/test/groovy/Jms1Test.groovy @@ -134,22 +134,8 @@ class Jms1Test extends AgentTestRunner { expect: receivedMessage == null - assertTraces(1) { - trace(0, 1) { // Consumer trace - span(0) { - hasNoParent() - name destinationName + " receive" - kind CONSUMER - errored false - attributes { - "${SemanticAttributes.MESSAGING_SYSTEM.key}" "jms" - "${SemanticAttributes.MESSAGING_DESTINATION.key}" destinationName - "${SemanticAttributes.MESSAGING_DESTINATION_KIND.key}" destinationType - "${SemanticAttributes.MESSAGING_OPERATION.key}" "receive" - } - } - } - } + // span is not created if no message is received + assertTraces(0, {}) cleanup: consumer.close() @@ -169,22 +155,8 @@ class Jms1Test extends AgentTestRunner { expect: receivedMessage == null - assertTraces(1) { - trace(0, 1) { // Consumer trace - span(0) { - hasNoParent() - name destinationName + " receive" - kind CONSUMER - errored false - attributes { - "${SemanticAttributes.MESSAGING_SYSTEM.key}" "jms" - "${SemanticAttributes.MESSAGING_DESTINATION.key}" destinationName - "${SemanticAttributes.MESSAGING_DESTINATION_KIND.key}" destinationType - "${SemanticAttributes.MESSAGING_OPERATION.key}" "receive" - } - } - } - } + // span is not created if no message is received + assertTraces(0, {}) cleanup: consumer.close()