diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/general/OtelExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/general/OtelExample.java index fca3e306b..1905f8565 100644 --- a/examples/src/main/java/software/amazon/lambda/durable/examples/general/OtelExample.java +++ b/examples/src/main/java/software/amazon/lambda/durable/examples/general/OtelExample.java @@ -9,7 +9,7 @@ import software.amazon.lambda.durable.DurableContext; import software.amazon.lambda.durable.DurableHandler; import software.amazon.lambda.durable.examples.types.GreetingRequest; -import software.amazon.lambda.durable.otel.OpenTelemetryDurablePlugin; +import software.amazon.lambda.durable.otel.OtelPlugin; /** * Example demonstrating OpenTelemetry instrumentation with the Durable Execution SDK. @@ -39,7 +39,7 @@ public class OtelExample extends DurableHandler { @Override protected DurableConfig createConfiguration() { - var otelPlugin = new OpenTelemetryDurablePlugin( + var otelPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))); return DurableConfig.builder().withPlugins(otelPlugin).build(); diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayMapExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayMapExample.java index e09e16d11..dbb446cbc 100644 --- a/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayMapExample.java +++ b/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayMapExample.java @@ -10,7 +10,7 @@ import software.amazon.lambda.durable.DurableContext; import software.amazon.lambda.durable.DurableHandler; import software.amazon.lambda.durable.examples.types.GreetingRequest; -import software.amazon.lambda.durable.otel.OpenTelemetryDurablePlugin; +import software.amazon.lambda.durable.otel.OtelPlugin; /** * OTel + X-Ray example: map operation that processes items concurrently. @@ -22,8 +22,8 @@ public class OtelXRayMapExample extends DurableHandler @Override protected DurableConfig createConfiguration() { var otlpExporter = OtlpGrpcSpanExporter.getDefault(); - var otelPlugin = new OpenTelemetryDurablePlugin( - SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(otlpExporter))); + var otelPlugin = + new OtelPlugin(SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(otlpExporter))); return DurableConfig.builder().withPlugins(otelPlugin).build(); } diff --git a/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayNestedContextExample.java b/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayNestedContextExample.java index 7f385c6fc..432de249b 100644 --- a/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayNestedContextExample.java +++ b/examples/src/main/java/software/amazon/lambda/durable/examples/otel/OtelXRayNestedContextExample.java @@ -9,7 +9,7 @@ import software.amazon.lambda.durable.DurableContext; import software.amazon.lambda.durable.DurableHandler; import software.amazon.lambda.durable.examples.types.GreetingRequest; -import software.amazon.lambda.durable.otel.OpenTelemetryDurablePlugin; +import software.amazon.lambda.durable.otel.OtelPlugin; /** * OTel + X-Ray example: nested child contexts with inner steps. @@ -21,8 +21,8 @@ public class OtelXRayNestedContextExample extends DurableHandler { @@ -153,7 +153,7 @@ public class MyHandler extends DurableHandler { // OTLP exporter sends spans to the ADOT collector (localhost:4317 by default) var otlpExporter = OtlpGrpcSpanExporter.getDefault(); - var otelPlugin = new OpenTelemetryDurablePlugin( + var otelPlugin = new OtelPlugin( SdkTracerProvider.builder() .addSpanProcessor(SimpleSpanProcessor.create(otlpExporter))); @@ -207,13 +207,13 @@ durable.invocation ```java // Default: X-Ray context extraction, MDC enabled -new OpenTelemetryDurablePlugin(tracerProviderBuilder); +new OtelPlugin(tracerProviderBuilder); // Custom context extractor, MDC enabled -new OpenTelemetryDurablePlugin(tracerProviderBuilder, contextExtractor); +new OtelPlugin(tracerProviderBuilder, contextExtractor); // Full configuration -new OpenTelemetryDurablePlugin(tracerProviderBuilder, contextExtractor, enableMdc); +new OtelPlugin(tracerProviderBuilder, contextExtractor, enableMdc); ``` | Parameter | Description | Default | @@ -262,21 +262,21 @@ For local testing, use a logging exporter to print spans to stdout: ```java import io.opentelemetry.exporter.logging.LoggingSpanExporter; -var otelPlugin = new OpenTelemetryDurablePlugin( +var otelPlugin = new OtelPlugin( SdkTracerProvider.builder() .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))); ``` ## API Reference -### `OpenTelemetryDurablePlugin` +### `OtelPlugin` The main plugin class. Implements `DurableExecutionPlugin` from the core SDK. ```java -new OpenTelemetryDurablePlugin(SdkTracerProviderBuilder tracerProviderBuilder) -new OpenTelemetryDurablePlugin(SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor) -new OpenTelemetryDurablePlugin(SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor, boolean enableMdc) +new OtelPlugin(SdkTracerProviderBuilder tracerProviderBuilder) +new OtelPlugin(SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor) +new OtelPlugin(SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor, boolean enableMdc) ``` ### `XRayContextExtractor` diff --git a/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/MdcSpanEnricher.java b/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/MdcSpanEnricher.java index 5fb431bae..a9d42ed4d 100644 --- a/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/MdcSpanEnricher.java +++ b/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/MdcSpanEnricher.java @@ -20,8 +20,8 @@ * * *

Usage: Call {@link #inject()} in {@code onUserFunctionStart} (after span is active) and {@link #clear()} in - * {@code onUserFunctionEnd}. Or use the convenience plugin {@link OpenTelemetryDurablePlugin} which handles this - * automatically when MDC enrichment is enabled. + * {@code onUserFunctionEnd}. Or use the convenience plugin {@link OtelPlugin} which handles this automatically when MDC + * enrichment is enabled. * * @deprecated This is a preview API that is experimental and may be changed or removed in future releases. */ diff --git a/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/OpenTelemetryDurablePlugin.java b/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/OtelPlugin.java similarity index 97% rename from otel-plugin/src/main/java/software/amazon/lambda/durable/otel/OpenTelemetryDurablePlugin.java rename to otel-plugin/src/main/java/software/amazon/lambda/durable/otel/OtelPlugin.java index 3e71e82ef..d2016da93 100644 --- a/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/OpenTelemetryDurablePlugin.java +++ b/otel-plugin/src/main/java/software/amazon/lambda/durable/otel/OtelPlugin.java @@ -63,9 +63,9 @@ * @deprecated This is a preview API that is experimental and may be changed or removed in future releases. */ @Deprecated -public class OpenTelemetryDurablePlugin implements DurableExecutionPlugin { +public class OtelPlugin implements DurableExecutionPlugin { - private static final Logger logger = LoggerFactory.getLogger(OpenTelemetryDurablePlugin.class); + private static final Logger logger = LoggerFactory.getLogger(OtelPlugin.class); private static final String INSTRUMENTATION_NAME = "aws-durable-execution-sdk-java"; private final SdkTracerProvider tracerProvider; @@ -98,13 +98,13 @@ public class OpenTelemetryDurablePlugin implements DurableExecutionPlugin { * *

{@code
      * var otlpExporter = OtlpGrpcSpanExporter.getDefault(); // sends to localhost:4317
-     * var plugin = new OpenTelemetryDurablePlugin(
+     * var plugin = new OtelPlugin(
      *     SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(otlpExporter)));
      * }
* * @param tracerProviderBuilder the tracer provider builder (ID generator will be overridden) */ - public OpenTelemetryDurablePlugin(SdkTracerProviderBuilder tracerProviderBuilder) { + public OtelPlugin(SdkTracerProviderBuilder tracerProviderBuilder) { this(tracerProviderBuilder, new XRayContextExtractor(), true); } @@ -114,8 +114,7 @@ public OpenTelemetryDurablePlugin(SdkTracerProviderBuilder tracerProviderBuilder * @param tracerProviderBuilder the tracer provider builder (ID generator will be overridden) * @param contextExtractor extracts parent trace context from the Lambda environment */ - public OpenTelemetryDurablePlugin( - SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor) { + public OtelPlugin(SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor) { this(tracerProviderBuilder, contextExtractor, true); } @@ -126,7 +125,7 @@ public OpenTelemetryDurablePlugin( * @param contextExtractor extracts parent trace context from the Lambda environment * @param enableMdc if true, injects trace_id/span_id into SLF4J MDC for log correlation */ - public OpenTelemetryDurablePlugin( + public OtelPlugin( SdkTracerProviderBuilder tracerProviderBuilder, ContextExtractor contextExtractor, boolean enableMdc) { this.idGenerator = new DeterministicIdGenerator(); this.tracerProvider = tracerProviderBuilder.setIdGenerator(idGenerator).build(); diff --git a/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/MdcSpanEnricherTest.java b/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/MdcSpanEnricherTest.java index 487044570..99568d2ef 100644 --- a/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/MdcSpanEnricherTest.java +++ b/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/MdcSpanEnricherTest.java @@ -55,7 +55,7 @@ void plugin_withMdcEnabled_setsArnInMdc() { // Test MDC through the full plugin lifecycle (where makeCurrent is called on same thread) var spanExporter = InMemorySpanExporter.create(); - var plugin = new OpenTelemetryDurablePlugin( + var plugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> null, true); diff --git a/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/OpenTelemetryDurablePluginTest.java b/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/OtelPluginTest.java similarity index 97% rename from otel-plugin/src/test/java/software/amazon/lambda/durable/otel/OpenTelemetryDurablePluginTest.java rename to otel-plugin/src/test/java/software/amazon/lambda/durable/otel/OtelPluginTest.java index ca143c570..f2a48ffc1 100644 --- a/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/OpenTelemetryDurablePluginTest.java +++ b/otel-plugin/src/test/java/software/amazon/lambda/durable/otel/OtelPluginTest.java @@ -14,16 +14,16 @@ import software.amazon.lambda.durable.execution.SuspendExecutionException; import software.amazon.lambda.durable.plugin.*; -class OpenTelemetryDurablePluginTest { +class OtelPluginTest { private InMemorySpanExporter spanExporter; - private OpenTelemetryDurablePlugin plugin; + private OtelPlugin plugin; @BeforeEach void setUp() { spanExporter = InMemorySpanExporter.create(); - plugin = new OpenTelemetryDurablePlugin( + plugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> null, false); @@ -213,7 +213,7 @@ void operationNotCompleted_spanEndedAtInvocationEnd() { @Test void sampling_disabled_producesNoSpans() { spanExporter = InMemorySpanExporter.create(); - var sampledPlugin = new OpenTelemetryDurablePlugin( + var sampledPlugin = new OtelPlugin( SdkTracerProvider.builder() .setSampler(io.opentelemetry.sdk.trace.samplers.Sampler.alwaysOff()) .addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), @@ -241,7 +241,7 @@ void xrayExtraction_usesExtractedTraceId_overArnDerived() { var extractedContext = new ExtractedContext(xrayTraceId, null); spanExporter = InMemorySpanExporter.create(); - var xrayPlugin = new OpenTelemetryDurablePlugin( + var xrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> extractedContext, false); @@ -260,7 +260,7 @@ void xrayExtraction_allSpansShareExtractedTraceId() { var extractedContext = new ExtractedContext(xrayTraceId, null); spanExporter = InMemorySpanExporter.create(); - var xrayPlugin = new OpenTelemetryDurablePlugin( + var xrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> extractedContext, false); @@ -289,7 +289,7 @@ void xrayExtraction_withParentSpanId_invocationSpanHasCorrectParent() { var extractedContext = new ExtractedContext(xrayTraceId, parentSpanId); spanExporter = InMemorySpanExporter.create(); - var xrayPlugin = new OpenTelemetryDurablePlugin( + var xrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> extractedContext, false); @@ -314,7 +314,7 @@ void xrayExtraction_withoutParentSpanId_invocationSpanIsRoot() { var extractedContext = new ExtractedContext(xrayTraceId, null); spanExporter = InMemorySpanExporter.create(); - var xrayPlugin = new OpenTelemetryDurablePlugin( + var xrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> extractedContext, false); @@ -344,7 +344,7 @@ void xrayExtraction_multipleInvocations_sameTraceId_unifiedTrace() { var extractedContext = new ExtractedContext(xrayTraceId, "53995c3f42cd8ad8"); spanExporter = InMemorySpanExporter.create(); - var xrayPlugin = new OpenTelemetryDurablePlugin( + var xrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> extractedContext, false); @@ -376,7 +376,7 @@ void xrayExtraction_multipleInvocations_sameTraceId_unifiedTrace() { @Test void xrayExtraction_nullExtractor_fallsBackToArnDerived() { spanExporter = InMemorySpanExporter.create(); - var noXrayPlugin = new OpenTelemetryDurablePlugin( + var noXrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> null, false); @@ -407,7 +407,7 @@ void xrayExtraction_extractedTraceIdMatchesXrayConversion() { // Now feed it through the plugin var extractedContext = new ExtractedContext(convertedId, null); spanExporter = InMemorySpanExporter.create(); - var xrayPlugin = new OpenTelemetryDurablePlugin( + var xrayPlugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> extractedContext, false); diff --git a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/OtelPluginIntegrationTest.java b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/OtelPluginIntegrationTest.java index 5c9cc4b97..1658e8774 100644 --- a/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/OtelPluginIntegrationTest.java +++ b/sdk-integration-tests/src/test/java/software/amazon/lambda/durable/OtelPluginIntegrationTest.java @@ -16,7 +16,7 @@ import software.amazon.lambda.durable.config.StepConfig; import software.amazon.lambda.durable.model.ExecutionStatus; import software.amazon.lambda.durable.model.WaitForConditionResult; -import software.amazon.lambda.durable.otel.OpenTelemetryDurablePlugin; +import software.amazon.lambda.durable.otel.OtelPlugin; import software.amazon.lambda.durable.retry.RetryStrategies; import software.amazon.lambda.durable.testing.LocalDurableTestRunner; @@ -33,7 +33,7 @@ class OtelPluginIntegrationTest { void setUp() { spanExporter = InMemorySpanExporter.create(); - var plugin = new OpenTelemetryDurablePlugin( + var plugin = new OtelPlugin( SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(spanExporter)), () -> null, false); @@ -306,7 +306,7 @@ void failedStep_producesErrorSpan() { void sampling_off_producesNoSpans() { var sampledExporter = InMemorySpanExporter.create(); - var noSamplePlugin = new OpenTelemetryDurablePlugin( + var noSamplePlugin = new OtelPlugin( SdkTracerProvider.builder() .setSampler(io.opentelemetry.sdk.trace.samplers.Sampler.alwaysOff()) .addSpanProcessor(SimpleSpanProcessor.create(sampledExporter)),