diff --git ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java index 43286659e3..5fc9c37f49 100644 --- ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java +++ ql/src/java/org/apache/hadoop/hive/ql/QueryPlan.java @@ -56,6 +56,7 @@ import org.apache.hadoop.hive.ql.plan.api.AdjacencyType; import org.apache.hadoop.hive.ql.plan.api.NodeType; import org.apache.hadoop.hive.ql.plan.api.TaskType; +import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.thrift.TException; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TJSONProtocol; @@ -197,8 +198,15 @@ public String getQueryId() { } public static String makeQueryId() { + SessionState sessionState = SessionState.get(); + String userid = null; + if (sessionState != null) { + userid = sessionState.getUser(); + } + if (userid == null) { + userid = System.getProperty("user.name"); + } GregorianCalendar gc = new GregorianCalendar(); - String userid = System.getProperty("user.name"); return userid + "_" diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java index 854bc89e9c..10e89cc303 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezTask.java @@ -161,7 +161,7 @@ public int execute() { // We only need a username for UGI to use for groups; getGroups will fetch the groups // based on Hadoop configuration, as documented at // https://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/GroupsMapping.html - String userName = getUserNameForGroups(ss); + String userName = ss.getUser(); List groups = null; if (userName == null) { userName = "anonymous"; @@ -342,15 +342,6 @@ private void updateNumRows() { } } - private String getUserNameForGroups(SessionState ss) { - // This should be removed when authenticator and the 2-username mess is cleaned up. - if (ss.getAuthenticator() != null) { - String userName = ss.getAuthenticator().getUserName(); - if (userName != null) return userName; - } - return ss.getUserName(); - } - private void closeDagClientOnCancellation(DAGClient dagClient) { try { dagClient.tryKillDAG(); diff --git ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 6c6138ef56..036331d75b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -1283,6 +1283,18 @@ public static LogHelper getConsole() { return _console; } + /** + * Get the user name from the authenticator or the name set by SessionState constructor. + * This should be removed when authenticator and the 2-username mess is cleaned up. + */ + public String getUser() { + String userFromAuthenticator = getUserFromAuthenticator(); + if (userFromAuthenticator == null) { + return getUserName(); + } + return userFromAuthenticator; + } + /** * * @return username from current SessionState authenticator. username will be @@ -1290,15 +1302,17 @@ public static LogHelper getConsole() { * null. */ public static String getUserFromAuthenticator() { - if (SessionState.get() != null && SessionState.get().getAuthenticator() != null) { - return SessionState.get().getAuthenticator().getUserName(); + SessionState sessionState = SessionState.get(); + if (sessionState != null && sessionState.getAuthenticator() != null) { + return sessionState.getAuthenticator().getUserName(); } return null; } public static List getGroupsFromAuthenticator() { - if (SessionState.get() != null && SessionState.get().getAuthenticator() != null) { - return SessionState.get().getAuthenticator().getGroupNames(); + SessionState sessionState = SessionState.get(); + if (sessionState != null && sessionState.getAuthenticator() != null) { + return sessionState.getAuthenticator().getGroupNames(); } return null; }