HADOOP-10164. Allow UGI to login with a known Subject (bobby)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1552104 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Joseph Evans 2013-12-18 21:20:56 +00:00
parent 9184c4d179
commit c9d74139bc
2 changed files with 54 additions and 37 deletions

View File

@ -399,6 +399,8 @@ Release 2.4.0 - UNRELEASED
HADOOP-10168. fix javadoc of ReflectionUtils#copy. (Thejas Nair via suresh) HADOOP-10168. fix javadoc of ReflectionUtils#copy. (Thejas Nair via suresh)
HADOOP-10164. Allow UGI to login with a known Subject (bobby)
OPTIMIZATIONS OPTIMIZATIONS
HADOOP-9748. Reduce blocking on UGI.ensureInitialized (daryn) HADOOP-9748. Reduce blocking on UGI.ensureInitialized (daryn)

View File

@ -682,9 +682,26 @@ public static UserGroupInformation getUGIFromTicketCache(
public synchronized public synchronized
static UserGroupInformation getLoginUser() throws IOException { static UserGroupInformation getLoginUser() throws IOException {
if (loginUser == null) { if (loginUser == null) {
loginUserFromSubject(null);
}
return loginUser;
}
/**
* Log in a user using the given subject
* @parma subject the subject to use when logging in a user, or null to
* create a new subject.
* @throws IOException if login fails
*/
@InterfaceAudience.Public
@InterfaceStability.Evolving
public synchronized
static void loginUserFromSubject(Subject subject) throws IOException {
ensureInitialized(); ensureInitialized();
try { try {
Subject subject = new Subject(); if (subject == null) {
subject = new Subject();
}
LoginContext login = LoginContext login =
newLoginContext(authenticationMethod.getLoginAppName(), newLoginContext(authenticationMethod.getLoginAppName(),
subject, new HadoopConfiguration()); subject, new HadoopConfiguration());
@ -719,8 +736,6 @@ static UserGroupInformation getLoginUser() throws IOException {
LOG.debug("UGI loginUser:"+loginUser); LOG.debug("UGI loginUser:"+loginUser);
} }
} }
return loginUser;
}
@InterfaceAudience.Private @InterfaceAudience.Private
@InterfaceStability.Unstable @InterfaceStability.Unstable