diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java index b26c2a2c36..bb1c806a3e 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java @@ -7,7 +7,7 @@ package io.opentelemetry.instrumentation.spring.autoconfigure; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.trace.TracerProvider; -import io.opentelemetry.instrumentation.spring.autoconfigure.internal.MapConverter; +import io.opentelemetry.instrumentation.spring.autoconfigure.internal.OtelMapConverter; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties; @@ -64,9 +64,9 @@ public class OpenTelemetryAutoConfiguration { @Bean @ConfigurationPropertiesBinding - public MapConverter mapConverter() { + public OtelMapConverter otelMapConverter() { // needed for otlp exporter headers and OtelResourceProperties - return new MapConverter(); + return new OtelMapConverter(); } @Bean @@ -133,6 +133,17 @@ public class OpenTelemetryAutoConfiguration { @ConditionalOnProperty(name = "otel.sdk.disabled", havingValue = "true") static class DisabledOpenTelemetrySdkConfig { + @Bean + @ConfigurationPropertiesBinding + // Duplicated in OpenTelemetrySdkConfig and DisabledOpenTelemetrySdkConfig to not expose the + // converter in the public API + public OtelMapConverter otelMapConverter() { + // needed for otlp exporter headers and OtelResourceProperties + // we need this converter, even if the SDK is disabled, + // because the properties are parsed before the SDK is disabled + return new OtelMapConverter(); + } + @Bean public OpenTelemetry openTelemetry() { return OpenTelemetry.noop(); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/MapConverter.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/OtelMapConverter.java similarity index 93% rename from instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/MapConverter.java rename to instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/OtelMapConverter.java index 86e043bf16..e32cfb75f5 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/MapConverter.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/OtelMapConverter.java @@ -20,7 +20,7 @@ import org.springframework.core.convert.converter.Converter; *

This class is internal and is hence not for public use. Its APIs are unstable and can change * at any time. */ -public class MapConverter implements Converter> { +public class OtelMapConverter implements Converter> { public static final String KEY = "key"; diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java index 52f2eeafc8..d9f62fa2d8 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java @@ -156,7 +156,9 @@ class OpenTelemetryAutoConfigurationTest { void shouldInitializeNoopOpenTelemetryWhenSdkIsDisabled() { this.contextRunner .withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class)) - .withPropertyValues("otel.sdk.disabled=true") + .withPropertyValues( + "otel.sdk.disabled=true", + "otel.resource.attributes=service.name=workflow-backend-dev,service.version=3c8f9ce9") .run( context -> assertThat(context).getBean("openTelemetry").isEqualTo(OpenTelemetry.noop()));