Repository: hive Updated Branches: refs/heads/branch-3 c8d5ae689 -> 9f9b1e9b2
HIVE-20118: SessionStateUserAuthenticator.getGroupNames() is always empty (Daniel Dai, reviewed by Thejas Nair) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/9f9b1e9b Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9f9b1e9b Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9f9b1e9b Branch: refs/heads/branch-3 Commit: 9f9b1e9b283dd9e186805c2c4b920e920d4e560d Parents: c8d5ae6 Author: Daniel Dai <dai...@gmail.com> Authored: Fri Aug 3 15:44:11 2018 -0700 Committer: Daniel Dai <dai...@gmail.com> Committed: Fri Aug 3 15:44:11 2018 -0700 ---------------------------------------------------------------------- .../hive/ql/security/SessionStateUserAuthenticator.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/9f9b1e9b/ql/src/java/org/apache/hadoop/hive/ql/security/SessionStateUserAuthenticator.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/SessionStateUserAuthenticator.java b/ql/src/java/org/apache/hadoop/hive/ql/security/SessionStateUserAuthenticator.java index 3bf990a..1ded295 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/security/SessionStateUserAuthenticator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/security/SessionStateUserAuthenticator.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.session.SessionState; +import org.apache.hadoop.security.UserGroupInformation; /** * Authenticator that returns the userName set in SessionState. For use when authorizing with HS2 @@ -35,10 +36,14 @@ public class SessionStateUserAuthenticator implements HiveAuthenticationProvider protected Configuration conf; private SessionState sessionState; + private List<String> groups; @Override public List<String> getGroupNames() { - return groupNames; + if (groups == null) { + groups = UserGroupInformation.createRemoteUser(sessionState.getUserName()).getGroups(); + } + return groups; } @Override