diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParser.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParser.java index 8d2781376..68bef847d 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParser.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParser.java @@ -1,10 +1,10 @@ package org.springframework.cloud.sleuth; -import java.lang.invoke.MethodHandles; - import org.apache.commons.logging.LogFactory; import org.springframework.cloud.sleuth.util.ExceptionUtils; +import java.lang.invoke.MethodHandles; + /** * {@link ErrorParser} that sets the error tag for an exportable span. * @@ -17,7 +17,7 @@ public class ExceptionMessageErrorParser implements ErrorParser { @Override public void parseErrorTags(Span span, Throwable error) { - if (span.isExportable()) { + if (span != null && span.isExportable()) { String errorMsg = ExceptionUtils.getExceptionMessage(error); if (log.isDebugEnabled()) { log.debug("Adding an error tag [" + errorMsg + "] to span " + span); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParserTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParserTests.java index 535348662..e0148ae69 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParserTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/ExceptionMessageErrorParserTests.java @@ -19,6 +19,11 @@ public class ExceptionMessageErrorParserTests { then(span).hasATag("error", "foo"); } + @Test + public void should_not_throw_an_exception_when_span_is_null() throws Exception { + new ExceptionMessageErrorParser().parseErrorTags(null, null); + } + @Test public void should_not_append_tag_for_non_exportable_span() throws Exception { Throwable e = new RuntimeException("foo");