From 91a2c799de686e44721d0a64a9295c1e6f5a2b51 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 19 Oct 2017 15:15:13 +0200 Subject: [PATCH] More defensive approach with HandlerMethod --- .../cloud/sleuth/instrument/web/TraceWebFilter.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java index 8e0a09786..84e72ff7a 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java @@ -20,6 +20,7 @@ import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.util.StringUtils; import org.springframework.web.method.HandlerMethod; import org.springframework.web.reactive.HandlerMapping; +import org.springframework.web.reactive.resource.ResourceWebHandler; import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.WebFilter; import org.springframework.web.server.WebFilterChain; @@ -88,9 +89,13 @@ public class TraceWebFilter implements WebFilter, Ordered { errorParser().parseErrorTags(tracer().getCurrentSpan(), t); addResponseTags(response, t); }).doFinally(t -> { - HandlerMethod handlerMethod = exchange.getAttribute(HandlerMapping.BEST_MATCHING_HANDLER_ATTRIBUTE); - addClassMethodTag(handlerMethod, span); - addClassNameTag(handlerMethod, span); + Object attribute = exchange + .getAttribute(HandlerMapping.BEST_MATCHING_HANDLER_ATTRIBUTE); + if (attribute instanceof HandlerMethod) { + HandlerMethod handlerMethod = (HandlerMethod) attribute; + addClassMethodTag(handlerMethod, span); + addClassNameTag(handlerMethod, span); + } addResponseTagsForSpanWithoutParent(exchange, response); detachOrCloseSpans(span); }));