From df27a1d77219dae7933bf20b9128371bf73b29a8 Mon Sep 17 00:00:00 2001 From: Harry Nguyen Date: Mon, 26 Oct 2026 12:30:48 -0700 Subject: [PATCH] Revert "chore: revert telemetry stabilization (#819)" This reverts commit e512588a8273c225e931aa3cc6e86b5b0ceb4c22. --- telemetry-exporter/README.md | 6 +----- .../software/amazon/lambda/durable/telemetry/ArnParser.java | 3 --- .../amazon/lambda/durable/telemetry/ContentConfig.java | 2 -- .../lambda/durable/telemetry/DurableExecutionTelemetry.java | 2 -- .../durable/telemetry/DurableExecutionTelemetryConfig.java | 4 ---- .../durable/telemetry/DurableExecutionTelemetryRecord.java | 2 -- .../software/amazon/lambda/durable/telemetry/ErrorInfo.java | 2 -- .../java/software/amazon/lambda/durable/telemetry/Json.java | 2 -- .../amazon/lambda/durable/telemetry/OperationOverride.java | 2 -- .../amazon/lambda/durable/telemetry/OperationRecord.java | 2 -- .../amazon/lambda/durable/telemetry/OperationSummary.java | 2 -- .../amazon/lambda/durable/telemetry/OperationsIndex.java | 2 -- .../amazon/lambda/durable/telemetry/TelemetryExporter.java | 3 --- .../amazon/lambda/durable/telemetry/Truncation.java | 2 -- .../lambda/durable/telemetry/exporters/AuroraExporter.java | 3 --- .../durable/telemetry/exporters/CloudWatchLogsExporter.java | 2 -- .../durable/telemetry/exporters/DynamoDBExporter.java | 2 -- .../durable/telemetry/exporters/EventBridgeExporter.java | 2 -- .../lambda/durable/telemetry/exporters/FileExporter.java | 3 --- .../durable/telemetry/exporters/FirehoseExporter.java | 2 -- .../lambda/durable/telemetry/exporters/HttpExporter.java | 3 --- .../durable/telemetry/exporters/LambdaLogExporter.java | 2 -- .../lambda/durable/telemetry/exporters/OTelExporter.java | 3 --- .../durable/telemetry/exporters/OpenSearchExporter.java | 3 --- .../durable/telemetry/exporters/OperationsFormat.java | 2 -- .../durable/telemetry/exporters/RedshiftExporter.java | 2 -- .../lambda/durable/telemetry/exporters/S3Exporter.java | 3 --- .../lambda/durable/telemetry/exporters/SQSExporter.java | 2 -- 28 files changed, 1 insertion(+), 69 deletions(-) diff --git a/telemetry-exporter/README.md b/telemetry-exporter/README.md index aca68feda..6b17d7b23 100644 --- a/telemetry-exporter/README.md +++ b/telemetry-exporter/README.md @@ -1,14 +1,10 @@ -# Durable Execution Telemetry Exporter (preview) +# Durable Execution Telemetry Exporter Instrumentation plugin for the AWS Lambda Durable Execution Java SDK that emits a curated, per-execution **Durable Execution Telemetry record** to one or more pluggable exporters. It ports the JavaScript `durableExecutionTelemetry()` contract (canonical record schema `1.0`) to the Java plugin hook surface. -> **Preview API.** Every public type is annotated -> `@software.amazon.lambda.durable.annotations.Experimental` to signal it is experimental and may -> change or be removed in a future release without a major-version bump. - ## Usage ```java diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java index 3eafe1ee5..e2f2c2e60 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java @@ -2,15 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 package software.amazon.lambda.durable.telemetry; -import software.amazon.lambda.durable.annotations.Experimental; - /** * Parses the durable execution ARN into its component fields, mirroring the JS {@code parseExecutionArn}. * *

