Removed sending the tracing information back in the response (#329)

fixes #327
This commit is contained in:
Marcin Grzejszczak
2016-07-11 13:21:31 +02:00
parent ee23ea6465
commit 35652a43d9
10 changed files with 33 additions and 130 deletions

View File

@@ -1,44 +0,0 @@
/*
* Copyright 2013-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.sleuth.instrument.web;
import javax.servlet.http.HttpServletResponse;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanInjector;
/**
* Span injector that injects tracing info to {@link HttpServletResponse}
*
* @author Marcin Grzejszczak
*
* @since 1.0.0
*/
class HttpServletResponseInjector implements SpanInjector<HttpServletResponse> {
@Override
public void inject(Span span, HttpServletResponse carrier) {
if (span == null) {
return;
}
if (!carrier.containsHeader(Span.SPAN_ID_NAME)) {
carrier.addHeader(Span.SPAN_ID_NAME, Span.idToHex(span.getSpanId()));
carrier.addHeader(Span.TRACE_ID_NAME, Span.idToHex(span.getTraceId()));
}
}
}

View File

@@ -32,7 +32,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanExtractor;
import org.springframework.cloud.sleuth.SpanInjector;
import org.springframework.cloud.sleuth.SpanReporter;
import org.springframework.cloud.sleuth.TraceKeys;
import org.springframework.cloud.sleuth.Tracer;
@@ -45,8 +44,6 @@ import org.springframework.web.context.request.async.WebAsyncUtils;
import org.springframework.web.filter.GenericFilterBean;
import org.springframework.web.util.UrlPathHelper;
import static org.springframework.util.StringUtils.hasText;
/**
* Filter that takes the value of the {@link Span#SPAN_ID_NAME} and
* {@link Span#TRACE_ID_NAME} header from either request or response and uses them to
@@ -89,29 +86,25 @@ public class TraceFilter extends GenericFilterBean {
private final Pattern skipPattern;
private final SpanReporter spanReporter;
private final SpanExtractor<HttpServletRequest> spanExtractor;
private final SpanInjector<HttpServletResponse> spanInjector;
private final HttpTraceKeysInjector httpTraceKeysInjector;
private UrlPathHelper urlPathHelper = new UrlPathHelper();
public TraceFilter(Tracer tracer, TraceKeys traceKeys, SpanReporter spanReporter,
SpanExtractor<HttpServletRequest> spanExtractor,
SpanInjector<HttpServletResponse> spanInjector,
HttpTraceKeysInjector httpTraceKeysInjector) {
this(tracer, traceKeys, Pattern.compile(DEFAULT_SKIP_PATTERN), spanReporter,
spanExtractor, spanInjector, httpTraceKeysInjector);
spanExtractor, httpTraceKeysInjector);
}
public TraceFilter(Tracer tracer, TraceKeys traceKeys, Pattern skipPattern,
SpanReporter spanReporter, SpanExtractor<HttpServletRequest> spanExtractor,
SpanInjector<HttpServletResponse> spanInjector,
HttpTraceKeysInjector httpTraceKeysInjector) {
this.tracer = tracer;
this.traceKeys = traceKeys;
this.skipPattern = skipPattern;
this.spanReporter = spanReporter;
this.spanExtractor = spanExtractor;
this.spanInjector = spanInjector;
this.httpTraceKeysInjector = httpTraceKeysInjector;
}
@@ -138,7 +131,6 @@ public class TraceFilter extends GenericFilterBean {
processErrorRequest(filterChain, request, response, spanFromRequest);
return;
}
addToResponseIfNotPresent(response, Span.SAMPLED_NAME, skip ? Span.SPAN_NOT_SAMPLED : Span.SPAN_SAMPLED);
String name = HTTP_COMPONENT + ":" + uri;
try {
spanFromRequest = createSpan(request, skip, spanFromRequest, name);
@@ -150,9 +142,6 @@ public class TraceFilter extends GenericFilterBean {
}
Throwable exception = null;
try {
this.spanInjector.inject(spanFromRequest, response);
// Add headers before filter chain in case one of the filters flushes the
// response...
filterChain.doFilter(request, response);
} catch (Throwable e) {
exception = e;
@@ -166,7 +155,6 @@ public class TraceFilter extends GenericFilterBean {
return;
}
spanFromRequest = createSpanIfRequestNotHandled(request, spanFromRequest, name, skip);
addToResponseIfNotPresent(response, Span.SAMPLED_NAME, skip ? Span.SPAN_NOT_SAMPLED : Span.SPAN_SAMPLED);
detachOrCloseSpans(request, response, spanFromRequest, exception);
}
}
@@ -364,13 +352,6 @@ public class TraceFilter extends GenericFilterBean {
}
}
private void addToResponseIfNotPresent(HttpServletResponse response, String name,
String value) {
if (!hasText(response.getHeader(name))) {
response.addHeader(name, value);
}
}
protected boolean isAsyncStarted(HttpServletRequest request) {
return WebAsyncUtils.getAsyncManager(request).isConcurrentHandlingStarted();
}

View File

@@ -16,7 +16,6 @@
package org.springframework.cloud.sleuth.instrument.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.regex.Pattern;
import org.springframework.beans.factory.BeanFactory;
@@ -32,7 +31,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.sleuth.SpanExtractor;
import org.springframework.cloud.sleuth.SpanInjector;
import org.springframework.cloud.sleuth.SpanNamer;
import org.springframework.cloud.sleuth.SpanReporter;
import org.springframework.cloud.sleuth.TraceKeys;
@@ -89,7 +87,6 @@ public class TraceWebAutoConfiguration {
public FilterRegistrationBean traceWebFilter(Tracer tracer, TraceKeys traceKeys,
SkipPatternProvider skipPatternProvider, SpanReporter spanReporter,
SpanExtractor<HttpServletRequest> spanExtractor,
SpanInjector<HttpServletResponse> spanInjector,
HttpTraceKeysInjector httpTraceKeysInjector, TraceFilter traceFilter) {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(traceFilter);
filterRegistrationBean.setDispatcherTypes(ASYNC, ERROR, FORWARD, INCLUDE, REQUEST);
@@ -100,10 +97,9 @@ public class TraceWebAutoConfiguration {
public TraceFilter traceFilter(Tracer tracer, TraceKeys traceKeys,
SkipPatternProvider skipPatternProvider, SpanReporter spanReporter,
SpanExtractor<HttpServletRequest> spanExtractor,
SpanInjector<HttpServletResponse> spanInjector,
HttpTraceKeysInjector httpTraceKeysInjector) {
return new TraceFilter(tracer, traceKeys, skipPatternProvider.skipPattern(),
spanReporter, spanExtractor, spanInjector, httpTraceKeysInjector);
spanReporter, spanExtractor, httpTraceKeysInjector);
}
@Bean
@@ -112,11 +108,6 @@ public class TraceWebAutoConfiguration {
return new HttpServletRequestExtractor(skipPatternProvider.skipPattern());
}
@Bean
public SpanInjector<HttpServletResponse> httpServletResponseSpanInjector() {
return new HttpServletResponseInjector();
}
@Configuration
@ConditionalOnClass(ManagementServerProperties.class)
@ConditionalOnMissingBean(SkipPatternProvider.class)

View File

@@ -42,7 +42,6 @@ public class TraceFilterAlwaysSamplerIntegrationTests extends AbstractMvcIntegra
MvcResult mvcResult = whenSentPingWithTraceId(expectedTraceId);
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
then(span.isExportable());
}
@@ -52,14 +51,13 @@ public class TraceFilterAlwaysSamplerIntegrationTests extends AbstractMvcIntegra
MvcResult mvcResult = whenSentPingWithTraceIdAndNotSampling(expectedTraceId);
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
then(span.isExportable()).isFalse();
}
@Override
protected void configureMockMvcBuilder(DefaultMockMvcBuilder mockMvcBuilder) {
mockMvcBuilder.addFilters(new TraceFilter(this.tracer, this.traceKeys,
new NoOpSpanReporter(), this.spanExtractor, this.spanInjector,
new NoOpSpanReporter(), this.spanExtractor,
this.httpTraceKeysInjector));
}
@@ -87,10 +85,6 @@ public class TraceFilterAlwaysSamplerIntegrationTests extends AbstractMvcIntegra
return this.mockMvc.perform(request).andReturn();
}
private Long tracingHeaderFrom(MvcResult mvcResult) {
return Span.hexToId(mvcResult.getResponse().getHeader(Span.TRACE_ID_NAME));
}
@DefaultTestAutoConfiguration
@RestController
@Configuration

View File

@@ -19,7 +19,6 @@ package org.springframework.cloud.sleuth.instrument.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URI;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@@ -84,20 +83,16 @@ public class TraceFilterCustomExtractorTests {
.header("mySpanId", Span.idToHex(spanId)).build();
@SuppressWarnings("rawtypes")
ResponseEntity<Map> requestHeaders = this.restTemplate.exchange(requestEntity,
ResponseEntity<Map> responseHeaders = this.restTemplate.exchange(requestEntity,
Map.class);
await().until(() -> then(this.accumulator.getSpans().stream().filter(
span -> span.getSpanId() == spanId).findFirst().get())
.hasTraceIdEqualTo(traceId));
then(requestHeaders.getBody())
then(responseHeaders.getBody())
.containsEntry("correlationid", Span.idToHex(traceId))
.containsEntry("myspanid", Span.idToHex(spanId))
.as("input request headers");
then(requestHeaders.getHeaders())
.containsEntry("correlationId",
Collections.singletonList(Span.idToHex(traceId)))
.containsKey("mySpanId").as("response headers");
}
@Configuration

View File

@@ -59,9 +59,8 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
@Test
public void should_create_and_return_trace_in_HTTP_header() throws Exception {
MvcResult mvcResult = whenSentPingWithoutTracingData();
whenSentPingWithoutTracingData();
then(tracingHeaderFrom(mvcResult)).isNotNull();
Span parentSpan = this.spanAccumulator.getSpans().stream().filter(
span -> span.getSpanId() == TraceFilterIntegrationTests.span.getParents().get(0))
.findFirst().get();
@@ -75,7 +74,9 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
throws Exception {
MvcResult mvcResult = whenSentInfoWithTraceId(new Random().nextLong());
then(notSampledHeaderIsPresent(mvcResult)).isEqualTo(true);
// https://github.com/spring-cloud/spring-cloud-sleuth/issues/327
// we don't want to respond with any tracing data
then(notSampledHeaderIsPresent(mvcResult)).isEqualTo(false);
then(ExceptionUtils.getLastException()).isNull();
}
@@ -86,7 +87,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
MvcResult mvcResult = whenSentPingWithTraceId(expectedTraceId);
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
then(ExceptionUtils.getLastException()).isNull();
}
@@ -108,7 +108,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
this.mockMvc.perform(asyncDispatch(mvcResult))
.andExpect(status().isOk()).andReturn();
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
then(this.tracer.getCurrentSpan()).isNull();
then(ExceptionUtils.getLastException()).isNull();
}
@@ -121,7 +120,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
this.mockMvc.perform(asyncDispatch(mvcResult))
.andExpect(status().isOk()).andReturn();
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
Optional<Span> taggedSpan = this.spanAccumulator.getSpans().stream()
.filter(span -> span.tags().containsKey("tag")).findFirst();
then(taggedSpan.isPresent()).isTrue();
@@ -137,7 +135,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
MvcResult mvcResult = whenSentToNonExistentEndpointWithTraceId(expectedTraceId);
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
then(this.tracer.getCurrentSpan()).isNull();
then(ExceptionUtils.getLastException()).isNull();
}
@@ -208,12 +205,10 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
private MvcResult whenSentRequestWithTraceIdAndNoSpanId(Long traceId)
throws Exception {
MvcResult mvcResult = this.mockMvc
return this.mockMvc
.perform(MockMvcRequestBuilders.get("/ping").accept(MediaType.TEXT_PLAIN)
.header(Span.TRACE_ID_NAME, Span.idToHex(traceId)))
.andReturn();
then(tracingHeaderFrom(mvcResult)).isEqualTo(traceId);
return mvcResult;
}
private MvcResult sendRequestWithTraceId(String path, String headerName, Long traceId, HttpStatus status)
@@ -226,10 +221,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
.andReturn();
}
private Long tracingHeaderFrom(MvcResult mvcResult) {
return Span.hexToId(mvcResult.getResponse().getHeader(Span.TRACE_ID_NAME));
}
private boolean notSampledHeaderIsPresent(MvcResult mvcResult) {
return Span.SPAN_NOT_SAMPLED
.equals(mvcResult.getResponse().getHeader(Span.SAMPLED_NAME));

View File

@@ -74,7 +74,7 @@ public class TraceFilterMockChainIntegrationTests {
public void startsNewTrace() throws Exception {
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, new NoOpSpanReporter(),
new HttpServletRequestExtractor(Pattern.compile(TraceFilter.DEFAULT_SKIP_PATTERN)),
new HttpServletResponseInjector(), keysInjector);
keysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
assertNull(TestSpanContextHolder.getCurrentSpan());
}
@@ -86,7 +86,7 @@ public class TraceFilterMockChainIntegrationTests {
.header(Span.TRACE_ID_NAME, generator.nextLong()).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, new NoOpSpanReporter(),
new HttpServletRequestExtractor(Pattern.compile(TraceFilter.DEFAULT_SKIP_PATTERN)),
new HttpServletResponseInjector(), keysInjector);
keysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
assertNull(TestSpanContextHolder.getCurrentSpan());
}

View File

@@ -17,7 +17,6 @@
package org.springframework.cloud.sleuth.instrument.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Optional;
import java.util.Random;
import java.util.regex.Pattern;
@@ -30,7 +29,6 @@ import org.springframework.cloud.sleuth.DefaultSpanNamer;
import org.springframework.cloud.sleuth.Sampler;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanExtractor;
import org.springframework.cloud.sleuth.SpanInjector;
import org.springframework.cloud.sleuth.SpanReporter;
import org.springframework.cloud.sleuth.TraceKeys;
import org.springframework.cloud.sleuth.Tracer;
@@ -51,8 +49,8 @@ import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilde
import static org.junit.Assert.assertEquals;
import static org.mockito.MockitoAnnotations.initMocks;
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.assertThat;
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then;
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.entry;
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
/**
@@ -67,7 +65,6 @@ public class TraceFilterTests {
ArrayListSpanAccumulator spanReporter = new ArrayListSpanAccumulator();
SpanExtractor<HttpServletRequest> spanExtractor = new HttpServletRequestExtractor(Pattern
.compile(TraceFilter.DEFAULT_SKIP_PATTERN));
SpanInjector<HttpServletResponse> spanInjector = new HttpServletResponseInjector();
private Tracer tracer;
private TraceKeys traceKeys = new TraceKeys();
@@ -112,7 +109,7 @@ public class TraceFilterTests {
public void notTraced() throws Exception {
this.sampler = NeverSampler.INSTANCE;
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
this.request = get("/favicon.ico").accept(MediaType.ALL)
.buildRequest(new MockServletContext());
@@ -126,7 +123,7 @@ public class TraceFilterTests {
@Test
public void startsNewTrace() throws Exception {
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
verifyCurrentSpanStatusCode(HttpStatus.OK);
@@ -137,7 +134,7 @@ public class TraceFilterTests {
@Test
public void shouldNotStoreHttpStatusCodeWhenResponseCodeHasNotYetBeenSet() throws Exception {
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
this.response.setStatus(0);
filter.doFilter(this.request, this.response, this.filterChain);
@@ -154,7 +151,7 @@ public class TraceFilterTests {
.header(Span.PARENT_ID_NAME, Span.idToHex(3L))
.buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
@@ -187,7 +184,7 @@ public class TraceFilterTests {
TestSpanContextHolder.removeCurrentSpan();
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
then(TestSpanContextHolder.getCurrentSpan()).isNull();
@@ -203,7 +200,7 @@ public class TraceFilterTests {
TestSpanContextHolder.removeCurrentSpan();
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
then(TestSpanContextHolder.getCurrentSpan()).isNull();
@@ -220,7 +217,7 @@ public class TraceFilterTests {
TestSpanContextHolder.removeCurrentSpan();
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
then(TestSpanContextHolder.getCurrentSpan()).isNull();
@@ -232,7 +229,7 @@ public class TraceFilterTests {
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
verifyParentSpanHttpTags();
@@ -247,7 +244,7 @@ public class TraceFilterTests {
this.traceKeys.getHttp().getHeaders().add("x-foo");
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
this.request.addHeader("X-Foo", "bar");
filter.doFilter(this.request, this.response, this.filterChain);
@@ -261,7 +258,7 @@ public class TraceFilterTests {
this.request = builder().header(Span.SPAN_ID_NAME, PARENT_ID)
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, spanIsStoppedVeryfingReporter(),
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);
}
@@ -277,7 +274,7 @@ public class TraceFilterTests {
this.traceKeys.getHttp().getHeaders().add("x-foo");
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
this.request.addHeader("X-Foo", "bar");
this.request.addHeader("X-Foo", "spam");
filter.doFilter(this.request, this.response, this.filterChain);
@@ -292,7 +289,7 @@ public class TraceFilterTests {
this.request = builder().header(Span.SPAN_ID_NAME, PARENT_ID)
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
this.filterChain = new MockFilterChain() {
@Override
public void doFilter(javax.servlet.ServletRequest request,
@@ -317,7 +314,7 @@ public class TraceFilterTests {
this.request = builder().header(Span.SPAN_ID_NAME, PARENT_ID)
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
this.response.setStatus(404);
filter.doFilter(this.request, this.response, this.filterChain);
@@ -330,7 +327,7 @@ public class TraceFilterTests {
this.request = builder().header(Span.SPAN_ID_NAME, "asd")
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
this.spanExtractor, this.httpTraceKeysInjector);
filter.doFilter(this.request, this.response, this.filterChain);

View File

@@ -112,8 +112,8 @@ public class WebClientTests {
ResponseEntityProvider provider) {
ResponseEntity<String> response = provider.get(this);
then(getHeader(response, Span.TRACE_ID_NAME)).isNotNull();
then(getHeader(response, Span.SPAN_ID_NAME)).isNotNull();
then(getHeader(response, Span.TRACE_ID_NAME)).isNull();
then(getHeader(response, Span.SPAN_ID_NAME)).isNull();
then(this.listener.getSpans()).isNotEmpty();
Awaitility.await().atMost(3, TimeUnit.SECONDS).until(() -> {
log.info("Seraching for a notrace span in " + this.listener.getSpans());
@@ -172,9 +172,10 @@ public class WebClientTests {
ResponseEntity<String> response = provider.get(this);
then(getHeader(response, Span.SAMPLED_NAME)).isEqualTo(Span.SPAN_SAMPLED);
then(Span.hexToId(getHeader(response, Span.TRACE_ID_NAME)))
.isEqualTo(currentTraceId);
// https://github.com/spring-cloud/spring-cloud-sleuth/issues/327
// we don't want to respond with any tracing data
then(getHeader(response, Span.SAMPLED_NAME)).isNull();
then(getHeader(response, Span.TRACE_ID_NAME)).isNull();
thenRegisteredClientSentAndReceivedEvents(spanWithClientEvents());
}

View File

@@ -1,12 +1,10 @@
package org.springframework.cloud.sleuth.instrument.web.common;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.SpanExtractor;
import org.springframework.cloud.sleuth.SpanInjector;
import org.springframework.cloud.sleuth.TraceKeys;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.cloud.sleuth.instrument.web.HttpTraceKeysInjector;
@@ -37,7 +35,6 @@ public abstract class AbstractMvcIntegrationTest {
@Autowired protected Tracer tracer;
@Autowired protected TraceKeys traceKeys;
@Autowired protected SpanExtractor<HttpServletRequest> spanExtractor;
@Autowired protected SpanInjector<HttpServletResponse> spanInjector;
@Autowired protected HttpTraceKeysInjector httpTraceKeysInjector;
@Before