Will reuse the mutable accessor if present; fixes gh-1742

This commit is contained in:
Marcin Grzejszczak
2020-11-25 15:24:14 +01:00
parent 4b62b519d1
commit 382f4a0da7
2 changed files with 16 additions and 3 deletions

View File

@@ -209,8 +209,7 @@ public final class TracingChannelInterceptor extends ChannelInterceptorAdapter
private Message<?> outputMessage(Message<?> originalMessage,
Message<?> retrievedMessage, MessageHeaderAccessor additionalHeaders) {
MessageHeaderAccessor headers = MessageHeaderAccessor
.getMutableAccessor(originalMessage);
MessageHeaderAccessor headers = mutableHeaderAccessor(originalMessage);
if (originalMessage instanceof ErrorMessage) {
ErrorMessage errorMessage = (ErrorMessage) originalMessage;
headers.copyHeaders(MessageHeaderPropagation.propagationHeaders(
@@ -412,6 +411,11 @@ public final class TracingChannelInterceptor extends ChannelInterceptorAdapter
}
private MessageHeaderAccessor mutableHeaderAccessor(Message<?> message) {
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message,
MessageHeaderAccessor.class);
if (accessor != null && accessor.isMutable()) {
return accessor;
}
MessageHeaderAccessor headers = MessageHeaderAccessor.getMutableAccessor(message);
headers.setLeaveMutable(true);
return headers;

View File

@@ -138,10 +138,19 @@ final class MessageConsumerRequest extends ConsumerRequest {
MessageConsumerRequest(Message delegate,
Getter<MessageHeaderAccessor, String> getter) {
this.delegate = delegate;
this.mutableHeaders = MessageHeaderAccessor.getMutableAccessor(delegate);
this.mutableHeaders = mutableAccessor(delegate);
this.getter = getter;
}
private MessageHeaderAccessor mutableAccessor(Message message) {
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message,
MessageHeaderAccessor.class);
if (accessor != null && accessor.isMutable()) {
return accessor;
}
return MessageHeaderAccessor.getMutableAccessor(delegate);
}
@Override
public Span.Kind spanKind() {
return Span.Kind.CONSUMER;