You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/11/09 07:13:08 UTC
[05/10] incubator-ranger git commit: Ranger-715:Fix issues reported
by coverity test in Ranger Plugin ClassLoader
Ranger-715:Fix issues reported by coverity test in Ranger Plugin ClassLoader
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/3e462d15
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/3e462d15
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/3e462d15
Branch: refs/heads/tag-policy
Commit: 3e462d15fe1b141e7ec90ed07cf03af8d418ef62
Parents: 433ab85
Author: rmani <rm...@hortonworks.com>
Authored: Mon Nov 2 16:33:00 2015 -0800
Committer: rmani <rm...@hortonworks.com>
Committed: Mon Nov 2 16:33:00 2015 -0800
----------------------------------------------------------------------
.../classloader/RangerPluginClassLoader.java | 34 +++++++++++++-------
1 file changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3e462d15/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoader.java
----------------------------------------------------------------------
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 eafcd27..23e16bf 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
@@ -22,11 +22,11 @@ package org.apache.ranger.plugin.classloader;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
import java.util.Enumeration;
-//import org.apache.commons.logging.Log;
-//import org.apache.commons.logging.LogFactory;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,24 +35,34 @@ public class RangerPluginClassLoader extends URLClassLoader {
private static volatile RangerPluginClassLoader me = null;
private static MyClassLoader componentClassLoader = null;
- //private static ThreadLocal<MyClassLoader> componentClassLoader = new ThreadLocal<MyClassLoader>();
public RangerPluginClassLoader(String pluginType, Class<?> pluginClass ) throws Exception {
super(RangerPluginClassLoaderUtil.getInstance().getPluginFilesForServiceTypeAndPluginclass(pluginType, pluginClass), null);
- //componentClassLoader.set(new MyClassLoader(Thread.currentThread().getContextClassLoader()));
- componentClassLoader = new MyClassLoader(Thread.currentThread().getContextClassLoader());
+ componentClassLoader = AccessController.doPrivileged(
+ new PrivilegedAction<MyClassLoader>() {
+ public MyClassLoader run() {
+ return new MyClassLoader(Thread.currentThread().getContextClassLoader());
+ }
+ }
+ );
}
- public static RangerPluginClassLoader getInstance(String pluginType, Class<?> pluginClass ) throws Exception {
+ public static RangerPluginClassLoader getInstance(final String pluginType, final Class<?> pluginClass ) throws Exception {
RangerPluginClassLoader ret = me;
if ( ret == null) {
synchronized(RangerPluginClassLoader.class) {
ret = me;
if ( ret == null){
- me = ret = new RangerPluginClassLoader(pluginType,pluginClass);
- }
- }
- }
+ me = ret = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<RangerPluginClassLoader>(){
+ public RangerPluginClassLoader run() throws Exception {
+ return new RangerPluginClassLoader(pluginType,pluginClass);
+ }
+ }
+ );
+ }
+ }
+ }
return ret;
}
@@ -263,7 +273,7 @@ public class RangerPluginClassLoader extends URLClassLoader {
}
}
- class MergeEnumeration implements Enumeration<URL> {
+ static class MergeEnumeration implements Enumeration<URL> {
Enumeration<URL> e1 = null;
Enumeration<URL> e2 = null;