Polish following the review
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user