You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ab...@apache.org on 2022/06/03 04:50:03 UTC
[ranger] branch ranger-2.3 updated: RANGER-3606: Addendum to: 'remove unnecessary static members from plugin class loaders' - Cannot find plugin-class-loader for TAG service-type in JDK11
This is an automated email from the ASF dual-hosted git repository.
abhay pushed a commit to branch ranger-2.3
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-2.3 by this push:
new e194002e3 RANGER-3606: Addendum to: 'remove unnecessary static members from plugin class loaders' - Cannot find plugin-class-loader for TAG service-type in JDK11
e194002e3 is described below
commit e194002e3f235802a3a512fa75854ed19e4e4266
Author: Abhay Kulkarni <ab...@apache.org>
AuthorDate: Thu Jun 2 21:48:32 2022 -0700
RANGER-3606: Addendum to: 'remove unnecessary static members from plugin class loaders' - Cannot find plugin-class-loader for TAG service-type in JDK11
---
.../ranger/plugin/util/ScriptEngineUtil.java | 12 ++++--
.../classloader/RangerPluginClassLoader.java | 47 ++++++++++++----------
2 files changed, 35 insertions(+), 24 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 79a702a8f..580ebd0da 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
@@ -36,6 +36,9 @@ public class ScriptEngineUtil {
public static ScriptEngine createScriptEngine(String engineName, String serviceType) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> ScriptEngineUtil.createScriptEngine(engineName=" + engineName + ", serviceType=" + serviceType + ")");
+ }
ScriptEngine ret = null;
try {
@@ -58,9 +61,10 @@ public class ScriptEngineUtil {
LOG.error("RangerScriptConditionEvaluator.init() failed", exp);
}
+ LOG.debug((ret == null ? " Failed to create " : " Created ") + "Script Engine '" + engineName + "' in a default manner.");
+
if (ret == null) {
- LOG.warn("failed to initialize script engine '" + engineName + "' in a default manner." +
- " Will try to get script-engine from plugin-class-loader");
+ LOG.warn("Will try to get script-engine from plugin-class-loader for service-type:[" + serviceType + "]");
RangerPluginClassLoader pluginClassLoader;
@@ -76,7 +80,9 @@ public class ScriptEngineUtil {
LOG.error("RangerScriptConditionEvaluator.init() failed", exp);
}
}
-
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== ScriptEngineUtil.createScriptEngine(engineName=" + engineName + ", serviceType=" + serviceType + ") : ret=" + ret);
+ }
return ret;
}
}
diff --git a/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoader.java b/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoader.java
index 7ed776ecb..a2c744711 100644
--- a/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoader.java
+++ b/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoader.java
@@ -19,7 +19,6 @@
package org.apache.ranger.plugin.classloader;
-import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.security.AccessController;
@@ -43,6 +42,8 @@ import javax.script.ScriptEngineManager;
public class RangerPluginClassLoader extends URLClassLoader {
private static final Logger LOG = LoggerFactory.getLogger(RangerPluginClassLoader.class);
+ private static final String TAG_SERVICE_TYPE = "tag";
+
private static final Map<String, RangerPluginClassLoader> pluginClassLoaders = new HashMap<>();
private final MyClassLoader componentClassLoader;
@@ -52,12 +53,8 @@ public class RangerPluginClassLoader extends URLClassLoader {
super(RangerPluginClassLoaderUtil.getInstance().getPluginFilesForServiceTypeAndPluginclass(pluginType, pluginClass), null);
componentClassLoader = AccessController.doPrivileged(
- new PrivilegedAction<MyClassLoader>() {
- public MyClassLoader run() {
- return new MyClassLoader(Thread.currentThread().getContextClassLoader());
- }
- }
- );
+ (PrivilegedAction<MyClassLoader>) () -> new MyClassLoader(Thread.currentThread().getContextClassLoader())
+ );
}
public static RangerPluginClassLoader getInstance(final String pluginType, final Class<?> pluginClass ) throws Exception {
@@ -70,12 +67,8 @@ public class RangerPluginClassLoader extends URLClassLoader {
if (ret == null) {
if (pluginClass != null) {
ret = AccessController.doPrivileged(
- new PrivilegedExceptionAction<RangerPluginClassLoader>() {
- public RangerPluginClassLoader run() throws Exception {
- return new RangerPluginClassLoader(pluginType, pluginClass);
- }
- }
- );
+ (PrivilegedExceptionAction<RangerPluginClassLoader>) () -> new RangerPluginClassLoader(pluginType, pluginClass)
+ );
} else if (pluginType == null) { // let us pick an existing entry from pluginClassLoaders
if (!pluginClassLoaders.isEmpty()) {
// to be predictable, sort the keys
@@ -87,12 +80,16 @@ public class RangerPluginClassLoader extends URLClassLoader {
ret = pluginClassLoaders.get(pluginTypeToUse);
- LOG.info("RangerPluginClassLoader.getInstance(pluginType={}): using classLoader for pluginType={}", pluginType, pluginTypeToUse);
+ LOG.info("RangerPluginClassLoader.getInstance(pluginType=null): using classLoader for pluginType={}", pluginTypeToUse);
}
}
if (ret != null) {
pluginClassLoaders.put(pluginType, ret);
+
+ if (pluginType != null && !pluginType.equals(TAG_SERVICE_TYPE)) {
+ pluginClassLoaders.put(TAG_SERVICE_TYPE, ret);
+ }
}
}
}
@@ -117,7 +114,7 @@ public class RangerPluginClassLoader extends URLClassLoader {
ret = super.findClass(name);
} catch( Throwable e ) {
- // Use the Component ClassLoader findclass to load when childClassLoader fails to find
+ // Use the Component ClassLoader findClass to load when childClassLoader fails to find
if (LOG.isDebugEnabled()) {
LOG.debug("RangerPluginClassLoader.findClass(" + name + "): calling componentClassLoader.findClass()");
}
@@ -199,7 +196,7 @@ public class RangerPluginClassLoader extends URLClassLoader {
}
@Override
- public Enumeration<URL> findResources(String name) throws IOException {
+ public Enumeration<URL> findResources(String name) {
final Enumeration<URL> ret;
if (LOG.isDebugEnabled()) {
@@ -315,12 +312,12 @@ public class RangerPluginClassLoader extends URLClassLoader {
}
@Override
- public Class<?> findClass(String name) throws ClassNotFoundException { //NOPMD
+ public Class<?> findClass(String name) throws ClassNotFoundException { //NO PMD
return super.findClass(name);
}
}
- static class MergeEnumeration implements Enumeration<URL> { //NOPMD
+ static class MergeEnumeration implements Enumeration<URL> { //NO PMD
final Enumeration<URL> e1;
final Enumeration<URL> e2;
@@ -361,7 +358,15 @@ public class RangerPluginClassLoader extends URLClassLoader {
}
}
- ScriptEngineManager manager = classLoader != null ? new ScriptEngineManager(classLoader) : new ScriptEngineManager();
+ ScriptEngineManager manager;
+
+ if (classLoader != null) {
+ LOG.debug("Creating a ScriptEngineManager with a classloader:[" + classLoader + "]");
+ manager = new ScriptEngineManager(classLoader);
+ } else {
+ LOG.debug("Creating a ScriptEngineManager without a classloader");
+ manager = new ScriptEngineManager();
+ }
if (LOG.isDebugEnabled()) {
List<ScriptEngineFactory> factories = manager.getEngineFactories();
@@ -378,10 +383,10 @@ public class RangerPluginClassLoader extends URLClassLoader {
final ScriptEngine ret = manager.getEngineByName(engineName);
if (ret == null) {
- LOG.error("scriptEngine for JavaScript is null!!");
+ LOG.error("scriptEngine for '" + engineName + "' is null!!");
} else {
if (LOG.isDebugEnabled()) {
- LOG.debug("scriptEngine for JavaScript:[" + ret + "]");
+ LOG.debug("scriptEngine for '" + engineName + "':[" + ret + "]");
}
}