This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch mm-npe in repository https://gitbox.apache.org/repos/asf/camel.git
commit 98f80edf11f0002e44588e8d1970f35fce2e4da6 Author: Claus Ibsen <[email protected]> AuthorDate: Wed Jan 24 11:09:07 2024 +0100 CAMEL-20350: camel-observation - Fix Micrometer should use real null for null values. --- .../camel/observation/MicrometerObservationTracer.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java b/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java index 74f90818965..a11a84f7a1f 100644 --- a/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java +++ b/components/camel-observation/src/main/java/org/apache/camel/observation/MicrometerObservationTracer.java @@ -72,14 +72,20 @@ public class MicrometerObservationTracer extends org.apache.camel.tracing.Tracer throw new UnsupportedOperationException("You can't extract when sending a message"); case SPAN_KIND_SERVER: RequestReplyReceiverContext<Object, Message> replyReceiverContext - = new RequestReplyReceiverContext<>((carrier, key) -> String.valueOf(adapter.get(key))); + = new RequestReplyReceiverContext<>((carrier, key) -> { + Object val = adapter.get(key); + return val != null ? val.toString() : null; + }); replyReceiverContext.setResponse(exchange.getMessage()); replyReceiverContext.setCarrier(exchange.getIn()); return replyReceiverContext; case CONSUMER: case SPAN_KIND_CLIENT: ReceiverContext<Message> receiverContext - = new ReceiverContext<>((carrier, key) -> String.valueOf(adapter.get(key))); + = new ReceiverContext<>((carrier, key) -> { + Object val = adapter.get(key); + return val != null ? val.toString() : null; + }); receiverContext.setCarrier(exchange.getIn()); return receiverContext; default: @@ -144,8 +150,10 @@ public class MicrometerObservationTracer extends org.apache.camel.tracing.Tracer // Because Camel allows to close scopes multiple times TracingObservationHandler.TracingContext tracingContext = parentObservation.getContextView().get(TracingObservationHandler.TracingContext.class); - Span parentSpan = tracingContext.getSpan(); - scope = tracer.withSpan(parentSpan); + if (tracingContext != null) { + Span parentSpan = tracingContext.getSpan(); + scope = tracer.withSpan(parentSpan); + } } if (parentObservation != null) { observation.parentObservation(parentObservation);
