From 3fc07644eefc76213fb4d37c757fa8b0254e8b16 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 6 Mar 2025 13:34:08 +0100 Subject: [PATCH] Make auto-configured BatchSpanProcessor back off when the user defines their own Closes gh-44601 --- .../tracing/OpenTelemetryTracingAutoConfiguration.java | 3 ++- .../OpenTelemetryTracingAutoConfigurationTests.java | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfiguration.java index 3f88a7009ff..5b7bb9e1df0 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -115,6 +115,7 @@ public class OpenTelemetryTracingAutoConfiguration { } @Bean + @ConditionalOnMissingBean BatchSpanProcessor otelSpanProcessor(SpanExporters spanExporters, ObjectProvider spanExportingPredicates, ObjectProvider spanReporters, ObjectProvider spanFilters, ObjectProvider meterProvider) { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfigurationTests.java index c38e2fc1131..51a8e9d28b0 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryTracingAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,6 +51,7 @@ import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SpanLimits; import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; import io.opentelemetry.sdk.trace.export.SpanExporter; import io.opentelemetry.sdk.trace.samplers.Sampler; import org.assertj.core.api.InstanceOfAssertFactories; @@ -172,6 +173,8 @@ class OpenTelemetryTracingAutoConfigurationTests { assertThat(context).hasSingleBean(SpanProcessors.class); assertThat(context).hasBean("customSpanExporters"); assertThat(context).hasSingleBean(SpanExporters.class); + assertThat(context).hasBean("customBatchSpanProcessor"); + assertThat(context).hasSingleBean(BatchSpanProcessor.class); }); } @@ -401,6 +404,11 @@ class OpenTelemetryTracingAutoConfigurationTests { @Configuration(proxyBeanMethods = false) private static final class CustomConfiguration { + @Bean + BatchSpanProcessor customBatchSpanProcessor() { + return mock(BatchSpanProcessor.class); + } + @Bean SpanProcessors customSpanProcessors() { return SpanProcessors.of(mock(SpanProcessor.class));