diff --git a/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSLogger.java b/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSLogger.java new file mode 100644 index 00000000000..6618045254d --- /dev/null +++ b/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSLogger.java @@ -0,0 +1,13 @@ +package datadog.trace.instrumentation.jms; + +import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class JMSLogger { + private static final Logger log = LoggerFactory.getLogger(JMSLogger.class); + + public static void logIterationSpan(AgentSpan span) { + log.debug("Expecting the following `ITERATION` span to be finished {}", span); + } +} diff --git a/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java index d203a65dfcb..8d6e3d62436 100644 --- a/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java @@ -164,6 +164,7 @@ public static void afterReceive( CONSUMER_DECORATE.onError(span, throwable); activateNext(span); // scope is left open until next message or it times out + JMSLogger.logIterationSpan(span); SessionState sessionState = consumerState.getSessionState(); if (sessionState.isClientAcknowledge()) { diff --git a/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java b/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java index cc126c31cfc..9c0ef70a12b 100644 --- a/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java +++ b/dd-java-agent/instrumentation/jms/javax-jms-1.1/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java @@ -36,7 +36,8 @@ public String[] helperClassNames() { packageName + ".MessageExtractAdapter", packageName + ".MessageExtractAdapter$1", packageName + ".MessageInjectAdapter", - packageName + ".DatadogMessageListener" + packageName + ".DatadogMessageListener", + packageName + ".JMSLogger" }; } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/scopemanager/ContinuableScopeManager.java b/dd-trace-core/src/main/java/datadog/trace/core/scopemanager/ContinuableScopeManager.java index 6e26ebfcf07..bcbb736a931 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/scopemanager/ContinuableScopeManager.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/scopemanager/ContinuableScopeManager.java @@ -1,6 +1,7 @@ package datadog.trace.core.scopemanager; import static datadog.trace.api.ConfigDefaults.DEFAULT_ASYNC_PROPAGATING; +import static datadog.trace.api.telemetry.LogCollector.SEND_TELEMETRY; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan; import static datadog.trace.core.scopemanager.ContinuableScope.CONTEXT; @@ -248,6 +249,13 @@ public void closePrevious(final boolean finishSpan) { if (finishSpan && span != null) { span.finishWithEndToEnd(); } + } else if (top != null) { + log.debug( + SEND_TELEMETRY, + "Scope found at top of stack has source {} when we expect {}. Current span at the top of the stack {}.", + top.source(), + ITERATION, + top.span()); } }