From 9533fbfed0d8b51d066e0e79fab05c68ba1c87e9 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 3 May 2019 22:08:09 +0400 Subject: [PATCH] Making a copy of "nativeHeaders" and working on a copy otherwise we got ConcurrentModificationExceptions fixes gh-1345 --- .../instrument/messaging/MessageHeaderPropagation.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java index 13ec0e0f8..4d0fffa9c 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java @@ -151,11 +151,18 @@ enum MessageHeaderPropagation nativeHeaders); } if (nativeHeaders instanceof Map) { - ((Map) nativeHeaders).put(key, Collections.singletonList(value)); + Map> copy = toNativeHeaderMap( + (Map>) nativeHeaders); + copy.put(key, Collections.singletonList(value)); + accessor.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS, copy); } } } + private Map> toNativeHeaderMap(Map> map) { + return (map != null ? new LinkedMultiValueMap<>(map) : Collections.emptyMap()); + } + @Override public String get(MessageHeaderAccessor accessor, String key) { try {