From b94a0b0ae53386116b2889987c602904f17a8772 Mon Sep 17 00:00:00 2001 From: Alex Leigh Date: Sun, 17 Sep 2023 13:29:27 -0700 Subject: [PATCH] lc-esp-script-engine: Added support for configuring script timeout --- .../java/lc/esp/script/engine/ESPScriptEngine.java | 11 ++++++++++- .../java/lc/esp/script/engine/ScriptContextTest.java | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/java/lc-esp-script-engine/src/main/java/lc/esp/script/engine/ESPScriptEngine.java b/java/lc-esp-script-engine/src/main/java/lc/esp/script/engine/ESPScriptEngine.java index f5c3c7a3d..01a35c831 100644 --- a/java/lc-esp-script-engine/src/main/java/lc/esp/script/engine/ESPScriptEngine.java +++ b/java/lc-esp-script-engine/src/main/java/lc/esp/script/engine/ESPScriptEngine.java @@ -28,6 +28,7 @@ import java.util.concurrent.*; public class ESPScriptEngine { private final ScriptEngine engine; private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPScriptEngine.class); + private int timeoutSeconds = 10; public ESPScriptEngine() { engine = GraalJSScriptEngine.create(null, @@ -42,7 +43,7 @@ public class ESPScriptEngine { final Context context = Context.newBuilder("js").build(); final Future futureResult = executor.submit(() -> context.eval("js", script)); try { - final Object result = futureResult.get(10, TimeUnit.SECONDS); + final Object result = futureResult.get(timeoutSeconds, TimeUnit.SECONDS); logger.info("Script evaluated within 10 seconds, result: " + result); } catch (TimeoutException e) { context.interrupt(Duration.ZERO); @@ -51,6 +52,14 @@ public class ESPScriptEngine { } } + public int getTimeoutSeconds() { + return timeoutSeconds; + } + + public void setTimeoutSeconds(int timeoutSeconds) { + this.timeoutSeconds = timeoutSeconds; + } + public Object get(String key) { return engine.get(key); } diff --git a/java/lc-esp-script-engine/src/test/java/lc/esp/script/engine/ScriptContextTest.java b/java/lc-esp-script-engine/src/test/java/lc/esp/script/engine/ScriptContextTest.java index 470083230..bb4ad1494 100644 --- a/java/lc-esp-script-engine/src/test/java/lc/esp/script/engine/ScriptContextTest.java +++ b/java/lc-esp-script-engine/src/test/java/lc/esp/script/engine/ScriptContextTest.java @@ -26,6 +26,7 @@ public class ScriptContextTest { @Test public void scriptInterruptionTest() throws ScriptException, ExecutionException, InterruptedException { ESPScriptEngine sc = new ESPScriptEngine(); + sc.setTimeoutSeconds(1); boolean worked = false; try { sc.eval("while(true){}"); -- GitLab