This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch ranger-2.6
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-2.6 by this push:
new 00c04a392 RANGER-5079: remove unnecessary warn log -
NashornScriptEngineCreator on JDK15 or higher (#472)
00c04a392 is described below
commit 00c04a392c930711fca8f71d160a123b483dfd5c
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Fri Dec 20 21:25:37 2024 -0800
RANGER-5079: remove unnecessary warn log - NashornScriptEngineCreator on
JDK15 or higher (#472)
(cherry picked from commit a1f6239ca9fb7d017589f18a85dbbbe23daa8b7b)
---
.../ranger/plugin/util/ScriptEngineUtil.java | 48 ++++++++++++++++++----
1 file changed, 41 insertions(+), 7 deletions(-)
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
b/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
index 8d76c1d81..1d0194e34 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
@@ -31,9 +31,21 @@ import javax.script.ScriptEngine;
public class ScriptEngineUtil {
private static final Logger LOG =
LoggerFactory.getLogger(RangerScriptConditionEvaluator.class);
+ private static final String SCRIPT_ENGINE_CREATOR_NASHHORN =
"org.apache.ranger.plugin.util.NashornScriptEngineCreator";
+ private static final String SCRIPT_ENGINE_CREATOR_GRAAL =
"org.apache.ranger.plugin.util.GraalScriptEngineCreator";
+ private static final String SCRIPT_ENGINE_CREATOR_JS =
"org.apache.ranger.plugin.util.JavaScriptEngineCreator";
+ private static final String[] SCRIPT_ENGINE_CREATORS = new
String[] {SCRIPT_ENGINE_CREATOR_NASHHORN, SCRIPT_ENGINE_CREATOR_GRAAL,
SCRIPT_ENGINE_CREATOR_JS};
+ private static final int JVM_MAJOR_CLASS_VERSION_JDK8 = 52;
+ private static final int JVM_MAJOR_CLASS_VERSION_JDK15 = 59;
+ private static final int JVM_MAJOR_CLASS_VERSION =
getJVMMajorClassVersion();
+
private static volatile ScriptEngineCreator SCRIPT_ENGINE_CREATOR
= null;
private static volatile boolean
SCRIPT_ENGINE_CREATOR_INITIALIZED = false;
+ private ScriptEngineUtil() {
+ // to block instantiation
+ }
+
// for backward compatibility with any plugin that might use this API
public static ScriptEngine createScriptEngine(String engineName, String
serviceType) {
if (LOG.isDebugEnabled()) {
@@ -95,12 +107,7 @@ public class ScriptEngineUtil {
}
private static void initScriptEngineCreator(String serviceType) {
- String[] engineCreators = new String[] {
"org.apache.ranger.plugin.util.NashornScriptEngineCreator",
-
"org.apache.ranger.plugin.util.GraalScriptEngineCreator",
-
"org.apache.ranger.plugin.util.JavaScriptEngineCreator"
- };
-
- for (String creatorClsName : engineCreators) {
+ for (String creatorClsName : SCRIPT_ENGINE_CREATORS) {
ScriptEngineCreator creator = null;
try {
@@ -108,7 +115,19 @@ public class ScriptEngineUtil {
creator = creatorClass.newInstance();
} catch (Throwable t) {
- LOG.warn("initScriptEngineCreator(): failed to instantiate
engine creator {}", creatorClsName, t);
+ boolean logWarn;
+
+ if (creatorClsName.equals(SCRIPT_ENGINE_CREATOR_NASHHORN)) {
// not available JDK15 onwards
+ logWarn = JVM_MAJOR_CLASS_VERSION <
JVM_MAJOR_CLASS_VERSION_JDK15;
+ } else if (creatorClsName.equals(SCRIPT_ENGINE_CREATOR_GRAAL))
{ // available only after JDK15 onwards
+ logWarn = JVM_MAJOR_CLASS_VERSION >=
JVM_MAJOR_CLASS_VERSION_JDK15;
+ } else {
+ logWarn = true;
+ }
+
+ if (logWarn) {
+ LOG.warn("initScriptEngineCreator(): failed to instantiate
engine creator {}", creatorClsName, t);
+ }
}
if (creator == null) {
@@ -139,6 +158,21 @@ public class ScriptEngineUtil {
}
}
+ private static int getJVMMajorClassVersion() {
+ int ret = JVM_MAJOR_CLASS_VERSION_JDK8;
+
+ try {
+ String javaClassVersion =
System.getProperty("java.class.version");
+ String[] versionElements = javaClassVersion != null ?
javaClassVersion.split("\\.") : new String[0];
+
+ ret = versionElements.length > 0 ?
Integer.parseInt(versionElements[0]) : JVM_MAJOR_CLASS_VERSION_JDK8;
+ } catch (Throwable t) {
+ // ignore
+ }
+
+ return ret;
+ }
+
private static ClassLoader getPrevActiveClassLoader(String serviceType) {
ClassLoader ret = null;