Skip to content

Commit bb8e301

Browse files
authored
fix MapConverter bean condition (#10346)
1 parent 0f534a8 commit bb8e301

File tree

5 files changed

+30
-38
lines changed

5 files changed

+30
-38
lines changed

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java

+21-6
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@
3535
import java.util.Collections;
3636
import java.util.List;
3737
import org.springframework.beans.factory.ObjectProvider;
38+
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
3839
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
3940
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
4041
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4142
import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
4243
import org.springframework.boot.context.properties.EnableConfigurationProperties;
4344
import org.springframework.context.annotation.Bean;
45+
import org.springframework.context.annotation.Conditional;
4446
import org.springframework.context.annotation.Configuration;
4547
import org.springframework.core.env.Environment;
4648
import org.springframework.expression.spel.standard.SpelExpressionParser;
@@ -65,17 +67,30 @@ public static class OpenTelemetrySdkConfig {
6567

6668
@Bean
6769
@ConfigurationPropertiesBinding
68-
@ConditionalOnBean({
69-
OtelResourceAutoConfiguration.class,
70-
OtlpLoggerExporterAutoConfiguration.class,
71-
OtlpSpanExporterAutoConfiguration.class,
72-
OtlpMetricExporterAutoConfiguration.class
73-
})
70+
@Conditional(MapConverterCondition.class)
7471
public MapConverter mapConverter() {
7572
// needed for otlp exporter headers and OtelResourceProperties
7673
return new MapConverter();
7774
}
7875

76+
static final class MapConverterCondition extends AnyNestedCondition {
77+
public MapConverterCondition() {
78+
super(ConfigurationPhase.REGISTER_BEAN);
79+
}
80+
81+
@ConditionalOnBean(OtelResourceAutoConfiguration.class)
82+
static class Resource {}
83+
84+
@ConditionalOnBean(OtlpLoggerExporterAutoConfiguration.class)
85+
static class Logger {}
86+
87+
@ConditionalOnBean(OtlpSpanExporterAutoConfiguration.class)
88+
static class Span {}
89+
90+
@ConditionalOnBean(OtlpMetricExporterAutoConfiguration.class)
91+
static class Metric {}
92+
}
93+
7994
@Bean(destroyMethod = "") // SDK components are shutdown from the OpenTelemetry instance
8095
@ConditionalOnMissingBean
8196
public SdkTracerProvider sdkTracerProvider(

instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/MapConverterTestAutoConfiguration.java

-25
This file was deleted.

instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/exporters/otlp/OtlpSpanExporterAutoConfigurationTest.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
1212
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder;
1313
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
14-
import io.opentelemetry.instrumentation.spring.autoconfigure.MapConverterTestAutoConfiguration;
1514
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
1615
import io.opentelemetry.sdk.trace.export.SpanExporter;
1716
import java.util.stream.Collectors;
@@ -30,9 +29,7 @@ class OtlpSpanExporterAutoConfigurationTest {
3029
new ApplicationContextRunner()
3130
.withConfiguration(
3231
AutoConfigurations.of(
33-
OpenTelemetryAutoConfiguration.class,
34-
OtlpSpanExporterAutoConfiguration.class,
35-
MapConverterTestAutoConfiguration.class));
32+
OpenTelemetryAutoConfiguration.class, OtlpSpanExporterAutoConfiguration.class));
3633

3734
@Test
3835
@DisplayName("when exporters are ENABLED should initialize OtlpHttpSpanExporter bean")

instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/resources/OtelResourcePropertiesTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import com.google.common.collect.ImmutableMap;
1212
import io.opentelemetry.api.common.AttributeKey;
13-
import io.opentelemetry.instrumentation.spring.autoconfigure.MapConverterTestAutoConfiguration;
13+
import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration;
1414
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
1515
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
1616
import org.junit.jupiter.api.DisplayName;
@@ -24,7 +24,7 @@ public class OtelResourcePropertiesTest {
2424
.withPropertyValues("otel.springboot.resource.enabled=true")
2525
.withConfiguration(
2626
AutoConfigurations.of(
27-
OtelResourceAutoConfiguration.class, MapConverterTestAutoConfiguration.class));
27+
OtelResourceAutoConfiguration.class, OpenTelemetryAutoConfiguration.class));
2828

2929
@Test
3030
@DisplayName("when attributes are SET should set OtelResourceProperties with given attributes")

smoke-tests-otel-starter/src/test/java/io/opentelemetry/smoketest/OtelSpringStarterSmokeTest.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,13 @@
3636
OtelSpringStarterSmokeTest.TestConfiguration.class
3737
},
3838
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
39-
properties = {"otel.exporter.otlp.enabled=false", "otel.metric.export.interval=100"
39+
properties = {
40+
"otel.exporter.otlp.enabled=false",
41+
"otel.metric.export.interval=100",
42+
"otel.exporter.otlp.headers=a=1,b=2",
4043
// We set the export interval of the metrics to 100 ms. The default value is 1 minute.
44+
// the headers are simply set here to make sure that headers can be parsed, even with
45+
// otel.exporter.otlp.enabled=false
4146
})
4247
class OtelSpringStarterSmokeTest {
4348

0 commit comments

Comments
 (0)