Skip to content

Commit bd1df38

Browse files
committed
Back off if spring-boot-opentelemetry is missing
Closes gh-46303
1 parent aff6ed3 commit bd1df38

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

module/spring-boot-metrics/src/main/java/org/springframework/boot/metrics/autoconfigure/export/otlp/OtlpMetricsExportAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
before = { CompositeMeterRegistryAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class },
5252
after = MetricsAutoConfiguration.class)
5353
@ConditionalOnBean(Clock.class)
54-
@ConditionalOnClass(OtlpMeterRegistry.class)
54+
@ConditionalOnClass({ OtlpMeterRegistry.class, OpenTelemetryProperties.class })
5555
@ConditionalOnEnabledMetricsExport("otlp")
5656
@EnableConfigurationProperties({ OtlpMetricsProperties.class, OpenTelemetryProperties.class })
5757
public final class OtlpMetricsExportAutoConfiguration {

module/spring-boot-metrics/src/test/java/org/springframework/boot/metrics/autoconfigure/export/otlp/OtlpMetricsExportAutoConfigurationTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import org.springframework.boot.autoconfigure.AutoConfigurations;
3030
import org.springframework.boot.metrics.autoconfigure.export.otlp.OtlpMetricsExportAutoConfiguration.PropertiesOtlpMetricsConnectionDetails;
31+
import org.springframework.boot.test.context.FilteredClassLoader;
3132
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3233
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3334
import org.springframework.boot.testsupport.assertj.ScheduledExecutorServiceAssert;
@@ -41,6 +42,7 @@
4142
* Tests for {@link OtlpMetricsExportAutoConfiguration}.
4243
*
4344
* @author Eddú Meléndez
45+
* @author Moritz Halbritter
4446
*/
4547
class OtlpMetricsExportAutoConfigurationTests {
4648

@@ -148,6 +150,13 @@ void allowsCustomMetricsSenderToBeUsedWithVirtualThreads() {
148150
.run(this::assertHasCustomMetricsSender);
149151
}
150152

153+
@Test
154+
void shouldBackOffIfSpringBootOpenTelemetryIsMissing() {
155+
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
156+
.withClassLoader(new FilteredClassLoader("org.springframework.boot.opentelemetry"))
157+
.run((context) -> assertThat(context).doesNotHaveBean(OtlpMetricsExportAutoConfiguration.class));
158+
}
159+
151160
private void assertHasCustomMetricsSender(AssertableApplicationContext context) {
152161
assertThat(context).hasSingleBean(OtlpMeterRegistry.class);
153162
OtlpMeterRegistry registry = context.getBean(OtlpMeterRegistry.class);

0 commit comments

Comments
 (0)