Polish following the review

This commit is contained in:
Marcin Grzejszczak
2019-01-21 10:30:56 +01:00
parent 490a1d8626
commit ae4195a6e5

View File

@@ -30,7 +30,8 @@ import brave.propagation.ExtraFieldPropagation;
import brave.propagation.Propagation;
import brave.propagation.ThreadLocalCurrentTraceContext;
import brave.sampler.Sampler;
import org.springframework.util.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import zipkin2.Span;
import zipkin2.reporter.InMemoryReporterMetrics;
import zipkin2.reporter.Reporter;
@@ -46,6 +47,7 @@ import org.springframework.cloud.sleuth.SpanAdjuster;
import org.springframework.cloud.sleuth.SpanNamer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
/**
* {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
@@ -95,9 +97,11 @@ public class TraceAutoConfiguration {
Sampler sampler, ErrorParser errorParser, SleuthProperties sleuthProperties) {
Tracing.Builder builder = Tracing.newBuilder().sampler(sampler)
.errorParser(errorParser)
.localServiceName(StringUtils.isEmpty(serviceName) ? DEFAULT_SERVICE_NAME : serviceName)
.localServiceName(StringUtils.isEmpty(serviceName) ? DEFAULT_SERVICE_NAME
: serviceName)
.propagationFactory(factory).currentTraceContext(currentTraceContext)
.spanReporter(compositeReporter())
.spanReporter(
new CompositeReporter(this.spanAdjusters, this.spanReporters))
.traceId128Bit(sleuthProperties.isTraceId128())
.supportsJoin(sleuthProperties.isSupportsJoin());
for (FinishedSpanHandler finishedSpanHandlerFactory : this.finishedSpanHandlers) {
@@ -106,16 +110,64 @@ public class TraceAutoConfiguration {
return builder.build();
}
private Reporter<zipkin2.Span> compositeReporter() {
return (span) -> {
private static class CompositeReporter implements Reporter<zipkin2.Span> {
private static final Log log = LogFactory.getLog(CompositeReporter.class);
private final List<SpanAdjuster> spanAdjusters;
private final Reporter<zipkin2.Span> spanReporter;
private CompositeReporter(List<SpanAdjuster> spanAdjusters,
List<Reporter<Span>> spanReporters) {
this.spanAdjusters = spanAdjusters;
this.spanReporter = spanReporters.size() == 1 ? spanReporters.get(0)
: new ListReporter(spanReporters);
}
private static class ListReporter implements Reporter<zipkin2.Span> {
private final List<Reporter<Span>> spanReporters;
private ListReporter(List<Reporter<Span>> spanReporters) {
this.spanReporters = spanReporters;
}
@Override
public void report(Span span) {
for (Reporter<zipkin2.Span> spanReporter : this.spanReporters) {
try {
spanReporter.report(span);
}
catch (Exception ex) {
log.warn("Exception occurred while trying to report the span "
+ span, ex);
}
}
}
@Override
public String toString() {
return "ListReporter{" + "spanReporters=" + this.spanReporters + '}';
}
}
@Override
public void report(Span span) {
Span spanToAdjust = span;
for (SpanAdjuster spanAdjuster : this.spanAdjusters) {
spanToAdjust = spanAdjuster.adjust(spanToAdjust);
}
for (Reporter<zipkin2.Span> spanReporter : this.spanReporters) {
spanReporter.report(spanToAdjust);
}
};
this.spanReporter.report(spanToAdjust);
}
@Override
public String toString() {
return "CompositeReporter{" + "spanAdjusters=" + this.spanAdjusters
+ ", spanReporters=" + this.spanReporter + '}';
}
}
@Bean(name = TRACER_BEAN_NAME)