From 0b8928c4a5867f8acd8a70acce23ae654eab3f1b Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Wed, 5 Mar 2025 17:24:24 -0600 Subject: [PATCH] Fix compilation errors due to declarative config breaking changes --- aws-xray-propagator/build.gradle.kts | 14 ++++---- .../internal/AwsXrayComponentProvider.java | 4 +-- .../AwsXrayLambdaComponentProvider.java | 4 +-- .../internal/AwsComponentProviderTest.java | 4 +-- processors/build.gradle.kts | 16 +++++---- ...entToSpanEventBridgeComponentProvider.java | 4 +-- ...ventToSpanBridgeComponentProviderTest.java | 8 ++--- samplers/build.gradle.kts | 12 ++++--- ...eBasedRoutingSamplerComponentProvider.java | 36 ++++++++++--------- ...edRoutingSamplerComponentProviderTest.java | 18 +++++----- 10 files changed, 63 insertions(+), 57 deletions(-) diff --git a/aws-xray-propagator/build.gradle.kts b/aws-xray-propagator/build.gradle.kts index 7384b462b..f1b3c27ab 100644 --- a/aws-xray-propagator/build.gradle.kts +++ b/aws-xray-propagator/build.gradle.kts @@ -8,12 +8,14 @@ description = "OpenTelemetry AWS X-Ray Propagator" otelJava.moduleName.set("io.opentelemetry.contrib.awsxray.propagator") dependencies { - api("io.opentelemetry:opentelemetry-api") - compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") - testImplementation("io.opentelemetry:opentelemetry-sdk-trace") - testImplementation("io.opentelemetry:opentelemetry-sdk-testing") + // TODO: revert versions before merging + api("io.opentelemetry:opentelemetry-api:1.48.0-SNAPSHOT") + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.48.0-SNAPSHOT") + compileOnly("io.opentelemetry:opentelemetry-api-incubator:1.48.0-alpha-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.48.0-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-trace:1.48.0-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-testing:1.48.0-SNAPSHOT") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator:1.48.0-alpha-SNAPSHOT") testImplementation("uk.org.webcompere:system-stubs-jupiter:2.0.3") } diff --git a/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayComponentProvider.java b/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayComponentProvider.java index fdec190d0..ba3636932 100644 --- a/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayComponentProvider.java +++ b/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.contrib.awsxray.propagator.internal; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.contrib.awsxray.propagator.AwsXrayPropagator; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import io.opentelemetry.sdk.autoconfigure.spi.internal.StructuredConfigProperties; public class AwsXrayComponentProvider implements ComponentProvider { @Override @@ -22,7 +22,7 @@ public String getName() { } @Override - public TextMapPropagator create(StructuredConfigProperties config) { + public TextMapPropagator create(DeclarativeConfigProperties config) { return AwsXrayPropagator.getInstance(); } } diff --git a/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayLambdaComponentProvider.java b/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayLambdaComponentProvider.java index 86550a22e..c29f433aa 100644 --- a/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayLambdaComponentProvider.java +++ b/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsXrayLambdaComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.contrib.awsxray.propagator.internal; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.contrib.awsxray.propagator.AwsXrayLambdaPropagator; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import io.opentelemetry.sdk.autoconfigure.spi.internal.StructuredConfigProperties; public class AwsXrayLambdaComponentProvider implements ComponentProvider { @Override @@ -22,7 +22,7 @@ public String getName() { } @Override - public TextMapPropagator create(StructuredConfigProperties config) { + public TextMapPropagator create(DeclarativeConfigProperties config) { return AwsXrayLambdaPropagator.getInstance(); } } diff --git a/aws-xray-propagator/src/test/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsComponentProviderTest.java b/aws-xray-propagator/src/test/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsComponentProviderTest.java index 385e06400..1d1590d3a 100644 --- a/aws-xray-propagator/src/test/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsComponentProviderTest.java +++ b/aws-xray-propagator/src/test/java/io/opentelemetry/contrib/awsxray/propagator/internal/AwsComponentProviderTest.java @@ -11,7 +11,7 @@ import io.opentelemetry.contrib.awsxray.propagator.AwsXrayLambdaPropagator; import io.opentelemetry.contrib.awsxray.propagator.AwsXrayPropagator; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfiguration; +import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Test; @@ -23,7 +23,7 @@ void endToEnd() { String yaml = "file_format: 0.3\n" + "propagator:\n" + " composite: [xray, xray-lambda]\n"; OpenTelemetrySdk openTelemetrySdk = - FileConfiguration.parseAndCreate( + DeclarativeConfiguration.parseAndCreate( new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8))); TextMapPropagator expectedPropagator = TextMapPropagator.composite( diff --git a/processors/build.gradle.kts b/processors/build.gradle.kts index 2b16dcad4..8b9e4e31e 100644 --- a/processors/build.gradle.kts +++ b/processors/build.gradle.kts @@ -12,15 +12,17 @@ java { } dependencies { - api("io.opentelemetry:opentelemetry-sdk") - compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") + // TODO: revert versions before merging + api("io.opentelemetry:opentelemetry-sdk:1.48.0-SNAPSHOT") + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.48.0-SNAPSHOT") + compileOnly("io.opentelemetry:opentelemetry-api-incubator:1.48.0-alpha-SNAPSHOT") // For EventToSpanEventBridge - implementation("io.opentelemetry:opentelemetry-exporter-otlp-common") + implementation("io.opentelemetry:opentelemetry-exporter-otlp-common:1.48.0-SNAPSHOT") implementation("com.fasterxml.jackson.core:jackson-core") - testImplementation("io.opentelemetry:opentelemetry-api-incubator") - testImplementation("io.opentelemetry:opentelemetry-sdk-testing") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator") + testImplementation("io.opentelemetry:opentelemetry-api-incubator:1.48.0-alpha-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-testing:1.48.0-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.48.0-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator:1.48.0-alpha-SNAPSHOT") } diff --git a/processors/src/main/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanEventBridgeComponentProvider.java b/processors/src/main/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanEventBridgeComponentProvider.java index 593e92f61..2985ddd41 100644 --- a/processors/src/main/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanEventBridgeComponentProvider.java +++ b/processors/src/main/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanEventBridgeComponentProvider.java @@ -5,9 +5,9 @@ package io.opentelemetry.contrib.eventbridge.internal; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.contrib.eventbridge.EventToSpanEventBridge; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import io.opentelemetry.sdk.autoconfigure.spi.internal.StructuredConfigProperties; import io.opentelemetry.sdk.logs.LogRecordProcessor; /** @@ -30,7 +30,7 @@ public String getName() { } @Override - public LogRecordProcessor create(StructuredConfigProperties config) { + public LogRecordProcessor create(DeclarativeConfigProperties config) { return EventToSpanEventBridge.create(); } } diff --git a/processors/src/test/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanBridgeComponentProviderTest.java b/processors/src/test/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanBridgeComponentProviderTest.java index 8c7a95c31..a2f6165ae 100644 --- a/processors/src/test/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanBridgeComponentProviderTest.java +++ b/processors/src/test/java/io/opentelemetry/contrib/eventbridge/internal/EventToSpanBridgeComponentProviderTest.java @@ -8,7 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfiguration; +import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Test; @@ -21,12 +21,10 @@ void endToEnd() { "file_format: 0.3\n" + "logger_provider:\n" + " processors:\n" - // TODO(jack-berg): remove "{}" after releasing - // https://github.com/open-telemetry/opentelemetry-java/pull/6891/files - + " - event_to_span_event_bridge: {}\n"; + + " - event_to_span_event_bridge:\n"; OpenTelemetrySdk openTelemetrySdk = - FileConfiguration.parseAndCreate( + DeclarativeConfiguration.parseAndCreate( new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8))); assertThat(openTelemetrySdk.getSdkLoggerProvider().toString()) diff --git a/samplers/build.gradle.kts b/samplers/build.gradle.kts index 023c96441..6fbd67fca 100644 --- a/samplers/build.gradle.kts +++ b/samplers/build.gradle.kts @@ -7,12 +7,14 @@ description = "Sampler which makes its decision based on semantic attributes val otelJava.moduleName.set("io.opentelemetry.contrib.sampler") dependencies { - api("io.opentelemetry:opentelemetry-sdk") + // TODO: revert versions before merging + api("io.opentelemetry:opentelemetry-sdk:1.48.0-SNAPSHOT") - compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi") - compileOnly("io.opentelemetry:opentelemetry-sdk-extension-incubator") + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.48.0-SNAPSHOT") + compileOnly("io.opentelemetry:opentelemetry-api-incubator:1.48.0-alpha-SNAPSHOT") + compileOnly("io.opentelemetry:opentelemetry-sdk-extension-incubator:1.48.0-alpha-SNAPSHOT") testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") - testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.48.0-SNAPSHOT") + testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator:1.48.0-alpha-SNAPSHOT") } diff --git a/samplers/src/main/java/io/opentelemetry/contrib/sampler/internal/RuleBasedRoutingSamplerComponentProvider.java b/samplers/src/main/java/io/opentelemetry/contrib/sampler/internal/RuleBasedRoutingSamplerComponentProvider.java index 9bdc0564d..9e7fb4971 100644 --- a/samplers/src/main/java/io/opentelemetry/contrib/sampler/internal/RuleBasedRoutingSamplerComponentProvider.java +++ b/samplers/src/main/java/io/opentelemetry/contrib/sampler/internal/RuleBasedRoutingSamplerComponentProvider.java @@ -6,13 +6,13 @@ package io.opentelemetry.contrib.sampler.internal; import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.contrib.sampler.RuleBasedRoutingSampler; import io.opentelemetry.contrib.sampler.RuleBasedRoutingSamplerBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import io.opentelemetry.sdk.autoconfigure.spi.internal.StructuredConfigProperties; -import io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfiguration; +import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; import io.opentelemetry.sdk.trace.samplers.Sampler; import java.util.List; @@ -38,17 +38,17 @@ public String getName() { } @Override - public Sampler create(StructuredConfigProperties config) { - StructuredConfigProperties fallbackModel = config.getStructured("fallback_sampler"); + public Sampler create(DeclarativeConfigProperties config) { + DeclarativeConfigProperties fallbackModel = config.getStructured("fallback_sampler"); if (fallbackModel == null) { - throw new ConfigurationException( + throw new DeclarativeConfigException( "rule_based_routing sampler .fallback is required but is null"); } Sampler fallbackSampler; try { - fallbackSampler = FileConfiguration.createSampler(fallbackModel); - } catch (ConfigurationException e) { - throw new ConfigurationException( + fallbackSampler = DeclarativeConfiguration.createSampler(fallbackModel); + } catch (DeclarativeConfigException e) { + throw new DeclarativeConfigException( "rule_Based_routing sampler failed to create .fallback sampler", e); } @@ -57,39 +57,41 @@ public Sampler create(StructuredConfigProperties config) { try { spanKind = SpanKind.valueOf(spanKindString); } catch (IllegalArgumentException e) { - throw new ConfigurationException( + throw new DeclarativeConfigException( "rule_based_routing sampler .span_kind is invalid: " + spanKindString, e); } RuleBasedRoutingSamplerBuilder builder = RuleBasedRoutingSampler.builder(spanKind, fallbackSampler); - List rules = config.getStructuredList("rules"); + List rules = config.getStructuredList("rules"); if (rules == null || rules.isEmpty()) { - throw new ConfigurationException("rule_based_routing sampler .rules is required"); + throw new DeclarativeConfigException("rule_based_routing sampler .rules is required"); } - for (StructuredConfigProperties rule : rules) { + for (DeclarativeConfigProperties rule : rules) { String attribute = rule.getString("attribute"); if (attribute == null) { - throw new ConfigurationException( + throw new DeclarativeConfigException( "rule_based_routing sampler .rules[].attribute is required"); } AttributeKey attributeKey = AttributeKey.stringKey(attribute); String pattern = rule.getString("pattern"); if (pattern == null) { - throw new ConfigurationException("rule_based_routing sampler .rules[].pattern is required"); + throw new DeclarativeConfigException( + "rule_based_routing sampler .rules[].pattern is required"); } String action = rule.getString("action"); if (action == null) { - throw new ConfigurationException("rule_based_routing sampler .rules[].action is required"); + throw new DeclarativeConfigException( + "rule_based_routing sampler .rules[].action is required"); } if (action.equals(ACTION_RECORD_AND_SAMPLE)) { builder.recordAndSample(attributeKey, pattern); } else if (action.equals(ACTION_DROP)) { builder.drop(attributeKey, pattern); } else { - throw new ConfigurationException( + throw new DeclarativeConfigException( "rule_based_routing sampler .rules[].action is must be " + ACTION_RECORD_AND_SAMPLE + " or " diff --git a/samplers/src/test/java/internal/RuleBasedRoutingSamplerComponentProviderTest.java b/samplers/src/test/java/internal/RuleBasedRoutingSamplerComponentProviderTest.java index 36fc6b2d0..384707843 100644 --- a/samplers/src/test/java/internal/RuleBasedRoutingSamplerComponentProviderTest.java +++ b/samplers/src/test/java/internal/RuleBasedRoutingSamplerComponentProviderTest.java @@ -10,14 +10,14 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.context.Context; import io.opentelemetry.contrib.sampler.RuleBasedRoutingSampler; import io.opentelemetry.contrib.sampler.internal.RuleBasedRoutingSamplerComponentProvider; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; -import io.opentelemetry.sdk.autoconfigure.spi.internal.StructuredConfigProperties; -import io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfiguration; +import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; import io.opentelemetry.sdk.trace.IdGenerator; import io.opentelemetry.sdk.trace.samplers.Sampler; import io.opentelemetry.sdk.trace.samplers.SamplingResult; @@ -52,7 +52,7 @@ void endToEnd() { + " pattern: /actuator.*\n" + " action: DROP\n"; OpenTelemetrySdk openTelemetrySdk = - FileConfiguration.parseAndCreate( + DeclarativeConfiguration.parseAndCreate( new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8))); Sampler sampler = openTelemetrySdk.getSdkTracerProvider().getSampler(); assertThat(sampler.toString()) @@ -97,8 +97,8 @@ void endToEnd() { @ParameterizedTest @MethodSource("createValidArgs") void create_Valid(String yaml, RuleBasedRoutingSampler expectedSampler) { - StructuredConfigProperties configProperties = - FileConfiguration.toConfigProperties( + DeclarativeConfigProperties configProperties = + DeclarativeConfiguration.toConfigProperties( new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8))); Sampler sampler = PROVIDER.create(configProperties); @@ -149,12 +149,12 @@ static Stream createValidArgs() { @ParameterizedTest @MethodSource("createInvalidArgs") void create_Invalid(String yaml, String expectedErrorMessage) { - StructuredConfigProperties configProperties = - FileConfiguration.toConfigProperties( + DeclarativeConfigProperties configProperties = + DeclarativeConfiguration.toConfigProperties( new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8))); assertThatThrownBy(() -> PROVIDER.create(configProperties)) - .isInstanceOf(ConfigurationException.class) + .isInstanceOf(DeclarativeConfigException.class) .hasMessage(expectedErrorMessage); }