Browse Source

Make auto-configured Brave Tracer more compliant with OTel tracer

By default we will not support joined spans and the trace ID will
be 128-bit.

See gh-32615
pull/32633/head
Marcin Grzejszczak 4 years ago committed by Andy Wilkinson
parent
commit
dfd148fb76
  1. 5
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfiguration.java
  2. 22
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfigurationTests.java

5
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfiguration.java

@ -92,8 +92,9 @@ public class BraveAutoConfiguration {
List<TracingCustomizer> tracingCustomizers, CurrentTraceContext currentTraceContext, List<TracingCustomizer> tracingCustomizers, CurrentTraceContext currentTraceContext,
Factory propagationFactory, Sampler sampler) { Factory propagationFactory, Sampler sampler) {
String applicationName = environment.getProperty("spring.application.name", DEFAULT_APPLICATION_NAME); String applicationName = environment.getProperty("spring.application.name", DEFAULT_APPLICATION_NAME);
Builder builder = Tracing.newBuilder().currentTraceContext(currentTraceContext) Builder builder = Tracing.newBuilder().currentTraceContext(currentTraceContext).traceId128Bit(true)
.propagationFactory(propagationFactory).sampler(sampler).localServiceName(applicationName); .supportsJoin(false).propagationFactory(propagationFactory).sampler(sampler)
.localServiceName(applicationName);
for (SpanHandler spanHandler : spanHandlers) { for (SpanHandler spanHandler : spanHandlers) {
builder.addSpanHandler(spanHandler); builder.addSpanHandler(spanHandler);
} }

22
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfigurationTests.java

@ -16,6 +16,7 @@
package org.springframework.boot.actuate.autoconfigure.tracing; package org.springframework.boot.actuate.autoconfigure.tracing;
import brave.Span;
import brave.Tracer; import brave.Tracer;
import brave.Tracing; import brave.Tracing;
import brave.baggage.BaggagePropagation; import brave.baggage.BaggagePropagation;
@ -211,6 +212,27 @@ class BraveAutoConfigurationTests {
.run((context) -> assertThat(context).hasBean("mdcCorrelationScopeDecoratorBuilder")); .run((context) -> assertThat(context).hasBean("mdcCorrelationScopeDecoratorBuilder"));
} }
@Test
void shouldHave128BitTraceId() {
this.contextRunner.run((context) -> {
Tracing tracing = context.getBean(Tracing.class);
Span span = tracing.tracer().nextSpan();
assertThat(span.context().traceIdString()).hasSize(32);
});
}
@Test
void shouldNotSupportJoinedSpans() {
this.contextRunner.run((context) -> {
Tracing tracing = context.getBean(Tracing.class);
Span parentSpan = tracing.tracer().nextSpan();
Span childSpan = tracing.tracer().joinSpan(parentSpan.context());
assertThat(parentSpan.context().traceIdString()).isEqualTo(childSpan.context().traceIdString());
assertThat(parentSpan.context().spanIdString()).isEqualTo(childSpan.context().parentIdString());
assertThat(parentSpan.context().spanIdString()).isNotEqualTo(childSpan.context().spanIdString());
});
}
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
private static class CustomConfiguration { private static class CustomConfiguration {

Loading…
Cancel
Save