Ensures that NPE is not thrown when errormessage has no failed message
fixes gh-1335
This commit is contained in:
@@ -395,7 +395,8 @@ public final class TracingChannelInterceptor extends ChannelInterceptorAdapter
|
||||
Object payload = message.getPayload();
|
||||
if (payload instanceof MessagingException) {
|
||||
MessagingException e = (MessagingException) payload;
|
||||
return e.getFailedMessage();
|
||||
Message<?> failedMessage = e.getFailedMessage();
|
||||
return failedMessage != null ? failedMessage : message;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
@@ -283,6 +283,28 @@ public class TracingChannelInterceptorTest {
|
||||
.isSameAs(errorsReplyChannel);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void errorMessageHeadersWithNullPayloadRetained() {
|
||||
this.channel.addInterceptor(this.interceptor);
|
||||
Map<String, Object> errorChannelHeaders = new HashMap<>();
|
||||
errorChannelHeaders.put(TraceMessageHeaders.TRACE_ID_NAME, "000000000000000a");
|
||||
errorChannelHeaders.put(TraceMessageHeaders.SPAN_ID_NAME, "000000000000000a");
|
||||
this.channel.send(new ErrorMessage(new MessagingException("exception"),
|
||||
errorChannelHeaders));
|
||||
|
||||
this.message = this.channel.receive();
|
||||
|
||||
assertThat(this.message).isNotNull();
|
||||
String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME,
|
||||
String.class);
|
||||
assertThat(spanId).isNotNull();
|
||||
String traceId = this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME,
|
||||
String.class);
|
||||
assertThat(traceId).isEqualTo("000000000000000a");
|
||||
assertThat(spanId).isNotEqualTo("000000000000000a");
|
||||
assertThat(this.spans).hasSize(2);
|
||||
}
|
||||
|
||||
ChannelInterceptor producerSideOnly(ChannelInterceptor delegate) {
|
||||
return new ChannelInterceptorAdapter() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user