Repository: hadoop Updated Branches: refs/heads/trunk 1bd44becb -> 69e1e6aee
HADOOP-15402. Prevent double logout of UGI's LoginContext Signed-off-by: Akira Ajisaka <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/69e1e6ae Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/69e1e6ae Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/69e1e6ae Branch: refs/heads/trunk Commit: 69e1e6aee6de79586d4c25486b7d51477972cd83 Parents: 1bd44be Author: Daryn Sharp <[email protected]> Authored: Wed Apr 25 17:05:42 2018 +0900 Committer: Akira Ajisaka <[email protected]> Committed: Wed Apr 25 17:05:42 2018 +0900 ---------------------------------------------------------------------- .../java/org/apache/hadoop/security/UserGroupInformation.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/69e1e6ae/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java index d0522a0..a9f6cb6 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java @@ -47,6 +47,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import javax.security.auth.DestroyFailedException; @@ -1843,6 +1844,7 @@ public class UserGroupInformation { private static class HadoopLoginContext extends LoginContext { private final String appName; private final HadoopConfiguration conf; + private AtomicBoolean isLoggedIn = new AtomicBoolean(); HadoopLoginContext(String appName, Subject subject, HadoopConfiguration conf) throws LoginException { @@ -1875,6 +1877,7 @@ public class UserGroupInformation { long start = Time.monotonicNow(); try { super.login(); + isLoggedIn.set(true); metric = metrics.loginSuccess; } finally { metric.add(Time.monotonicNow() - start); @@ -1885,8 +1888,7 @@ public class UserGroupInformation { @Override public void logout() throws LoginException { synchronized(getSubjectLock()) { - if (this.getSubject() != null - && !this.getSubject().getPrivateCredentials().isEmpty()) { + if (isLoggedIn.compareAndSet(true, false)) { super.logout(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
