From 0dccc3ad5637274fab260de18efe9d01b0d35978 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Thu, 9 Mar 2023 18:15:27 +0100 Subject: [PATCH] Fix NPE in the RabbitMQ instrumentation (#8021) Fixes #8020 --- .../RabbitDeliveryAttributesGetter.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitDeliveryAttributesGetter.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitDeliveryAttributesGetter.java index 98e570d31d..870ab29913 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitDeliveryAttributesGetter.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitDeliveryAttributesGetter.java @@ -5,10 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.rabbitmq; +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; + import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessagingAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; -import java.util.Collections; import java.util.List; +import java.util.Map; import javax.annotation.Nullable; enum RabbitDeliveryAttributesGetter implements MessagingAttributesGetter { @@ -72,10 +75,14 @@ enum RabbitDeliveryAttributesGetter implements MessagingAttributesGetter getMessageHeader(DeliveryRequest request, String name) { - Object value = request.getProperties().getHeaders().get(name); - if (value != null) { - return Collections.singletonList(value.toString()); + Map headers = request.getProperties().getHeaders(); + if (headers == null) { + return emptyList(); } - return Collections.emptyList(); + Object value = headers.get(name); + if (value == null) { + return emptyList(); + } + return singletonList(value.toString()); } }