From b2d34a096034f4285277ce90bffbe0d204e1e9f7 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 11 Aug 2019 23:08:55 +0800 Subject: [PATCH 1/2] latest brave --- benchmarks/pom.xml | 2 +- pom.xml | 2 +- spring-cloud-sleuth-samples/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 8040cc56d..6751936b5 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -34,7 +34,7 @@ 1.8 1.8 2.1.6.RELEASE - 5.6.7 + 5.6.10 diff --git a/pom.xml b/pom.xml index 593b3b3f3..6654569ba 100644 --- a/pom.xml +++ b/pom.xml @@ -265,7 +265,7 @@ 2.1.3.BUILD-SNAPSHOT 2.1.3.BUILD-SNAPSHOT - 5.6.7 + 5.6.10 2.1.2.RELEASE diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml index 48942b445..8305b2ecb 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -73,7 +73,7 @@ io.zipkin.zipkin2 zipkin - 2.14.2 + 2.16.0 From 56c18e9084f2329568ae633a8369a55504bd2936 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 12 Aug 2019 17:22:59 +0200 Subject: [PATCH 2/2] Making the TraceFilter lazy in the filter bean registration fixes gh-1420 --- .../web/TraceWebServletAutoConfiguration.java | 48 ++++++++++++++++++- ...hTagPropagationAutoConfigurationTests.java | 14 +++--- 2 files changed, 53 insertions(+), 9 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java index a246f91f9..72467f9eb 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java @@ -16,13 +16,22 @@ package org.springframework.cloud.sleuth.instrument.web; +import java.io.IOException; + import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import brave.Tracing; import brave.http.HttpTracing; import brave.servlet.TracingFilter; import brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor; +import org.springframework.beans.factory.BeanFactory; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -71,10 +80,10 @@ public class TraceWebServletAutoConfiguration { } @Bean - public FilterRegistrationBean traceWebFilter(TracingFilter tracingFilter, + public FilterRegistrationBean traceWebFilter(BeanFactory beanFactory, SleuthWebProperties webProperties) { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean( - tracingFilter); + new LazyTracingFilter(beanFactory)); filterRegistrationBean.setDispatcherTypes(DispatcherType.ASYNC, DispatcherType.ERROR, DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST); @@ -113,4 +122,39 @@ public class TraceWebServletAutoConfiguration { } + private static final class LazyTracingFilter implements Filter { + + private final BeanFactory beanFactory; + + private Filter tracingFilter; + + private LazyTracingFilter(BeanFactory beanFactory) { + this.beanFactory = beanFactory; + } + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + tracingFilter().init(filterConfig); + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + tracingFilter().doFilter(request, response, chain); + } + + @Override + public void destroy() { + tracingFilter().destroy(); + } + + private Filter tracingFilter() { + if (this.tracingFilter == null) { + this.tracingFilter = this.beanFactory.getBean(TracingFilter.class); + } + return this.tracingFilter; + } + + } + } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfigurationTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfigurationTests.java index 8314c2c15..3e4960146 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfigurationTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfigurationTests.java @@ -32,10 +32,11 @@ public class SleuthTagPropagationAutoConfigurationTests { @Test public void shouldCreateHandlerByDefault() { - this.contextRunner - .withUserConfiguration(TraceAutoConfiguration.class).run((context) -> { - assertThat(context).hasSingleBean(TagPropagationFinishedSpanHandler.class); - }); + this.contextRunner.withUserConfiguration(TraceAutoConfiguration.class) + .run((context) -> { + assertThat(context) + .hasSingleBean(TagPropagationFinishedSpanHandler.class); + }); } @Test @@ -63,12 +64,11 @@ public class SleuthTagPropagationAutoConfigurationTests { @Test public void shouldCreateHandlerWithYml() { - this.contextRunner - .withPropertyValues( - "spring.profiles.active=tag-propagation") + this.contextRunner.withPropertyValues("spring.profiles.active=tag-propagation") .withUserConfiguration(TraceAutoConfiguration.class).run((context) -> { assertThat(context) .hasSingleBean(TagPropagationFinishedSpanHandler.class); }); } + }