Skip to content

Commit 188f73b

Browse files
Mohammed EhabMohammed Ehab
Mohammed Ehab
authored and
Mohammed Ehab
committed
Refactor the Main Function Into Three Main Blocks.
1 parent 5e072e4 commit 188f73b

File tree

1 file changed

+28
-17
lines changed
  • aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client

1 file changed

+28
-17
lines changed

Diff for: aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/AWSLambda.java

+28-17
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
33
SPDX-License-Identifier: Apache-2.0
44
*/
5+
56
package com.amazonaws.services.lambda.runtime.api.client;
67

78
import com.amazonaws.services.lambda.crac.Core;
@@ -30,12 +31,12 @@
3031
import java.io.IOError;
3132
import java.io.IOException;
3233
import java.io.PrintStream;
34+
import java.io.UnsupportedEncodingException;
3335
import java.lang.reflect.Constructor;
3436
import java.net.URLClassLoader;
3537
import java.security.Security;
3638
import java.util.Properties;
3739

38-
3940
/**
4041
* The entrypoint of this class is {@link AWSLambda#startRuntime}. It performs two main tasks:
4142
*
@@ -176,24 +177,28 @@ private static LogSink createLogSink() {
176177
}
177178
}
178179

179-
public static void main(String[] args) {
180-
startRuntime(args[0]);
181-
}
180+
public static void main(String[] args) throws Throwable {
181+
try {
182+
LambdaContextLogger logger = initLogger();
183+
LambdaRequestHandler lambdaRequestHandler = getLambdaRequestHandlerObject(args[0], logger);
184+
startRuntimeLoop(lambdaRequestHandler, logger);
182185

183-
private static void startRuntime(String handler) {
184-
try (LogSink logSink = createLogSink()) {
185-
LambdaContextLogger logger = new LambdaContextLogger(
186-
logSink,
187-
LogLevel.fromString(LambdaEnvironment.LAMBDA_LOG_LEVEL),
188-
LogFormat.fromString(LambdaEnvironment.LAMBDA_LOG_FORMAT)
189-
);
190-
startRuntime(handler, logger);
191-
} catch (Throwable t) {
186+
} catch (IOException | ClassNotFoundException t) {
192187
throw new Error(t);
193188
}
194189
}
195190

196-
private static void startRuntime(String handler, LambdaContextLogger lambdaLogger) throws Throwable {
191+
private static LambdaContextLogger initLogger() {
192+
LogSink logSink = createLogSink();
193+
LambdaContextLogger logger = new LambdaContextLogger(
194+
logSink,
195+
LogLevel.fromString(LambdaEnvironment.LAMBDA_LOG_LEVEL),
196+
LogFormat.fromString(LambdaEnvironment.LAMBDA_LOG_FORMAT));
197+
198+
return logger;
199+
}
200+
201+
private static LambdaRequestHandler getLambdaRequestHandlerObject(String handler, LambdaContextLogger lambdaLogger) throws UnsupportedEncodingException, ClassNotFoundException, IOException {
197202
UnsafeUtil.disableIllegalAccessWarning();
198203

199204
System.setOut(new PrintStream(new LambdaOutputStream(System.out), false, "UTF-8"));
@@ -210,7 +215,7 @@ private static void startRuntime(String handler, LambdaContextLogger lambdaLogge
210215
Thread.currentThread().setContextClassLoader(customerClassLoader);
211216

212217
// Load the user's handler
213-
LambdaRequestHandler requestHandler;
218+
LambdaRequestHandler requestHandler = null;
214219
try {
215220
requestHandler = findRequestHandler(handler, customerClassLoader);
216221
} catch (UserFault userFault) {
@@ -220,11 +225,16 @@ private static void startRuntime(String handler, LambdaContextLogger lambdaLogge
220225
RapidErrorType.BadFunctionCode);
221226
runtimeClient.reportInitError(error);
222227
System.exit(1);
223-
return;
224228
}
229+
225230
if (INIT_TYPE_SNAP_START.equals(AWS_LAMBDA_INITIALIZATION_TYPE)) {
226231
onInitComplete(lambdaLogger);
227232
}
233+
234+
return requestHandler;
235+
}
236+
237+
private static void startRuntimeLoop(LambdaRequestHandler requestHandler, LambdaContextLogger lambdaLogger) throws Throwable {
228238
boolean shouldExit = false;
229239
while (!shouldExit) {
230240
UserFault userFault = null;
@@ -240,7 +250,7 @@ private static void startRuntime(String handler, LambdaContextLogger lambdaLogge
240250
payload = requestHandler.call(request);
241251
runtimeClient.reportInvocationSuccess(request.getId(), payload.toByteArray());
242252
// clear interrupted flag in case if it was set by user's code
243-
boolean ignored = Thread.interrupted();
253+
Thread.interrupted();
244254
} catch (UserFault f) {
245255
shouldExit = f.fatal;
246256
userFault = f;
@@ -278,6 +288,7 @@ static void onInitComplete(final LambdaContextLogger lambdaLogger) throws IOExce
278288
RapidErrorType.BeforeCheckpointError));
279289
System.exit(64);
280290
}
291+
281292
try {
282293
Core.getGlobalContext().afterRestore(null);
283294
} catch (Exception restoreExc) {

0 commit comments

Comments
 (0)