Explorar o código

YARN-7082. TestContainerManagerSecurity failing in trunk. Contributed by Akira Ajisaka

(cherry picked from commit ebb34c7053ee93296412591f83a776846765fda5)
Jason Lowe %!s(int64=7) %!d(string=hai) anos
pai
achega
44f8b2a630

+ 5 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseContainerTokenSecretManager.java

@@ -112,9 +112,11 @@ public class BaseContainerTokenSecretManager extends
   protected byte[] retrievePasswordInternal(ContainerTokenIdentifier identifier,
       MasterKeyData masterKey)
       throws org.apache.hadoop.security.token.SecretManager.InvalidToken {
-    LOG.debug("Retrieving password for {} for user {} to be run on NM {}",
-        identifier.getContainerID(), identifier.getUser(),
-        identifier.getNmHostAddress());
+    if (LOG.isDebugEnabled()) {
+      LOG.debug("Retrieving password for {} for user {} to be run on NM {}",
+          identifier.getContainerID(), identifier.getUser(),
+          identifier.getNmHostAddress());
+    }
     return createPassword(identifier.getBytes(), masterKey.getSecretKey());
   }
 

+ 7 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/ContainerTokenIdentifierForTest.java

@@ -24,6 +24,7 @@ import java.io.IOException;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.io.Text;
+import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.LogAggregationContext;
 import org.apache.hadoop.yarn.api.records.Priority;
@@ -121,6 +122,12 @@ public class ContainerTokenIdentifierForTest extends ContainerTokenIdentifier {
     return new ContainerIdPBImpl(proto.getContainerId());
   }
 
+  @Override
+  public UserGroupInformation getUser() {
+    final ContainerId containerId = getContainerID();
+    return UserGroupInformation.createRemoteUser(containerId.toString());
+  }
+
   public String getApplicationSubmitter() {
     return proto.getAppSubmitter();
   }