From 23dc461f4d5f98dcddf193f790a6a355d9d201d1 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov <75367056+smirnoal@users.noreply.github.com> Date: Tue, 14 Mar 2023 11:14:45 +0000 Subject: [PATCH] Check if the main thread was interrupted (#19) --- .../services/lambda/runtime/api/client/AWSLambda.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/AWSLambda.java b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/AWSLambda.java index 5a0650f0..67c6631d 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/AWSLambda.java +++ b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/AWSLambda.java @@ -126,7 +126,7 @@ private static LambdaRequestHandler findRequestHandler(final String handlerStrin } public static void setupRuntimeLogger(LambdaLogger lambdaLogger) - throws ClassNotFoundException, IllegalAccessException, NoSuchFieldException { + throws ClassNotFoundException { ReflectUtil.setStaticField( Class.forName("com.amazonaws.services.lambda.runtime.LambdaRuntime"), "logger", @@ -152,9 +152,9 @@ public static String getEnvOrExit(String envVariableName) { private static FileDescriptor intToFd(int fd) throws RuntimeException { try { Class clazz = FileDescriptor.class; - Constructor c = clazz.getDeclaredConstructor(new Class[]{Integer.TYPE}); + Constructor c = clazz.getDeclaredConstructor(Integer.TYPE); c.setAccessible(true); - return c.newInstance(new Integer(fd)); + return c.newInstance(fd); } catch (Exception e) { throw new RuntimeException(e); } @@ -232,8 +232,10 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro ByteArrayOutputStream payload; try { payload = requestHandler.call(request); - // TODO calling payload.toByteArray() creates a new copy of the underlying buffer runtimeClient.postInvocationResponse(request.getId(), payload.toByteArray()); + if (Thread.currentThread().isInterrupted()) { + shouldExit = true; + } } catch (UserFault f) { userFault = f; UserFault.filterStackTrace(f);