From a2d8066748861e3a1b12944c3ab577bdad48afeb Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Fri, 30 Jan 2026 13:10:56 +0900 Subject: [PATCH 1/4] Add property to allow autoconfiguration of SDK telemetry version --- .../InternalTelemetryConfiguration.java | 34 +++++++ .../otlp/internal/OtlpConfigUtil.java | 9 +- .../OtlpLogRecordExporterProvider.java | 6 +- .../internal/OtlpMetricExporterProvider.java | 6 +- .../internal/OtlpSpanExporterProvider.java | 6 +- .../otlp/internal/OtlpConfigUtilTest.java | 1 + sdk-extensions/autoconfigure/build.gradle.kts | 1 + .../InternalTelemetryConfiguration.java | 34 +++++++ .../LoggerProviderConfiguration.java | 6 ++ .../TracerProviderConfiguration.java | 6 ++ .../sdk/autoconfigure/FullConfigTest.java | 96 ++++++++++++++++++- .../provider/MetricCustomizer.java | 6 +- 12 files changed, 199 insertions(+), 12 deletions(-) create mode 100644 exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java create mode 100644 sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java new file mode 100644 index 00000000000..d31f8630c64 --- /dev/null +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.exporter.otlp.internal; + +import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; +import java.util.Locale; +import javax.annotation.Nullable; + +/** Reads the desired SDK internal telemetry version from {@link ConfigProperties}. */ +final class InternalTelemetryConfiguration { + + @Nullable + static InternalTelemetryVersion getVersion(ConfigProperties config) { + String version = config.getString("otel.experimental.sdk.telemetry.version"); + if (version == null) { + return null; + } + switch (version.toLowerCase(Locale.ROOT)) { + case "legacy": + return InternalTelemetryVersion.LEGACY; + case "latest": + return InternalTelemetryVersion.LATEST; + default: + throw new ConfigurationException("Invalid sdk telemetry version: " + version); + } + } + + private InternalTelemetryConfiguration() {} +} diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java index 427d79e7ac4..25d9a82ef2c 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java @@ -9,6 +9,7 @@ import io.opentelemetry.exporter.internal.ExporterBuilderUtil; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.common.export.MemoryMode; import io.opentelemetry.sdk.common.export.RetryPolicy; import java.io.File; @@ -62,7 +63,8 @@ public static void configureOtlpExporterBuilder( Consumer setTrustedCertificates, BiConsumer setClientTls, Consumer setRetryPolicy, - Consumer setMemoryMode) { + Consumer setMemoryMode, + Consumer setInternalTelemetryVersion) { setComponentLoader.accept(config.getComponentLoader()); String protocol = getOtlpProtocol(dataType, config); @@ -107,6 +109,11 @@ public static void configureOtlpExporterBuilder( setTimeout.accept(timeout); } + InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); + if (telemetryVersion != null) { + setInternalTelemetryVersion.accept(telemetryVersion); + } + String certificatePath = config.getString( determinePropertyByType(config, "otel.exporter.otlp", dataType, "certificate")); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpLogRecordExporterProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpLogRecordExporterProvider.java index 1262bc7250f..6a478db1984 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpLogRecordExporterProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpLogRecordExporterProvider.java @@ -53,7 +53,8 @@ public LogRecordExporter createExporter(ConfigProperties config) { builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, - builder::setMemoryMode); + builder::setMemoryMode, + builder::setInternalTelemetryVersion); builder.setMeterProvider(meterProviderRef::get); return builder.build(); @@ -71,7 +72,8 @@ public LogRecordExporter createExporter(ConfigProperties config) { builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, - builder::setMemoryMode); + builder::setMemoryMode, + builder::setInternalTelemetryVersion); builder.setMeterProvider(meterProviderRef::get); return builder.build(); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpMetricExporterProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpMetricExporterProvider.java index eb286b09b94..35039182f23 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpMetricExporterProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpMetricExporterProvider.java @@ -54,7 +54,8 @@ public MetricExporter createExporter(ConfigProperties config) { builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, - builder::setMemoryMode); + builder::setMemoryMode, + builder::setInternalTelemetryVersion); ExporterBuilderUtil.configureOtlpAggregationTemporality( config, builder::setAggregationTemporalitySelector); ExporterBuilderUtil.configureOtlpHistogramDefaultAggregation( @@ -76,7 +77,8 @@ public MetricExporter createExporter(ConfigProperties config) { builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, - builder::setMemoryMode); + builder::setMemoryMode, + builder::setInternalTelemetryVersion); ExporterBuilderUtil.configureOtlpAggregationTemporality( config, builder::setAggregationTemporalitySelector); ExporterBuilderUtil.configureOtlpHistogramDefaultAggregation( diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpSpanExporterProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpSpanExporterProvider.java index 1561c057b29..f4467a2f601 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpSpanExporterProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpSpanExporterProvider.java @@ -52,7 +52,8 @@ public SpanExporter createExporter(ConfigProperties config) { builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, - builder::setMemoryMode); + builder::setMemoryMode, + builder::setInternalTelemetryVersion); builder.setMeterProvider(meterProviderRef::get); return builder.build(); @@ -70,7 +71,8 @@ public SpanExporter createExporter(ConfigProperties config) { builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, - builder::setMemoryMode); + builder::setMemoryMode, + builder::setInternalTelemetryVersion); builder.setMeterProvider(meterProviderRef::get); return builder.build(); diff --git a/exporters/otlp/all/src/test/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtilTest.java b/exporters/otlp/all/src/test/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtilTest.java index fb1061ae3fa..420c2f57e1e 100644 --- a/exporters/otlp/all/src/test/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtilTest.java +++ b/exporters/otlp/all/src/test/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtilTest.java @@ -379,6 +379,7 @@ private static String configureEndpoint(String dataType, Map pro value -> {}, (value1, value2) -> {}, value -> {}, + value -> {}, value -> {}); return endpoint.get(); diff --git a/sdk-extensions/autoconfigure/build.gradle.kts b/sdk-extensions/autoconfigure/build.gradle.kts index 3d54ea736c4..f78a0f12134 100644 --- a/sdk-extensions/autoconfigure/build.gradle.kts +++ b/sdk-extensions/autoconfigure/build.gradle.kts @@ -77,6 +77,7 @@ testing { environment("OTEL_EXPORTER_OTLP_TIMEOUT", "5000") environment("OTEL_TEST_CONFIGURED", "true") environment("OTEL_TEST_WRAPPED", "1") + environment("OTEL_EXPERIMENTAL_SDK_TELEMETRY_VERSION", "latest") } } } diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java new file mode 100644 index 00000000000..8fcbfbfccc2 --- /dev/null +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure; + +import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; +import java.util.Locale; +import javax.annotation.Nullable; + +/** Reads the desired SDK internal telemetry version from {@link ConfigProperties}. */ +final class InternalTelemetryConfiguration { + + @Nullable + static InternalTelemetryVersion getVersion(ConfigProperties config) { + String version = config.getString("otel.experimental.sdk.telemetry.version"); + if (version == null) { + return null; + } + switch (version.toLowerCase(Locale.ROOT)) { + case "legacy": + return InternalTelemetryVersion.LEGACY; + case "latest": + return InternalTelemetryVersion.LATEST; + default: + throw new ConfigurationException("Invalid sdk telemetry version: " + version); + } + } + + private InternalTelemetryConfiguration() {} +} diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java index 0c080e1333d..5fb9d02204b 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.logs.LogLimits; import io.opentelemetry.sdk.logs.LogLimitsBuilder; import io.opentelemetry.sdk.logs.LogRecordProcessor; @@ -119,6 +120,11 @@ static BatchLogRecordProcessor configureBatchLogRecordProcessor( builder.setExporterTimeout(timeout); } + InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); + if (telemetryVersion != null) { + builder.setInternalTelemetryVersion(telemetryVersion); + } + return builder.build(); } diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java index 7ecc048ff3d..c379f905bf5 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java @@ -11,6 +11,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSamplerProvider; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder; import io.opentelemetry.sdk.trace.SpanLimits; import io.opentelemetry.sdk.trace.SpanLimitsBuilder; @@ -125,6 +126,11 @@ static BatchSpanProcessor configureBatchSpanProcessor( builder.setExporterTimeout(timeout); } + InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); + if (telemetryVersion != null) { + builder.setInternalTelemetryVersion(telemetryVersion); + } + return builder.build(); } diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java index 5469bd9684d..0a2d0b906c7 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java @@ -220,6 +220,8 @@ void configures() throws Exception { assertHasKeyValue(span.getAttributesList(), "cat", "meow"); assertHasKeyValue(span.getAttributesList(), "extra-key", "extra-value"); + // Flush again to get metric exporter metrics. + openTelemetrySdk.getSdkMeterProvider().forceFlush().join(10, TimeUnit.SECONDS); // await on assertions since metrics may come in different order for BatchSpanProcessor, // exporter, or the ones we created in the test. await() @@ -252,19 +254,105 @@ void configures() throws Exception { }) // This verifies that AutoConfigureListener was invoked and the OTLP // span / log exporters received the autoconfigured OpenTelemetrySdk - // instance + // instance as well as setting telemetry version. .anySatisfy( scopeMetrics -> { assertThat(scopeMetrics.getScope().getName()) - .isEqualTo("io.opentelemetry.exporters.otlp-grpc"); + .isEqualTo( + "io.opentelemetry.exporters.otlp_grpc_metric_exporter"); assertThat(scopeMetrics.getMetricsList()) .satisfiesExactlyInAnyOrder( metric -> assertThat(metric.getName()) - .isEqualTo("otlp.exporter.seen"), + .isEqualTo( + "otel.sdk.exporter.metric_data_point.inflight"), + metric -> + assertThat(metric.getName()) + .isEqualTo( + "otel.sdk.exporter.operation.duration"), + metric -> + assertThat(metric.getName()) + .isEqualTo( + "otel.sdk.exporter.metric_data_point.exported")); + }) + .anySatisfy( + scopeMetrics -> { + assertThat(scopeMetrics.getScope().getName()) + .isEqualTo( + "io.opentelemetry.exporters.otlp_grpc_log_exporter"); + assertThat(scopeMetrics.getMetricsList()) + .satisfiesExactlyInAnyOrder( + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.exporter.log.inflight"), + metric -> + assertThat(metric.getName()) + .isEqualTo( + "otel.sdk.exporter.operation.duration"), + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.exporter.log.exported")); + }) + .anySatisfy( + scopeMetrics -> { + assertThat(scopeMetrics.getScope().getName()) + .isEqualTo( + "io.opentelemetry.exporters.otlp_grpc_span_exporter"); + assertThat(scopeMetrics.getMetricsList()) + .satisfiesExactlyInAnyOrder( + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.exporter.span.inflight"), + metric -> + assertThat(metric.getName()) + .isEqualTo( + "otel.sdk.exporter.operation.duration"), + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.exporter.span.exported")); + }) + .anySatisfy( + scopeMetrics -> { + assertThat(scopeMetrics.getScope().getName()) + .isEqualTo("io.opentelemetry.sdk.logs"); + assertThat(scopeMetrics.getMetricsList()) + .satisfiesExactlyInAnyOrder( + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.log.created"), + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.processor.log.processed"), + metric -> + assertThat(metric.getName()) + .isEqualTo( + "otel.sdk.processor.log.queue.capacity"), + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.processor.log.queue.size")); + }) + .anySatisfy( + scopeMetrics -> { + assertThat(scopeMetrics.getScope().getName()) + .isEqualTo("io.opentelemetry.sdk.trace"); + assertThat(scopeMetrics.getMetricsList()) + .satisfiesExactlyInAnyOrder( + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.span.live"), + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.span.started"), + metric -> + assertThat(metric.getName()) + .isEqualTo("otel.sdk.processor.span.processed"), + metric -> + assertThat(metric.getName()) + .isEqualTo( + "otel.sdk.processor.span.queue.capacity"), metric -> assertThat(metric.getName()) - .isEqualTo("otlp.exporter.exported")); + .isEqualTo("otel.sdk.processor.span.queue.size")); }); }); }); diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/provider/MetricCustomizer.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/provider/MetricCustomizer.java index c65434cf908..3171f8d91e5 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/provider/MetricCustomizer.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/provider/MetricCustomizer.java @@ -55,7 +55,11 @@ public CompletableResultCode export(Collection metrics) { || metricData .getInstrumentationScopeInfo() .getName() - .startsWith("io.opentelemetry.exporters")) + .startsWith("io.opentelemetry.exporters") + || metricData + .getInstrumentationScopeInfo() + .getName() + .startsWith("io.opentelemetry.sdk")) .collect(Collectors.toList()); return delegate.export(filtered); } From 1123aa2e365ef10509691e30f0b501cc88de689f Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Thu, 5 Feb 2026 10:02:11 +0900 Subject: [PATCH 2/4] Cleanup --- .../InternalTelemetryConfiguration.java | 7 +- .../InternalTelemetryConfiguration.java | 8 +- .../sdk/autoconfigure/FullConfigTest.java | 107 ++++++------------ 3 files changed, 49 insertions(+), 73 deletions(-) diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java index d31f8630c64..f94870850eb 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java @@ -11,7 +11,12 @@ import java.util.Locale; import javax.annotation.Nullable; -/** Reads the desired SDK internal telemetry version from {@link ConfigProperties}. */ +/** + * Reads the desired SDK internal telemetry version from {@link ConfigProperties}. + * + *

This is the same as {@code io.opentelemetry.sdk.autoconfigure.InternalTelemetryConfiguration}. + * Any changes should be reflected there as well. + */ final class InternalTelemetryConfiguration { @Nullable diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java index 8fcbfbfccc2..384527d0752 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java @@ -11,7 +11,13 @@ import java.util.Locale; import javax.annotation.Nullable; -/** Reads the desired SDK internal telemetry version from {@link ConfigProperties}. */ +/** + * Reads the desired SDK internal telemetry version from {@link ConfigProperties}. + * + *

This is the same as {@code + * io.opentelemetry.exporter.otlp.internal.InternalTelemetryConfiguration}. Any changes should be + * reflected there as well. + */ final class InternalTelemetryConfiguration { @Nullable diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java index 0a2d0b906c7..b1802b4c89c 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/FullConfigTest.java @@ -35,6 +35,7 @@ import io.opentelemetry.proto.common.v1.AnyValue; import io.opentelemetry.proto.common.v1.KeyValue; import io.opentelemetry.proto.metrics.v1.Metric; +import io.opentelemetry.proto.metrics.v1.ScopeMetrics; import io.opentelemetry.sdk.OpenTelemetrySdk; import java.util.ArrayList; import java.util.Collection; @@ -42,6 +43,7 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -260,99 +262,56 @@ void configures() throws Exception { assertThat(scopeMetrics.getScope().getName()) .isEqualTo( "io.opentelemetry.exporters.otlp_grpc_metric_exporter"); - assertThat(scopeMetrics.getMetricsList()) - .satisfiesExactlyInAnyOrder( - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.exporter.metric_data_point.inflight"), - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.exporter.operation.duration"), - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.exporter.metric_data_point.exported")); + assertMetricNames( + scopeMetrics, + "otel.sdk.exporter.metric_data_point.inflight", + "otel.sdk.exporter.operation.duration", + "otel.sdk.exporter.metric_data_point.exported"); }) .anySatisfy( scopeMetrics -> { assertThat(scopeMetrics.getScope().getName()) .isEqualTo( "io.opentelemetry.exporters.otlp_grpc_log_exporter"); - assertThat(scopeMetrics.getMetricsList()) - .satisfiesExactlyInAnyOrder( - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.exporter.log.inflight"), - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.exporter.operation.duration"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.exporter.log.exported")); + assertMetricNames( + scopeMetrics, + "otel.sdk.exporter.log.inflight", + "otel.sdk.exporter.operation.duration", + "otel.sdk.exporter.log.exported"); }) .anySatisfy( scopeMetrics -> { assertThat(scopeMetrics.getScope().getName()) .isEqualTo( "io.opentelemetry.exporters.otlp_grpc_span_exporter"); - assertThat(scopeMetrics.getMetricsList()) - .satisfiesExactlyInAnyOrder( - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.exporter.span.inflight"), - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.exporter.operation.duration"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.exporter.span.exported")); + assertMetricNames( + scopeMetrics, + "otel.sdk.exporter.span.inflight", + "otel.sdk.exporter.operation.duration", + "otel.sdk.exporter.span.exported"); }) .anySatisfy( scopeMetrics -> { assertThat(scopeMetrics.getScope().getName()) .isEqualTo("io.opentelemetry.sdk.logs"); - assertThat(scopeMetrics.getMetricsList()) - .satisfiesExactlyInAnyOrder( - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.log.created"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.processor.log.processed"), - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.processor.log.queue.capacity"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.processor.log.queue.size")); + assertMetricNames( + scopeMetrics, + "otel.sdk.log.created", + "otel.sdk.processor.log.processed", + "otel.sdk.processor.log.queue.capacity", + "otel.sdk.processor.log.queue.size"); }) .anySatisfy( scopeMetrics -> { assertThat(scopeMetrics.getScope().getName()) .isEqualTo("io.opentelemetry.sdk.trace"); - assertThat(scopeMetrics.getMetricsList()) - .satisfiesExactlyInAnyOrder( - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.span.live"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.span.started"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.processor.span.processed"), - metric -> - assertThat(metric.getName()) - .isEqualTo( - "otel.sdk.processor.span.queue.capacity"), - metric -> - assertThat(metric.getName()) - .isEqualTo("otel.sdk.processor.span.queue.size")); + assertMetricNames( + scopeMetrics, + "otel.sdk.span.live", + "otel.sdk.span.started", + "otel.sdk.processor.span.processed", + "otel.sdk.processor.span.queue.capacity", + "otel.sdk.processor.span.queue.size"); }); }); }); @@ -406,6 +365,12 @@ private static void assertHasKeyValue(List keyValues, String key, Stri .build()); } + private static void assertMetricNames(ScopeMetrics scopeMetrics, String... names) { + assertThat( + scopeMetrics.getMetricsList().stream().map(Metric::getName).collect(Collectors.toSet())) + .containsExactlyInAnyOrder(names); + } + private static List getFirstDataPointLabels(Metric metric) { switch (metric.getDataCase()) { case GAUGE: From 73795938d2f078a7d8b8b428cf57dc978ad1a52a Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Fri, 6 Feb 2026 11:36:29 +0900 Subject: [PATCH 3/4] carrots --- .../InternalTelemetryConfiguration.java | 5 ++- .../InternalTelemetryConfiguration.java | 5 ++- .../LoggerProviderConfiguration.java | 33 ++++++++++++------- .../TracerProviderConfiguration.java | 30 +++++++++++------ .../TracerProviderConfigurationTest.java | 4 ++- .../ConfigurableSpanExporterTest.java | 5 +++ .../LoggerProviderConfigurationTest.java | 3 ++ 7 files changed, 56 insertions(+), 29 deletions(-) diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java index f94870850eb..89af16ccbb4 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/InternalTelemetryConfiguration.java @@ -9,7 +9,6 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.common.InternalTelemetryVersion; import java.util.Locale; -import javax.annotation.Nullable; /** * Reads the desired SDK internal telemetry version from {@link ConfigProperties}. @@ -19,12 +18,12 @@ */ final class InternalTelemetryConfiguration { - @Nullable static InternalTelemetryVersion getVersion(ConfigProperties config) { String version = config.getString("otel.experimental.sdk.telemetry.version"); if (version == null) { - return null; + return InternalTelemetryVersion.LEGACY; } + switch (version.toLowerCase(Locale.ROOT)) { case "legacy": return InternalTelemetryVersion.LEGACY; diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java index 384527d0752..7f16f705c0b 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/InternalTelemetryConfiguration.java @@ -9,7 +9,6 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.common.InternalTelemetryVersion; import java.util.Locale; -import javax.annotation.Nullable; /** * Reads the desired SDK internal telemetry version from {@link ConfigProperties}. @@ -20,12 +19,12 @@ */ final class InternalTelemetryConfiguration { - @Nullable static InternalTelemetryVersion getVersion(ConfigProperties config) { String version = config.getString("otel.experimental.sdk.telemetry.version"); if (version == null) { - return null; + return InternalTelemetryVersion.LEGACY; } + switch (version.toLowerCase(Locale.ROOT)) { case "legacy": return InternalTelemetryVersion.LEGACY; diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java index 5fb9d02204b..d2ee66685a5 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfiguration.java @@ -19,6 +19,7 @@ import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessorBuilder; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; +import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessorBuilder; import java.io.Closeable; import java.time.Duration; import java.util.ArrayList; @@ -45,13 +46,17 @@ static void configureLoggerProvider( List closeables) { loggerProviderBuilder.setLogLimits(() -> configureLogLimits(config)); - loggerProviderBuilder.setMeterProvider(() -> meterProvider); + InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); + if (telemetryVersion != InternalTelemetryVersion.LEGACY) { + loggerProviderBuilder.setMeterProvider(() -> meterProvider); + } Map exportersByName = configureLogRecordExporters(config, spiHelper, logRecordExporterCustomizer, closeables); List processors = - configureLogRecordProcessors(config, exportersByName, meterProvider, closeables); + configureLogRecordProcessors( + config, exportersByName, telemetryVersion, meterProvider, closeables); for (LogRecordProcessor processor : processors) { LogRecordProcessor wrapped = logRecordProcessorCustomizer.apply(processor, config); if (wrapped != processor) { @@ -65,6 +70,7 @@ static void configureLoggerProvider( static List configureLogRecordProcessors( ConfigProperties config, Map exportersByName, + InternalTelemetryVersion telemetryVersion, MeterProvider meterProvider, List closeables) { Map exportersByNameCopy = new HashMap<>(exportersByName); @@ -73,10 +79,12 @@ static List configureLogRecordProcessors( for (String simpleProcessorExporterName : simpleProcessorExporterNames) { LogRecordExporter exporter = exportersByNameCopy.remove(simpleProcessorExporterName); if (exporter != null) { - LogRecordProcessor logRecordProcessor = - SimpleLogRecordProcessor.builder(exporter) - .setMeterProvider(() -> meterProvider) - .build(); + SimpleLogRecordProcessorBuilder logRecordProcessorBuilder = + SimpleLogRecordProcessor.builder(exporter); + if (telemetryVersion != InternalTelemetryVersion.LEGACY) { + logRecordProcessorBuilder.setMeterProvider(() -> meterProvider); + } + LogRecordProcessor logRecordProcessor = logRecordProcessorBuilder.build(); closeables.add(logRecordProcessor); logRecordProcessors.add(logRecordProcessor); } @@ -86,7 +94,8 @@ static List configureLogRecordProcessors( LogRecordExporter compositeLogRecordExporter = LogRecordExporter.composite(exportersByNameCopy.values()); LogRecordProcessor logRecordProcessor = - configureBatchLogRecordProcessor(config, compositeLogRecordExporter, meterProvider); + configureBatchLogRecordProcessor( + config, compositeLogRecordExporter, telemetryVersion, meterProvider); closeables.add(logRecordProcessor); logRecordProcessors.add(logRecordProcessor); } @@ -96,7 +105,10 @@ static List configureLogRecordProcessors( // VisibleForTesting static BatchLogRecordProcessor configureBatchLogRecordProcessor( - ConfigProperties config, LogRecordExporter exporter, MeterProvider meterProvider) { + ConfigProperties config, + LogRecordExporter exporter, + InternalTelemetryVersion telemetryVersion, + MeterProvider meterProvider) { BatchLogRecordProcessorBuilder builder = BatchLogRecordProcessor.builder(exporter).setMeterProvider(meterProvider); @@ -120,10 +132,7 @@ static BatchLogRecordProcessor configureBatchLogRecordProcessor( builder.setExporterTimeout(timeout); } - InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); - if (telemetryVersion != null) { - builder.setInternalTelemetryVersion(telemetryVersion); - } + builder.setInternalTelemetryVersion(telemetryVersion); return builder.build(); } diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java index c379f905bf5..8a5bde466a2 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java @@ -19,6 +19,7 @@ import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; import io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessorBuilder; import io.opentelemetry.sdk.trace.export.SpanExporter; import io.opentelemetry.sdk.trace.samplers.Sampler; import java.io.Closeable; @@ -50,7 +51,10 @@ static void configureTracerProvider( List closeables) { tracerProviderBuilder.setSpanLimits(configureSpanLimits(config)); - tracerProviderBuilder.setMeterProvider(() -> meterProvider); + InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); + if (telemetryVersion != InternalTelemetryVersion.LEGACY) { + tracerProviderBuilder.setMeterProvider(() -> meterProvider); + } String sampler = config.getString("otel.traces.sampler", PARENTBASED_ALWAYS_ON); tracerProviderBuilder.setSampler( @@ -61,7 +65,8 @@ static void configureTracerProvider( config, spiHelper, spanExporterCustomizer, closeables); List processors = - configureSpanProcessors(config, exportersByName, meterProvider, closeables); + configureSpanProcessors( + config, exportersByName, telemetryVersion, meterProvider, closeables); for (SpanProcessor processor : processors) { SpanProcessor wrapped = spanProcessorCustomizer.apply(processor, config); if (wrapped != processor) { @@ -74,6 +79,7 @@ static void configureTracerProvider( static List configureSpanProcessors( ConfigProperties config, Map exportersByName, + InternalTelemetryVersion telemetryVersion, MeterProvider meterProvider, List closeables) { Map exportersByNameCopy = new HashMap<>(exportersByName); @@ -82,8 +88,11 @@ static List configureSpanProcessors( for (String simpleProcessorExporterNames : simpleProcessorExporterNames) { SpanExporter exporter = exportersByNameCopy.remove(simpleProcessorExporterNames); if (exporter != null) { - SpanProcessor spanProcessor = - SimpleSpanProcessor.builder(exporter).setMeterProvider(() -> meterProvider).build(); + SimpleSpanProcessorBuilder spanProcessorBuilder = SimpleSpanProcessor.builder(exporter); + if (telemetryVersion != InternalTelemetryVersion.LEGACY) { + spanProcessorBuilder.setMeterProvider(() -> meterProvider); + } + SpanProcessor spanProcessor = spanProcessorBuilder.build(); closeables.add(spanProcessor); spanProcessors.add(spanProcessor); } @@ -92,7 +101,8 @@ static List configureSpanProcessors( if (!exportersByNameCopy.isEmpty()) { SpanExporter compositeSpanExporter = SpanExporter.composite(exportersByNameCopy.values()); SpanProcessor spanProcessor = - configureBatchSpanProcessor(config, compositeSpanExporter, meterProvider); + configureBatchSpanProcessor( + config, compositeSpanExporter, telemetryVersion, meterProvider); closeables.add(spanProcessor); spanProcessors.add(spanProcessor); } @@ -102,7 +112,10 @@ static List configureSpanProcessors( // VisibleForTesting static BatchSpanProcessor configureBatchSpanProcessor( - ConfigProperties config, SpanExporter exporter, MeterProvider meterProvider) { + ConfigProperties config, + SpanExporter exporter, + InternalTelemetryVersion telemetryVersion, + MeterProvider meterProvider) { BatchSpanProcessorBuilder builder = BatchSpanProcessor.builder(exporter).setMeterProvider(() -> meterProvider); @@ -126,10 +139,7 @@ static BatchSpanProcessor configureBatchSpanProcessor( builder.setExporterTimeout(timeout); } - InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); - if (telemetryVersion != null) { - builder.setInternalTelemetryVersion(telemetryVersion); - } + builder.setInternalTelemetryVersion(telemetryVersion); return builder.build(); } diff --git a/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java b/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java index e0ddcb438fe..450c98cacad 100644 --- a/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java @@ -17,6 +17,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder; import io.opentelemetry.sdk.trace.SpanLimits; @@ -100,7 +101,7 @@ void configureTracerProvider() { void configureBatchSpanProcessor_empty() { try (BatchSpanProcessor processor = TracerProviderConfiguration.configureBatchSpanProcessor( - EMPTY, mockSpanExporter, MeterProvider.noop())) { + EMPTY, mockSpanExporter, InternalTelemetryVersion.LEGACY, MeterProvider.noop())) { assertThat(processor) .extracting("worker") .satisfies( @@ -133,6 +134,7 @@ void configureBatchSpanProcessor_configured() { TracerProviderConfiguration.configureBatchSpanProcessor( DefaultConfigProperties.createFromMap(properties), mockSpanExporter, + InternalTelemetryVersion.LEGACY, MeterProvider.noop())) { assertThat(processor) .extracting("worker") diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSpanExporterTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSpanExporterTest.java index 69a86641084..cce800d494d 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSpanExporterTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/ConfigurableSpanExporterTest.java @@ -20,6 +20,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; @@ -149,6 +150,7 @@ void configureSpanProcessors_simpleSpanProcessor() { DefaultConfigProperties.createFromMap( Collections.singletonMap("otel.traces.exporter", "console,logging")), exportersByName, + InternalTelemetryVersion.LEGACY, MeterProvider.noop(), closeables); cleanup.addCloseables(closeables); @@ -171,6 +173,7 @@ void configureSpanProcessors_batchSpanProcessor() { ImmutableMap.of( exporterName, io.opentelemetry.exporter.zipkin.ZipkinSpanExporter.builder().build()), + InternalTelemetryVersion.LEGACY, MeterProvider.noop(), closeables); cleanup.addCloseables(closeables); @@ -192,6 +195,7 @@ void configureSpanProcessors_multipleExporters() { OtlpGrpcSpanExporter.builder().build(), "zipkin", io.opentelemetry.exporter.zipkin.ZipkinSpanExporter.builder().build()), + InternalTelemetryVersion.LEGACY, MeterProvider.noop(), closeables); cleanup.addCloseables(closeables); @@ -235,6 +239,7 @@ void configureSpanProcessors_multipleExportersWithLogging() { LoggingSpanExporter.create(), "zipkin", io.opentelemetry.exporter.zipkin.ZipkinSpanExporter.builder().build()), + InternalTelemetryVersion.LEGACY, MeterProvider.noop(), closeables); cleanup.addCloseables(closeables); diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfigurationTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfigurationTest.java index 9609f8cb4d3..f76bcad0fe8 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/LoggerProviderConfigurationTest.java @@ -13,6 +13,7 @@ import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.logs.LogRecordProcessor; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder; @@ -93,6 +94,7 @@ void configureLogRecordProcessors_multipleExportersWithLogging() { LoggerProviderConfiguration.configureLogRecordProcessors( DefaultConfigProperties.createFromMap(Collections.emptyMap()), exportersByName, + InternalTelemetryVersion.LEGACY, MeterProvider.noop(), closeables); cleanup.addCloseables(closeables); @@ -123,6 +125,7 @@ void configureBatchLogRecordProcessor() { LoggerProviderConfiguration.configureBatchLogRecordProcessor( DefaultConfigProperties.createFromMap(properties), SystemOutLogRecordExporter.create(), + InternalTelemetryVersion.LEGACY, MeterProvider.noop())) { assertThat(processor) .extracting("worker") From 8010939ba20b9f02f949a99f55b793a67c4482e5 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Fri, 6 Feb 2026 11:37:43 +0900 Subject: [PATCH 4/4] Cleanup --- .../opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java index 25d9a82ef2c..b2fbea35461 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpConfigUtil.java @@ -110,9 +110,7 @@ public static void configureOtlpExporterBuilder( } InternalTelemetryVersion telemetryVersion = InternalTelemetryConfiguration.getVersion(config); - if (telemetryVersion != null) { - setInternalTelemetryVersion.accept(telemetryVersion); - } + setInternalTelemetryVersion.accept(telemetryVersion); String certificatePath = config.getString(