From f99014d8ad6a3f4984850fe13d04a85f642359e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Mon, 6 Oct 2025 15:54:15 +0200 Subject: [PATCH] try to fix pekko --- .../pekkohttp/DatadogServerRequestResponseFlowWrapper.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dd-java-agent/instrumentation/pekko/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogServerRequestResponseFlowWrapper.java b/dd-java-agent/instrumentation/pekko/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogServerRequestResponseFlowWrapper.java index 533a77e1ec4..242f95fe2d0 100644 --- a/dd-java-agent/instrumentation/pekko/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogServerRequestResponseFlowWrapper.java +++ b/dd-java-agent/instrumentation/pekko/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogServerRequestResponseFlowWrapper.java @@ -146,12 +146,19 @@ public void onUpstreamFailure(final Throwable ex) throws Exception { // Mark the span as failed AgentSpan span = fromContext(scope.context()); DatadogWrapperHelper.finishSpan(span, ex); + + // Clean up the leaked scope like in the normal response path + AgentSpan activeSpan = activeSpan(); + if (activeSpan == span) { + scope.close(); + } } // We will not receive any more responses from the user code, so clean up any // remaining spans scope = scopes.poll(); while (scope != null) { fromContext(scope.context()).finish(); + scope.close(); scope = scopes.poll(); } fail(responseOutlet, ex);