Repository: hive Updated Branches: refs/heads/master a3cd4961d -> b02012f62
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/b02012f6 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/b02012f6 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/b02012f6 Branch: refs/heads/master Commit: b02012f6282094b2af2d66ec1973da6082fa48d8 Parents: a3cd496 Author: Daniel Dai <dai...@gmail.com> Authored: Fri Aug 3 15:44:45 2018 -0700 Committer: Daniel Dai <dai...@gmail.com> Committed: Fri Aug 3 15:44:45 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/b02012f6/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