diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index a3c4a7542..54e7cd023 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -48,12 +48,13 @@ jobs:
environment: E2E
strategy:
fail-fast: false
- max-parallel: 3
+ max-parallel: 4
matrix:
java:
- 11
- 17
- 21
+ - 25
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -81,12 +82,10 @@ jobs:
environment: E2E
strategy:
fail-fast: false
- max-parallel: 3
+ max-parallel: 1
matrix:
java:
- - 11
- - 17
- - 21
+ - 25
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
diff --git a/examples/powertools-examples-cloudformation/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/examples/powertools-examples-cloudformation/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index 10152cc64..e97baa294 100644
--- a/examples/powertools-examples-cloudformation/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/examples/powertools-examples-cloudformation/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -27,8 +27,18 @@
"fields":[{"name":"theUnsafe"}]
},
{
- "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
- "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
- "allPublicMethods":true
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
-]
\ No newline at end of file
+]
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/examples/powertools-examples-core-utilities/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index 10152cc64..e97baa294 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -27,8 +27,18 @@
"fields":[{"name":"theUnsafe"}]
},
{
- "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
- "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
- "allPublicMethods":true
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
-]
\ No newline at end of file
+]
diff --git a/examples/powertools-examples-idempotency/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/examples/powertools-examples-idempotency/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index 10152cc64..e97baa294 100644
--- a/examples/powertools-examples-idempotency/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/examples/powertools-examples-idempotency/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -27,8 +27,18 @@
"fields":[{"name":"theUnsafe"}]
},
{
- "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
- "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
- "allPublicMethods":true
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
-]
\ No newline at end of file
+]
diff --git a/examples/powertools-examples-parameters/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/examples/powertools-examples-parameters/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index 10152cc64..e97baa294 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/examples/powertools-examples-parameters/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -27,8 +27,18 @@
"fields":[{"name":"theUnsafe"}]
},
{
- "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
- "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
- "allPublicMethods":true
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
-]
\ No newline at end of file
+]
diff --git a/examples/powertools-examples-serialization/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/examples/powertools-examples-serialization/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index 8d3f375f2..7d38fc57d 100644
--- a/examples/powertools-examples-serialization/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/examples/powertools-examples-serialization/sam-graalvm/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -27,9 +27,19 @@
"fields":[{"name":"theUnsafe"}]
},
{
- "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
- "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
- "allPublicMethods":true
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
},
{
"name":"software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor",
diff --git a/powertools-e2e-tests/handlers/idempotency-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/idempotency-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/idempotency-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/idempotency-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/idempotency-generics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/idempotency-generics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/idempotency-generics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/idempotency-generics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/idempotency/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/idempotency/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/idempotency/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/idempotency/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/logging-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/logging-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/logging-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/logging-functional/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/logging-log4j/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/logging-log4j/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/logging-log4j/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/logging-log4j/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/logging-logback/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/logging-logback/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/logging-logback/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/logging-logback/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/metrics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/metrics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/metrics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/metrics/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/parameters/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/parameters/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/parameters/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/parameters/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 11eedca85..ef1d3e65f 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -261,6 +261,15 @@
1.9.21
+
+ jdk25
+
+ [25,)
+
+
+ 1.9.25
+
+
diff --git a/powertools-e2e-tests/handlers/tracing/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/tracing/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
index e69fa735c..467af67a0 100644
--- a/powertools-e2e-tests/handlers/tracing/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
+++ b/powertools-e2e-tests/handlers/tracing/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -56,6 +56,7 @@
{ "name": "tenantId" },
{ "name": "content" }
],
- "allPublicMethods": true
+ "allPublicMethods": true,
+ "unsafeAllocated": true
}
]
diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java
index ea5ac3342..ae96943c2 100644
--- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java
+++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/Infrastructure.java
@@ -247,7 +247,7 @@ private Stack createStackWithLambda() {
.create(e2eStack, functionName + "-logs")
.logGroupName("/aws/lambda/" + functionName)
.retention(RetentionDays.ONE_DAY)
- .removalPolicy(RemovalPolicy.DESTROY)
+ .removalPolicy(RemovalPolicy.RETAIN)
.build();
if (!StringUtils.isEmpty(idempotencyTable)) {
@@ -522,6 +522,8 @@ private JavaRuntime mapRuntimeVersion(String environmentVariableName) {
ret = JavaRuntime.JAVA17;
} else if (javaVersion.startsWith("21")) {
ret = JavaRuntime.JAVA21;
+ } else if (javaVersion.startsWith("25")) {
+ ret = JavaRuntime.JAVA25;
} else {
throw new IllegalArgumentException("Unsupported Java version " + javaVersion);
}
diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/JavaRuntime.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/JavaRuntime.java
index 53d35e86d..625a222aa 100644
--- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/JavaRuntime.java
+++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/JavaRuntime.java
@@ -19,7 +19,8 @@
public enum JavaRuntime {
JAVA11("java11", Runtime.JAVA_11, "11"),
JAVA17("java17", Runtime.JAVA_17, "17"),
- JAVA21("java21", Runtime.JAVA_21, "21");
+ JAVA21("java21", Runtime.JAVA_21, "21"),
+ JAVA25("java25", Runtime.JAVA_25, "25");
private final String runtime;
private final Runtime cdkRuntime;
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index 7d47b5331..5d374eaa8 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,9 +1,9 @@
-# Use the official AWS SAM base image for Java 21
-FROM public.ecr.aws/sam/build-java21@sha256:ced538830c78a0f45f91abe5f7963cb73005ad933aee7dd1160bd77d9fd3c4f3
+# Use the official AWS SAM base image for Java 25
+FROM public.ecr.aws/sam/build-java25@sha256:2ef9e5b950cc79489691be16c7edff904bf196955633dc7fbbc282a1ea421ba8
# Install GraalVM dependencies
-RUN curl -4 -L https://download.oracle.com/graalvm/21/latest/graalvm-jdk-21_linux-x64_bin.tar.gz | tar -xvz
-RUN mv graalvm-jdk-21.* /usr/lib/graalvm
+RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
+RUN mv graalvm-jdk-25.* /usr/lib/graalvm
# Make native image and mvn available on CLI
RUN ln -s /usr/lib/graalvm/bin/native-image /usr/bin/native-image