From 9ad5a79b4927d628115c1c04092c524cd4dc863e Mon Sep 17 00:00:00 2001 From: Maytas Monsereenusorn Date: Wed, 9 Aug 2023 23:44:20 -0700 Subject: [PATCH 1/4] Fix Javascript tiered broker selector strategy and Javascript filter for Java 17 --- indexing-service/pom.xml | 4 ++++ .../overlord/setup/JavaScriptWorkerSelectStrategy.java | 2 +- .../setup/JavaScriptWorkerSelectStrategyTest.java | 2 +- pom.xml | 8 +++++++- services/pom.xml | 4 ++++ .../router/JavaScriptTieredBrokerSelectorStrategy.java | 2 +- .../JavaScriptTieredBrokerSelectorStrategyTest.java | 2 +- 7 files changed, 19 insertions(+), 5 deletions(-) diff --git a/indexing-service/pom.xml b/indexing-service/pom.xml index 480c602a3462..bdfca8703749 100644 --- a/indexing-service/pom.xml +++ b/indexing-service/pom.xml @@ -207,6 +207,10 @@ org.eclipse.aether aether-api + + org.openjdk.nashorn + nashorn-core + junit diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategy.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategy.java index f9cc2da3c74d..24d66d46e627 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategy.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategy.java @@ -61,7 +61,7 @@ public JavaScriptWorkerSelectStrategy( private SelectorFunction compileSelectorFunction() { - final ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); + final ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); try { ((Compilable) engine).compile("var apply = " + function).eval(); return ((Invocable) engine).getInterface(SelectorFunction.class); diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java index c767bf64c7a6..0cf20e877a3f 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java @@ -80,7 +80,7 @@ public class JavaScriptWorkerSelectStrategyTest public void checkJdkCompatibility() { // skip tests for newer JDKs without javascript support - Assume.assumeNotNull(new ScriptEngineManager().getEngineByName("javascript")); + Assume.assumeNotNull(new ScriptEngineManager().getEngineByName("nashorn")); } @Test diff --git a/pom.xml b/pom.xml index 2bb57fe7256b..342d30febcb5 100644 --- a/pom.xml +++ b/pom.xml @@ -112,6 +112,7 @@ 5.13.0 5.13.0 3.3.6 + 15.4 4.3.1 1.12.497 2.8.0 @@ -1258,6 +1259,11 @@ + + org.openjdk.nashorn + nashorn-core + ${nashorn.version} + @@ -1446,7 +1452,7 @@ org.codehaus.mojo animal-sniffer-maven-plugin - 1.17 + 1.23 check-java-api diff --git a/services/pom.xml b/services/pom.xml index 6b10577c59dd..36b30f479e72 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -207,6 +207,10 @@ javax.xml.bind jaxb-api + + org.openjdk.nashorn + nashorn-core + org.apache.druid diff --git a/services/src/main/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategy.java b/services/src/main/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategy.java index 347fcf0c1c88..36b63fc36bff 100644 --- a/services/src/main/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategy.java +++ b/services/src/main/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategy.java @@ -59,7 +59,7 @@ public JavaScriptTieredBrokerSelectorStrategy( private SelectorFunction compileSelectorFunction() { - final ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); + final ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); try { ((Compilable) engine).compile("var apply = " + function).eval(); return ((Invocable) engine).getInterface(SelectorFunction.class); diff --git a/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java b/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java index fa8e931f0cdb..64aaebe119ec 100644 --- a/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java +++ b/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java @@ -55,7 +55,7 @@ public class JavaScriptTieredBrokerSelectorStrategyTest public void checkJdkCompatibility() { // skip tests for newer JDKs without javascript support - Assume.assumeNotNull(new ScriptEngineManager().getEngineByName("javascript")); + Assume.assumeNotNull(new ScriptEngineManager().getEngineByName("nashorn")); } @Test From 48b9abcb8deb4f6d698c046ea4b5681b97d57388 Mon Sep 17 00:00:00 2001 From: Maytas Monsereenusorn Date: Sat, 22 Mar 2025 00:14:21 -0700 Subject: [PATCH 2/4] clean up --- indexing-service/pom.xml | 1 + .../overlord/setup/JavaScriptWorkerSelectStrategyTest.java | 7 ------- services/pom.xml | 1 + .../router/JavaScriptTieredBrokerSelectorStrategyTest.java | 7 ------- 4 files changed, 2 insertions(+), 14 deletions(-) diff --git a/indexing-service/pom.xml b/indexing-service/pom.xml index 3f2600958934..aba20f7b29a2 100644 --- a/indexing-service/pom.xml +++ b/indexing-service/pom.xml @@ -190,6 +190,7 @@ org.openjdk.nashorn nashorn-core + ${nashorn.version} com.cronutils diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java index 0cf20e877a3f..316092719d3e 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java @@ -76,13 +76,6 @@ public class JavaScriptWorkerSelectStrategyTest JavaScriptConfig.getEnabledInstance() ); - @Before - public void checkJdkCompatibility() - { - // skip tests for newer JDKs without javascript support - Assume.assumeNotNull(new ScriptEngineManager().getEngineByName("nashorn")); - } - @Test public void testSerde() throws Exception { diff --git a/services/pom.xml b/services/pom.xml index 476db0ba7894..bd5886d03bc0 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -241,6 +241,7 @@ org.openjdk.nashorn nashorn-core + ${nashorn.version} diff --git a/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java b/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java index 64aaebe119ec..645cdfab75e1 100644 --- a/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java +++ b/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java @@ -51,13 +51,6 @@ public class JavaScriptTieredBrokerSelectorStrategyTest JavaScriptConfig.getEnabledInstance() ); - @Before - public void checkJdkCompatibility() - { - // skip tests for newer JDKs without javascript support - Assume.assumeNotNull(new ScriptEngineManager().getEngineByName("nashorn")); - } - @Test public void testSerde() throws Exception { From 1eb6feacdbd758cc9ead2f1677a2568f6966bf2d Mon Sep 17 00:00:00 2001 From: Maytas Monsereenusorn Date: Sat, 22 Mar 2025 00:15:05 -0700 Subject: [PATCH 3/4] clean up --- .../overlord/setup/JavaScriptWorkerSelectStrategyTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java index 316092719d3e..c2a02d3d1e5f 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/setup/JavaScriptWorkerSelectStrategyTest.java @@ -32,14 +32,10 @@ import org.hamcrest.CoreMatchers; import org.joda.time.Period; import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import javax.script.ScriptEngineManager; - public class JavaScriptWorkerSelectStrategyTest { @Rule From 2753045487e63d10a4b2ed85df3353954da23e54 Mon Sep 17 00:00:00 2001 From: Maytas Monsereenusorn Date: Sat, 22 Mar 2025 00:15:41 -0700 Subject: [PATCH 4/4] clean up --- .../router/JavaScriptTieredBrokerSelectorStrategyTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java b/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java index 645cdfab75e1..ec1ddb9f66a6 100644 --- a/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java +++ b/services/src/test/java/org/apache/druid/server/router/JavaScriptTieredBrokerSelectorStrategyTest.java @@ -32,13 +32,10 @@ import org.apache.druid.query.topn.TopNQueryBuilder; import org.hamcrest.CoreMatchers; import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import javax.script.ScriptEngineManager; import java.util.LinkedHashMap; public class JavaScriptTieredBrokerSelectorStrategyTest