Merge pull request #249 from spring-cloud/issues_247_parent_not_stopped

Stopping parent before reporting
This commit is contained in:
Adrian Cole
2016-04-12 09:20:40 -04:00
2 changed files with 15 additions and 0 deletions

View File

@@ -138,6 +138,7 @@ public class TraceFilter extends OncePerRequestFilter {
Span parent = spanFromRequest.getSavedSpan();
if (parent.isRemote()) {
parent.logEvent(Span.SERVER_SEND);
parent.stop();
this.spanReporter.report(parent);
}
} else {

View File

@@ -184,6 +184,20 @@ public class TraceFilterTests {
assertNull(TestSpanContextHolder.getCurrentSpan());
}
@Test
public void ensuresThatParentSpanIsStoppedWhenReported() throws Exception {
this.request = builder().header(Span.SPAN_ID_NAME, 10L)
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, spanIsStoppedVeryfingReporter(),
this.spanExtractor, this.spanInjector);
filter.doFilter(this.request, this.response, this.filterChain);
}
SpanReporter spanIsStoppedVeryfingReporter() {
return (span) -> assertThat(span.getEnd()).as("Span has to be stopped before reporting").isNotZero();
}
@Test
public void additionalMultiValuedHeader() throws Exception {
this.request = builder().header(Span.SPAN_ID_NAME, 10L)