Back off tracing auto-configurations if tracing is disabled
See gh-31308
This commit is contained in:
parent
b019ff6102
commit
8fab9f290c
|
|
@ -60,6 +60,7 @@ import org.springframework.core.env.Environment;
|
|||
@AutoConfiguration(before = MicrometerTracingAutoConfiguration.class)
|
||||
@ConditionalOnClass(brave.Tracer.class)
|
||||
@EnableConfigurationProperties(TracingProperties.class)
|
||||
@ConditionalOnEnabledTracing
|
||||
public class BraveAutoConfiguration {
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import org.springframework.core.annotation.Order;
|
|||
*/
|
||||
@AutoConfiguration
|
||||
@ConditionalOnClass(Tracer.class)
|
||||
@ConditionalOnEnabledTracing
|
||||
public class MicrometerTracingAutoConfiguration {
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import org.springframework.context.annotation.Import;
|
|||
*/
|
||||
@AutoConfiguration(before = MicrometerTracingAutoConfiguration.class)
|
||||
@Import({ SdkConfiguration.class, TracerConfiguration.class, MicrometerConfiguration.class })
|
||||
@ConditionalOnEnabledTracing
|
||||
public class OpenTelemetryAutoConfiguration {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import io.opentelemetry.sdk.trace.export.SpanExporter;
|
|||
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.ConditionalOnEnabledTracing;
|
||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties;
|
||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Tracing;
|
||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontSenderConfiguration;
|
||||
|
|
@ -54,6 +55,7 @@ import org.springframework.core.env.Environment;
|
|||
@EnableConfigurationProperties(WavefrontProperties.class)
|
||||
@ConditionalOnBean(WavefrontSender.class)
|
||||
@Import(WavefrontSenderConfiguration.class)
|
||||
@ConditionalOnEnabledTracing
|
||||
public class WavefrontTracingAutoConfiguration {
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import zipkin2.codec.BytesEncoder;
|
|||
import zipkin2.codec.SpanBytesEncoder;
|
||||
import zipkin2.reporter.Sender;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.ConditionalOnEnabledTracing;
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.ReporterConfiguration;
|
||||
|
|
@ -46,6 +47,7 @@ import org.springframework.context.annotation.Import;
|
|||
@ConditionalOnClass(Sender.class)
|
||||
@Import({ SenderConfiguration.class, ReporterConfiguration.class, BraveConfiguration.class,
|
||||
OpenTelemetryConfiguration.class })
|
||||
@ConditionalOnEnabledTracing
|
||||
public class ZipkinAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
|
|
|
|||
|
|
@ -138,6 +138,20 @@ class BraveAutoConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotSupplyBraveBeansIfTracingIsDisabled() {
|
||||
this.contextRunner.withPropertyValues("management.tracing.enabled=false").run((context) -> {
|
||||
assertThat(context).doesNotHaveBean(Tracing.class);
|
||||
assertThat(context).doesNotHaveBean(Tracer.class);
|
||||
assertThat(context).doesNotHaveBean(CurrentTraceContext.class);
|
||||
assertThat(context).doesNotHaveBean(Factory.class);
|
||||
assertThat(context).doesNotHaveBean(Sampler.class);
|
||||
assertThat(context).doesNotHaveBean(HttpTracing.class);
|
||||
assertThat(context).doesNotHaveBean(HttpServerHandler.class);
|
||||
assertThat(context).doesNotHaveBean(HttpClientHandler.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
private static class CustomBraveConfiguration {
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,18 @@ class MicrometerTracingAutoConfigurationTests {
|
|||
.run((context) -> assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotSupplyBeansIfTracingIsDisabled() {
|
||||
this.contextRunner
|
||||
.withUserConfiguration(TracerConfiguration.class, HttpClientHandlerConfiguration.class,
|
||||
HttpServerHandlerConfiguration.class)
|
||||
.withPropertyValues("management.tracing.enabled=false").run((context) -> {
|
||||
assertThat(context).doesNotHaveBean(DefaultTracingObservationHandler.class);
|
||||
assertThat(context).doesNotHaveBean(HttpServerTracingObservationHandler.class);
|
||||
assertThat(context).doesNotHaveBean(HttpClientTracingObservationHandler.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
private static class TracerConfiguration {
|
||||
|
||||
|
|
|
|||
|
|
@ -79,6 +79,18 @@ class WavefrontTracingAutoConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotSupplyBeansIfTracingIsDisabled() {
|
||||
this.contextRunner.withPropertyValues("management.tracing.enabled=false")
|
||||
.withUserConfiguration(WavefrontSenderConfiguration.class).run((context) -> {
|
||||
assertThat(context).doesNotHaveBean(ApplicationTags.class);
|
||||
assertThat(context).doesNotHaveBean(WavefrontSpanHandler.class);
|
||||
assertThat(context).doesNotHaveBean(SpanMetrics.class);
|
||||
assertThat(context).doesNotHaveBean(WavefrontBraveSpanHandler.class);
|
||||
assertThat(context).doesNotHaveBean(WavefrontOtelSpanHandler.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSupplyMeterRegistrySpanMetricsIfMeterRegistryIsAvailable() {
|
||||
this.contextRunner.withUserConfiguration(WavefrontSenderConfiguration.class, MeterRegistryConfiguration.class)
|
||||
|
|
|
|||
|
|
@ -58,6 +58,12 @@ class ZipkinAutoConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotSupplyBeansIfTracingIsDisabled() {
|
||||
this.contextRunner.withPropertyValues("management.tracing.enabled=false")
|
||||
.run((context) -> assertThat(context).doesNotHaveBean(BytesEncoder.class));
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
private static class CustomConfiguration {
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue