From daa80d98af34d0d4eed71a9e3e552787f3bbe2b4 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Fri, 19 Dec 2025 12:27:08 +0100 Subject: [PATCH] Avoid NPE when inspecting spring messaging headers --- .../springmessaging/SpringMessageExtractAdapter.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java b/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java index d11e4f7fc43..2d6e1befd70 100644 --- a/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java +++ b/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java @@ -10,6 +10,7 @@ import java.util.Map; import java.util.function.Function; import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHeaders; public final class SpringMessageExtractAdapter implements AgentPropagation.ContextVisitor> { @@ -33,7 +34,12 @@ public String apply(String key) { @Override public void forEachKey(Message carrier, AgentPropagation.KeyClassifier classifier) { - for (Map.Entry header : carrier.getHeaders().entrySet()) { + final MessageHeaders messageHeaders = carrier.getHeaders(); + if (messageHeaders == null || messageHeaders.isEmpty()) { + return; + } + + for (Map.Entry header : messageHeaders.entrySet()) { Object headerValue = header.getValue(); if ("_datadog".equals(header.getKey())) { if (headerValue instanceof String) {