From 14236cfd97a62f4696b932ecd976fcb6bef5ce51 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 18 Oct 2016 16:21:04 +0200 Subject: [PATCH] Propagating exceptions in trace filter without this change any exception occurring while creating a span will be swallowed. with this change we're propagating the exception so that it gets handled properly. fixes #426 --- .../sleuth/instrument/web/TraceFilter.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java index e5222e2cc..f8ba27379 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java @@ -15,18 +15,18 @@ */ package org.springframework.cloud.sleuth.instrument.web; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.regex.Pattern; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -134,16 +134,9 @@ public class TraceFilter extends GenericFilterBean { return; } String name = HTTP_COMPONENT + ":" + uri; - try { - spanFromRequest = createSpan(request, skip, spanFromRequest, name); - } catch (IllegalArgumentException e) { - filterChain.doFilter(request, response); - response.sendError(HttpStatus.BAD_REQUEST.value(), - "Exception tracing request [" + e.getMessage() + "]"); - return; - } Throwable exception = null; try { + spanFromRequest = createSpan(request, skip, spanFromRequest, name); filterChain.doFilter(request, response); } catch (Throwable e) { exception = e;