From e2de25f02dccd16efd8a8d823f92b2bc69a03d76 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 22 Aug 2018 11:02:44 +0200 Subject: [PATCH] Adding order for TraceFilter; fixes gh-1020 --- .../src/main/asciidoc/spring-cloud-sleuth.adoc | 3 +++ .../instrument/web/SleuthWebProperties.java | 18 ++++++++++++++++++ .../web/TraceWebAutoConfiguration.java | 4 ++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc index 50a1d5064..4b59b7653 100644 --- a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc +++ b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc @@ -438,6 +438,9 @@ add to the Span a tag with key `custom` and a value `tag`. include::../../../..//spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java[tags=response_headers,indent=0] ---- +To change the order of `TraceFilter` registration, please set the +`spring.sleuth.web.filter-order` property. + === Custom SA tag in Zipkin Sometimes you want to create a manual Span that will wrap a call to an external service which is not instrumented. diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java index 7d6065d9c..99f64b158 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java @@ -25,6 +25,12 @@ public class SleuthWebProperties { */ private String skipPattern = DEFAULT_SKIP_PATTERN; + /** + * Order in which the {@link TraceFilter} should be registered. + * Defaults to {@link TraceFilter#ORDER} + */ + private int filterOrder = TraceFilter.ORDER; + private Client client; public boolean isEnabled() { @@ -43,6 +49,18 @@ public class SleuthWebProperties { this.skipPattern = skipPattern; } + public static String getDefaultSkipPattern() { + return DEFAULT_SKIP_PATTERN; + } + + public int getFilterOrder() { + return this.filterOrder; + } + + public void setFilterOrder(int filterOrder) { + this.filterOrder = filterOrder; + } + public Client getClient() { return this.client; } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java index 554292326..f800d2d24 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java @@ -89,12 +89,12 @@ public class TraceWebAutoConfiguration { } @Bean - public FilterRegistrationBean traceWebFilter(TraceFilter traceFilter) { + public FilterRegistrationBean traceWebFilter(TraceFilter traceFilter, SleuthWebProperties sleuthWebProperties) { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean( traceFilter); filterRegistrationBean.setDispatcherTypes(ASYNC, ERROR, FORWARD, INCLUDE, REQUEST); - filterRegistrationBean.setOrder(TraceFilter.ORDER); + filterRegistrationBean.setOrder(sleuthWebProperties.getFilterOrder()); return filterRegistrationBean; }