diff --git a/modules/core/src/main/java/org/apache/synapse/aspects/flow/statistics/tracing/opentelemetry/management/handling/span/SpanHandler.java b/modules/core/src/main/java/org/apache/synapse/aspects/flow/statistics/tracing/opentelemetry/management/handling/span/SpanHandler.java index 70880d6eac..cbf5bf1218 100644 --- a/modules/core/src/main/java/org/apache/synapse/aspects/flow/statistics/tracing/opentelemetry/management/handling/span/SpanHandler.java +++ b/modules/core/src/main/java/org/apache/synapse/aspects/flow/statistics/tracing/opentelemetry/management/handling/span/SpanHandler.java @@ -49,6 +49,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; /** * Controls Jaeger spans, with respect to various events received during Synapse message flow. @@ -203,13 +204,13 @@ private void startSpan(StatisticDataUnit statisticDataUnit, MessageContext synCt Span span; Map tracerSpecificCarrier = new HashMap<>(); - Map headersMap = (Map) ((Axis2MessageContext) synCtx).getAxis2MessageContext() - .getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS); + Map headersMap = new ConcurrentHashMap<>((Map) ((Axis2MessageContext) synCtx).getAxis2MessageContext() + .getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS)); Object statusCode = ((Axis2MessageContext) synCtx).getAxis2MessageContext().getProperty("HTTP_SC"); Object statusDescription = ((Axis2MessageContext) synCtx).getAxis2MessageContext().getProperty("HTTP_DESC"); // We only need to extract span context from headers when there are trp headers available if (headersMap == null) { - headersMap = new HashMap(); + headersMap = new ConcurrentHashMap(); } if (isOuterLevelSpan(statisticDataUnit, spanStore)) { // Extract span context from headers