diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/PendingTrace.java b/dd-trace-ot/src/main/java/datadog/opentracing/PendingTrace.java index cdaf389e93..dfe3104658 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/PendingTrace.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/PendingTrace.java @@ -205,6 +205,7 @@ public class PendingTrace extends ConcurrentLinkedDeque { while ((ref = referenceQueue.poll()) != null) { weakReferences.remove(ref); if (isWritten.compareAndSet(false, true)) { + SPAN_CLEANER.pendingTraces.remove(this); // preserve throughput count. // Don't report the trace because the data comes from buggy uses of the api and is suspect. tracer.incrementTraceCount(); diff --git a/dd-trace-ot/src/test/groovy/datadog/opentracing/PendingTraceTest.groovy b/dd-trace-ot/src/test/groovy/datadog/opentracing/PendingTraceTest.groovy index a01d7681ef..8327221913 100644 --- a/dd-trace-ot/src/test/groovy/datadog/opentracing/PendingTraceTest.groovy +++ b/dd-trace-ot/src/test/groovy/datadog/opentracing/PendingTraceTest.groovy @@ -121,6 +121,7 @@ class PendingTraceTest extends Specification { trace.asList() == [rootSpan] writer == [] traceCount.get() == 1 + !PendingTrace.SPAN_CLEANER.pendingTraces.contains(trace) } def "add unfinished span to trace fails"() {