From 78a35ceb3b3de93311edd0fc46f525c32e1dfb71 Mon Sep 17 00:00:00 2001 From: Dennis Kieselhorst Date: Wed, 27 Apr 2022 22:04:50 +0200 Subject: [PATCH] fix: use environment variables to tune async init - and not system properties (#450) --- .../serverless/proxy/AsyncInitializationWrapper.java | 5 +++-- .../amazonaws/serverless/proxy/model/ContainerConfig.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/AsyncInitializationWrapper.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/AsyncInitializationWrapper.java index fa4be3035..d1e97909e 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/AsyncInitializationWrapper.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/AsyncInitializationWrapper.java @@ -40,7 +40,7 @@ public class AsyncInitializationWrapper extends InitializationWrapper { private static final int DEFAULT_INIT_GRACE_TIME_MS = 150; private static final String INIT_GRACE_TIME_ENVIRONMENT_VARIABLE_NAME = "AWS_SERVERLESS_JAVA_CONTAINER_INIT_GRACE_TIME"; - private static final int INIT_GRACE_TIME_MS = Integer.parseInt(System.getProperty( + private static final int INIT_GRACE_TIME_MS = Integer.parseInt(System.getenv().getOrDefault( INIT_GRACE_TIME_ENVIRONMENT_VARIABLE_NAME, Integer.toString(DEFAULT_INIT_GRACE_TIME_MS))); private static final int LAMBDA_MAX_INIT_TIME_MS = 10_000; @@ -75,7 +75,8 @@ public void start(LambdaContainerHandler handler) throws ContainerInitialization long curTime = Instant.now().toEpochMilli(); // account for the time it took to call the various constructors with the actual start time + a grace time long awaitTime = (actualStartTime + LAMBDA_MAX_INIT_TIME_MS) - curTime - INIT_GRACE_TIME_MS; - log.info("Async initialization will wait for " + awaitTime + "ms"); + log.info("Async initialization will wait for {}ms (init grace time is configured to {})", + awaitTime, INIT_GRACE_TIME_MS); if (!initializationLatch.await(awaitTime, TimeUnit.MILLISECONDS)) { log.info("Initialization took longer than " + LAMBDA_MAX_INIT_TIME_MS + ", setting new CountDownLatch and " + "continuing in event handler"); diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ContainerConfig.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ContainerConfig.java index d9889cc8c..941109b75 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ContainerConfig.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/model/ContainerConfig.java @@ -28,7 +28,7 @@ public class ContainerConfig { private static final List DEFAULT_FILE_PATHS = new ArrayList() {{ add("/tmp"); add("/var/task"); }}; private static final int DEFAULT_MAX_INIT_TIMEOUT_MS = 20_000; private static final String MAX_INIT_TIMEOUT_ENVIRONMENT_VARIABLE_NAME = "AWS_SERVERLESS_JAVA_CONTAINER_MAX_INIT_TIMEOUT"; - private static final int MAX_INIT_TIMEOUT_MS = Integer.parseInt(System.getProperty( + private static final int MAX_INIT_TIMEOUT_MS = Integer.parseInt(System.getenv().getOrDefault( MAX_INIT_TIMEOUT_ENVIRONMENT_VARIABLE_NAME, Integer.toString(DEFAULT_MAX_INIT_TIMEOUT_MS))); public static ContainerConfig defaultConfig() {