diff --git a/agent/src/main/java/com/walmartlabs/concord/agent/executors/runner/RunnerCommandBuilder.java b/agent/src/main/java/com/walmartlabs/concord/agent/executors/runner/RunnerCommandBuilder.java
index 6d75476134..290e939faf 100644
--- a/agent/src/main/java/com/walmartlabs/concord/agent/executors/runner/RunnerCommandBuilder.java
+++ b/agent/src/main/java/com/walmartlabs/concord/agent/executors/runner/RunnerCommandBuilder.java
@@ -138,12 +138,17 @@ public String[] build() {
l.add("-Dconcord.exposeDockerDaemon=" + exposeDockerDaemon);
+ // disable warnings for unoptimized js compiler (EnableJVMCI jvm opt is still experimental)
+ // https://www.graalvm.org/latest/reference-manual/embed-languages/#enable-optimization-on-openjdk-and-oracle-jdk
+ l.add("-Dpolyglot.engine.WarnInterpreterOnly=false");
+
// Java 9+ requires additional add-opens for compatibility
if (majorJavaVersion >= 9) {
l.add("--add-opens");
l.add("java.base/java.lang=ALL-UNNAMED");
l.add("--add-opens");
l.add("java.base/java.util=ALL-UNNAMED");
+ l.add("--enable-native-access=ALL-UNNAMED");
}
// classpath
diff --git a/cli/pom.xml b/cli/pom.xml
index b1dcc5d545..6535015bfd 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -183,8 +183,10 @@
${main.class}
java.base/java.lang java.base/java.util
+ true
+
diff --git a/github-app-installation/pom.xml b/github-app-installation/pom.xml
index bfdad77daa..7e8c5a6ad3 100644
--- a/github-app-installation/pom.xml
+++ b/github-app-installation/pom.xml
@@ -24,10 +24,6 @@
com.walmartlabs.concord
concord-common
-
- io.takari.bpm
- bpm-engine-impl
-
javax.validation
validation-api
diff --git a/it/runtime-v2/pom.xml b/it/runtime-v2/pom.xml
index f08a0fead4..d4e17741af 100644
--- a/it/runtime-v2/pom.xml
+++ b/it/runtime-v2/pom.xml
@@ -120,6 +120,19 @@
+
+
+ org.graalvm.polyglot
+ js
+ pom
+ test
+
+
+ org.graalvm.js
+ js-scriptengine
+ test
+
+
com.walmartlabs.concord.server.plugins.noderoster
diff --git a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/FormIT.java b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/FormIT.java
index f22d1ec1cd..4ffbb2e6e8 100644
--- a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/FormIT.java
+++ b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/FormIT.java
@@ -269,7 +269,7 @@ private static void startCustomFormSession(ConcordRule concord, UUID instanceId,
http.disconnect();
}
- @SuppressWarnings({"unchecked", "UnstableApiUsage"})
+ @SuppressWarnings({"unchecked"})
private static Map getDataJs(ConcordRule concord, UUID instanceId, String formName) throws Exception {
URL url = new URL(concord.apiBaseUrl() + "/forms/" + instanceId + "/" + formName + "/form/data.js");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
@@ -282,7 +282,7 @@ private static Map getDataJs(ConcordRule concord, UUID instanceI
String str = CharStreams.toString(new InputStreamReader(is, StandardCharsets.UTF_8));
ScriptEngine se = new ScriptEngineManager().getEngineByName("js");
Object result = se.eval(str);
- assertTrue(result instanceof Map);
+ assertInstanceOf(Map.class, result);
return (Map) result;
} finally {
http.disconnect();
diff --git a/runtime/v1/impl/pom.xml b/runtime/v1/impl/pom.xml
index 59de8ceee6..2bfb3752c2 100644
--- a/runtime/v1/impl/pom.xml
+++ b/runtime/v1/impl/pom.xml
@@ -105,6 +105,15 @@
io.takari.bpm
bpm-engine-impl
+
+ org.graalvm.polyglot
+ js
+ pom
+
+
+ org.graalvm.js
+ js-scriptengine
+
javax.inject
javax.inject
@@ -222,7 +231,6 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.2.4
package
@@ -242,7 +250,11 @@
com.walmartlabs.concord.runner.Main
+
+ true
+
+
diff --git a/runtime/v1/model/pom.xml b/runtime/v1/model/pom.xml
index 125f3acff1..9695b32d24 100644
--- a/runtime/v1/model/pom.xml
+++ b/runtime/v1/model/pom.xml
@@ -105,6 +105,12 @@
bpm-engine-impl
test
+
+ org.graalvm.polyglot
+ js
+ pom
+ test
+
org.mockito
mockito-core
diff --git a/runtime/v2/runner/pom.xml b/runtime/v2/runner/pom.xml
index 1474b25bc0..fed921816d 100644
--- a/runtime/v2/runner/pom.xml
+++ b/runtime/v2/runner/pom.xml
@@ -121,8 +121,13 @@
- org.graalvm.js
+ org.graalvm.polyglot
+ polyglot
+
+
+ org.graalvm.polyglot
js
+ pom
org.graalvm.js
@@ -273,7 +278,6 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.2.4
package
@@ -293,7 +297,11 @@
com.walmartlabs.concord.runtime.v2.runner.Main
+
+ true
+
+
diff --git a/runtime/v2/runner/src/main/java/com/walmartlabs/concord/runtime/v2/runner/script/DefaultScriptEvaluator.java b/runtime/v2/runner/src/main/java/com/walmartlabs/concord/runtime/v2/runner/script/DefaultScriptEvaluator.java
index b0f9ec34db..412d908d73 100644
--- a/runtime/v2/runner/src/main/java/com/walmartlabs/concord/runtime/v2/runner/script/DefaultScriptEvaluator.java
+++ b/runtime/v2/runner/src/main/java/com/walmartlabs/concord/runtime/v2/runner/script/DefaultScriptEvaluator.java
@@ -42,7 +42,7 @@
public class DefaultScriptEvaluator implements ScriptEvaluator {
// https://www.graalvm.org/latest/reference-manual/js/JavaScriptCompatibility/#ecmascript-language-compliance
- static Integer[] GRAAL_ES_VERSIONS = new Integer[]{
+ static final Integer[] GRAAL_ES_VERSIONS = new Integer[]{
3,
5,
6,
@@ -55,8 +55,13 @@ public class DefaultScriptEvaluator implements ScriptEvaluator {
2020,
2021,
2022,
+ 2024
};
+ private static final String DEFAULT_ES_VERSION = "6";
+
+ private static final String CTX_OPT_JS_ES_VERSION = "js.ecmascript-version";
+
private static final Logger log = LoggerFactory.getLogger(DefaultScriptEvaluator.class);
@@ -133,6 +138,9 @@ private org.graalvm.polyglot.Context.Builder getGraalEngineContextBuilder(Map new LinkedList<>(v.as(List.class))).build();
org.graalvm.polyglot.Context.Builder ctx = org.graalvm.polyglot.Context.newBuilder("js")
.allowHostAccess(access);
+
+ ctx.option(CTX_OPT_JS_ES_VERSION, DEFAULT_ES_VERSION);
+
for (Map.Entry entry : variables.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
@@ -143,7 +151,7 @@ private org.graalvm.polyglot.Context.Builder getGraalEngineContextBuilder(Map 8 )); then
JDK_SPECIFIC_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED"
fi
+if (( $JAVA_VERSION > 24 )); then
+ echo "Applying JDK 25+ specific options..."
+ # added to suppress warnings for graalvm on jdk25
+ # https://www.graalvm.org/release-notes/JDK_24/#polyglot-runtime
+ JDK_SPECIFIC_OPTS="${JDK_SPECIFIC_OPTS} --enable-native-access=ALL-UNNAMED"
+fi
+
if [[ -z "${EXTRA_CLASSPATH}" ]]; then
EXTRA_CLASSPATH=""
fi
@@ -52,6 +59,7 @@ ${JDK_SPECIFIC_OPTS} \
-Dfile.encoding=UTF-8 \
-Djava.net.preferIPv4Stack=true \
-Djava.security.egd=file:/dev/./urandom \
+-Dpolyglot.engine.WarnInterpreterOnly=false \
-Dconcord.conf=${CONCORD_CFG_FILE} \
-cp "${BASE_DIR}/lib/*:${BASE_DIR}/ext/*:${BASE_DIR}/classes:${EXTRA_CLASSPATH}" \
"${MAIN_CLASS}"
diff --git a/server/impl/pom.xml b/server/impl/pom.xml
index 95ec199f40..e6cbdb1788 100644
--- a/server/impl/pom.xml
+++ b/server/impl/pom.xml
@@ -318,8 +318,13 @@
graal-sdk
- org.graalvm.js
+ org.graalvm.polyglot
+ polyglot
+
+
+ org.graalvm.polyglot
js
+ pom
org.graalvm.js
diff --git a/targetplatform/pom.xml b/targetplatform/pom.xml
index 7e68f3da03..a828476a41 100644
--- a/targetplatform/pom.xml
+++ b/targetplatform/pom.xml
@@ -54,7 +54,7 @@
9.2.0
2.28.0
3.0.1-b12
- 22.0.0.2
+ 25.0.2
1.6.5
5.0.4
33.3.1-jre
@@ -581,15 +581,21 @@
guice-servlet
${guice.version}
-
+
org.graalvm.js
- js
+ js-scriptengine
${graalvm.version}
- org.graalvm.js
- js-scriptengine
+ org.graalvm.polyglot
+ polyglot
+ ${graalvm.version}
+
+
+ org.graalvm.polyglot
+ js
${graalvm.version}
+ pom
org.graalvm.sdk
@@ -630,6 +636,12 @@
io.takari.bpm
bpm-engine-impl
${bpm.version}
+
+
+ org.graalvm.js
+ js
+
+
io.takari.bpm