Will reuse the mutable accessor if present; fixes gh-1742
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user