diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/security/User.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/security/User.java index fd12e47..8ff4b21 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/security/User.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/security/User.java @@ -173,13 +173,15 @@ public abstract class User { */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static T runAsLoginUser(PrivilegedExceptionAction action) throws IOException { + return doAsUser(UserGroupInformation.getCurrentUser(), action); + } + + private static T doAsUser(UserGroupInformation ugi, + PrivilegedExceptionAction action) throws IOException { try { - Class c = Class.forName("org.apache.hadoop.security.SecurityUtil"); - Class [] types = new Class[]{PrivilegedExceptionAction.class}; - Object[] args = new Object[]{action}; - return (T) Methods.call(c, null, "doAsLoginUser", types, args); - } catch (Throwable e) { - throw new IOException(e); + return ugi.doAs(action); + } catch (InterruptedException ie) { + throw new IOException(ie); } }