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]

Reply via email to