Format: * {@code arn::lambda:::function::/durable-execution//}. */ -@Experimental public final class ArnParser { private final String functionName; private final String qualifier; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java index ae3e3f9af..4d15e1fc8 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Function; -import software.amazon.lambda.durable.annotations.Experimental; /** * Controls what data is included in emitted records (input/output transforms, operation overrides, error inclusion). @@ -24,7 +23,6 @@ * the cached input snapshot or any later emission — and a non-fatal transform failure omits the field and is logged. * VM/thread-termination errors propagate. */ -@Experimental public final class ContentConfig { private final boolean includeInput; private final Function inputTransform; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java index bcf5871c1..f9cd9871e 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java @@ -10,7 +10,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.services.lambda.model.ErrorObject; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.exception.DurableOperationException; import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException; import software.amazon.lambda.durable.plugin.DurableExecutionPluginFactory; @@ -46,7 +45,6 @@ * {@link TelemetrySettings}, the exporters, and the {@link ExportScheduler} that serializes exports across every * execution the environment hosts. */ -@Experimental public final class DurableExecutionTelemetry { private static final Logger logger = LoggerFactory.getLogger(DurableExecutionTelemetry.class); diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java index b9d2fc193..b146644bb 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java @@ -4,14 +4,11 @@ import java.util.ArrayList; import java.util.List; -import software.amazon.lambda.durable.annotations.Experimental; /** Configuration for the Durable Execution Telemetry plugin. Mirrors the JS {@code DurableExecutionTelemetryConfig}. */ -@Experimental public final class DurableExecutionTelemetryConfig { /** When records are emitted. */ - @Experimental public enum EmitMode { ON_COMPLETE, ON_CHANGE, @@ -19,7 +16,6 @@ public enum EmitMode { } /** Which operations to include in each record's operations array. */ - @Experimental public enum OperationDetail { TOP_LEVEL, FULL_TREE diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java index 93e768040..fd5ba65b9 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java @@ -7,7 +7,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; /** * The curated execution record emitted to destinations. @@ -16,7 +15,6 @@ * identical (camelCase names, absent fields omitted). Exactly one of {@code operations} (array) or the * {@code operationsByName} rendering is emitted, depending on the exporter's {@code render}. */ -@Experimental public final class DurableExecutionTelemetryRecord { String recordType = "DurableExecutionTelemetry"; String schemaVersion = "1.0"; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java index 2d9752322..6deb64862 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java @@ -4,7 +4,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; /** * Error detail carried on a record or operation: {@code {name, message, cause?}}, the shape shared by the Telemetry @@ -15,7 +14,6 @@ * applied here, when the error is created, so it holds for the error and every cause. Applying it again leaves the * value unchanged. */ -@Experimental public final class ErrorInfo { /** Longest {@code name} or {@code message} written, in Unicode code points, before the {@code …} marker. */ static final int MAX_CHARS = 8_192; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java index f0023d180..2b64b958e 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java @@ -14,11 +14,9 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.internal.FatalErrors; /** Minimal JSON helper for emitting telemetry records and measuring their serialized size. */ -@Experimental public final class Json { // Register JavaTimeModule and emit ISO-8601 (not numeric timestamps) so SDK-default payload types such as // java.time.Instant/Duration in an included input/output/result serialize instead of throwing and silently diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java index f42be02b9..3d19a6bce 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java @@ -3,7 +3,6 @@ package software.amazon.lambda.durable.telemetry; import java.util.function.Function; -import software.amazon.lambda.durable.annotations.Experimental; /** * Per-operation override controlling inclusion and result transformation, matched by {@code operationName}. @@ -15,7 +14,6 @@ * argument is safe, and a transform that throws omits the field (the failure is logged) rather than leaking the raw * value or failing the execution. An {@code exclude} override drops the operation entirely. */ -@Experimental public final class OperationOverride { private final String operationName; private final boolean exclude; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java index efde64308..aea2bdb06 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java @@ -4,7 +4,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; /** * A single operation within an execution (step, wait, invoke, callback, or context). @@ -12,7 +11,6 @@ *

Mirrors the JS {@code OperationRecord} interface field-for-field so the emitted wire JSON is identical. A * {@code null} field is treated as absent and omitted from the wire map (distinct from an explicit JSON null). */ -@Experimental public final class OperationRecord { private String id; private String name; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java index 130c043a1..b29c84372 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java @@ -4,7 +4,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; /** * A per-operation-name summary emitted (as an {@code operationsByName} map) by point-access exporters (CloudWatch @@ -14,7 +13,6 @@ * {@code type}, {@code subType}, {@code status} reflect the most recently seen occurrence; {@code result}/{@code error} * are included only when the name occurs exactly once. */ -@Experimental public final class OperationSummary { String type; String subType; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java index 98398e36a..82b057d25 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java @@ -5,7 +5,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; /** * Builds a name-keyed index of operation summaries from the canonical operations array. @@ -15,7 +14,6 @@ * {@code error} (no single representative value). Scalar fields ({@code type}, {@code subType}, {@code status}) reflect * the most recently seen occurrence. Unnamed operations are skipped. */ -@Experimental public final class OperationsIndex { private OperationsIndex() {} diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java index eae15fde9..42aa6f79e 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java @@ -2,10 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package software.amazon.lambda.durable.telemetry; -import software.amazon.lambda.durable.annotations.Experimental; - /** Exports workflow telemetry records to a destination. */ -@Experimental public interface TelemetryExporter { /** Emits one record to the destination. */ diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java index e3c19faa5..8b0e0e224 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java @@ -7,7 +7,6 @@ import java.util.List; import java.util.function.Function; import java.util.function.Supplier; -import software.amazon.lambda.durable.annotations.Experimental; /** * Best-effort size limiter. When the record is over the limit it drops, in order: @@ -29,7 +28,6 @@ * execution {@code error} and identity fields are never dropped, so a record can still be over a limit smaller than * those fields. */ -@Experimental public final class Truncation { private Truncation() {} diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java index ae78d75bb..78dd37210 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java @@ -10,7 +10,6 @@ import software.amazon.awssdk.services.rdsdata.model.ExecuteStatementRequest; import software.amazon.awssdk.services.rdsdata.model.Field; import software.amazon.awssdk.services.rdsdata.model.SqlParameter; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -20,11 +19,9 @@ * per execution keyed by execution ARN. Requires the Data API enabled on the cluster, {@code rds-data:ExecuteStatement} * and {@code secretsmanager:GetSecretValue}. */ -@Experimental public final class AuroraExporter implements TelemetryExporter { /** Database engine; selects the upsert dialect. */ - @Experimental public enum Engine { POSTGRESQL("postgresql"), MYSQL("mysql"); diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java index 0119f677d..85cd3ee0b 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java @@ -11,7 +11,6 @@ import software.amazon.awssdk.services.cloudwatchlogs.model.CreateLogStreamRequest; import software.amazon.awssdk.services.cloudwatchlogs.model.InputLogEvent; import software.amazon.awssdk.services.cloudwatchlogs.model.PutLogEventsRequest; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -21,7 +20,6 @@ * {@code operationsByName} map. Mirrors the JS {@code CloudWatchLogsExporter}. Requires {@code logs:CreateLogStream} * and {@code logs:PutLogEvents} on the target log group. */ -@Experimental public final class CloudWatchLogsExporter implements TelemetryExporter { private final String logGroupName; private final String logStreamPrefix; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java index a1f5a970b..949b57b2d 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java @@ -11,7 +11,6 @@ import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.PutItemRequest; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -21,7 +20,6 @@ * default sort key ({@code emittedAt}) every export adds a history item; with the sort key disabled each export * overwrites the execution's item. Emits the {@code operationsByName} map. Requires {@code dynamodb:PutItem}. */ -@Experimental public final class DynamoDBExporter implements TelemetryExporter { private final String tableName; private final String partitionKey; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java index 452d016ea..5d94e020c 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java @@ -9,7 +9,6 @@ import software.amazon.awssdk.services.eventbridge.model.PutEventsRequestEntry; import software.amazon.awssdk.services.eventbridge.model.PutEventsResponse; import software.amazon.awssdk.services.eventbridge.model.PutEventsResultEntry; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -18,7 +17,6 @@ * Exports workflow telemetry records to Amazon EventBridge, one PutEvents entry per record with the record status as * {@code DetailType} and the record JSON as {@code Detail}. Requires {@code events:PutEvents}. */ -@Experimental public final class EventBridgeExporter implements TelemetryExporter { /** * Default event source. The {@code aws.} prefix is reserved for AWS service events and is rejected by PutEvents. diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java index 81901227a..6b9caced3 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java @@ -11,7 +11,6 @@ import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -21,11 +20,9 @@ * (default), or written as one pretty-printed JSON file per execution that later exports overwrite. Suitable for an EFS * mount or {@code /tmp}. No truncation limit by default. */ -@Experimental public final class FileExporter implements TelemetryExporter { /** File layout. */ - @Experimental public enum Mode { /** Append every record to {@code {directory}/{YYYY-MM-DD}.ndjson}. */ NDJSON("ndjson"), diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java index 16f90f5f7..9b95f313f 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java @@ -8,7 +8,6 @@ import software.amazon.awssdk.services.firehose.FirehoseClient; import software.amazon.awssdk.services.firehose.model.PutRecordRequest; import software.amazon.awssdk.services.firehose.model.Record; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -17,7 +16,6 @@ * Exports workflow telemetry records to Amazon Data Firehose, one PutRecord per record as a newline-terminated JSON * line so concatenated deliveries stay parseable as NDJSON. Requires {@code firehose:PutRecord}. */ -@Experimental public final class FirehoseExporter implements TelemetryExporter { private final String deliveryStreamName; private final OperationsFormat operationsFormat; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java index 6723f46df..5001a7d5c 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java @@ -12,7 +12,6 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -21,11 +20,9 @@ * Exports workflow telemetry records to an HTTP endpoint as a JSON body, one request per record. A non-2xx response * fails the export. No truncation limit by default; set one if the endpoint caps request size. */ -@Experimental public final class HttpExporter implements TelemetryExporter { /** Request method. */ - @Experimental public enum Method { POST, PUT; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java index cc58960b8..fb3c38b77 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java @@ -5,7 +5,6 @@ import java.time.Instant; import java.util.LinkedHashMap; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -34,7 +33,6 @@ * application log level filtering is unchanged: with the JSON log format and an application log level of {@code WARN} * or above, these lines are dropped, as raw record lines were before. */ -@Experimental public final class LambdaLogExporter implements TelemetryExporter { /** UTF-8 size of the envelope around an empty {@code message}; the timestamp always has the same width. */ private static final int ENVELOPE_BYTES = diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java index f8468a394..fdbe6aeaf 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java @@ -14,7 +14,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -24,11 +23,9 @@ * record with identity fields as resource and log attributes and the full record JSON as the body. Compatible with any * OTLP-capable backend; authentication is via headers. */ -@Experimental public final class OTelExporter implements TelemetryExporter { /** OTLP transport encoding. */ - @Experimental public enum Protocol { HTTP_JSON("http/json"), HTTP_PROTOBUF("http/protobuf"); diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java index 69e9771dc..2c78e29ea 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java @@ -22,7 +22,6 @@ import software.amazon.awssdk.http.SdkHttpRequest; import software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner; import software.amazon.awssdk.http.auth.spi.signer.SignedRequest; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -32,11 +31,9 @@ * document id so later exports overwrite the same document. Authenticates with SigV4 (default) or HTTP basic auth. * Requires {@code es:ESHttpPut} on the index for SigV4. */ -@Experimental public final class OpenSearchExporter implements TelemetryExporter { /** Authentication method. */ - @Experimental public enum Auth { /** IAM request signing for Amazon OpenSearch Service (default). */ SIGV4("sigv4"), diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java index e75ed8f31..95bfa24f8 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java @@ -3,11 +3,9 @@ package software.amazon.lambda.durable.telemetry.exporters; import java.util.Map; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; /** How an exporter renders operations in the emitted record. */ -@Experimental public enum OperationsFormat { /** The canonical {@code operations} array (lossless; default). */ ARRAY("array"), diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java index 99a8b6f1b..89f7086f9 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java @@ -10,7 +10,6 @@ import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient; import software.amazon.awssdk.services.redshiftdata.model.ExecuteStatementRequest; import software.amazon.awssdk.services.redshiftdata.model.SqlParameter; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -22,7 +21,6 @@ * ({@code redshift-serverless:GetCredentials}, {@code redshift:GetClusterCredentialsWithIAM}, or * {@code secretsmanager:GetSecretValue}). */ -@Experimental public final class RedshiftExporter implements TelemetryExporter { private final String database; private final String fqTable; diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java index 3db659e6f..c5d466e61 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java @@ -5,7 +5,6 @@ import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutObjectRequest; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -15,11 +14,9 @@ * overwrite the same object). Emits the canonical {@code operations}-array wire shape. Mirrors the JS * {@code S3Exporter}. */ -@Experimental public final class S3Exporter implements TelemetryExporter { /** How to partition objects in S3. */ - @Experimental public enum Partitioning { DATE, FUNCTION_NAME, diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java index 4e727d9d4..eaff167ff 100644 --- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java +++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java @@ -13,7 +13,6 @@ import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.MessageAttributeValue; import software.amazon.awssdk.services.sqs.model.SendMessageRequest; -import software.amazon.lambda.durable.annotations.Experimental; import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord; import software.amazon.lambda.durable.telemetry.Json; import software.amazon.lambda.durable.telemetry.TelemetryExporter; @@ -23,7 +22,6 @@ * {@code status} / {@code functionName} message attributes. On a FIFO queue the group id defaults to the execution ARN * and the deduplication id is the execution ARN plus {@code emittedAt}. Requires {@code sqs:SendMessage}. */ -@Experimental public final class SQSExporter implements TelemetryExporter { private final String queueUrl; private final String messageGroupId;