You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by zh...@apache.org on 2015/01/29 19:06:09 UTC
[26/34] hadoop git commit: YARN-3103. AMRMClientImpl does not update
AMRM token properly. Contributed by Jason Lowe
YARN-3103. AMRMClientImpl does not update AMRM token properly. Contributed by Jason Lowe
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/620dd747
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/620dd747
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/620dd747
Branch: refs/heads/HDFS-EC
Commit: 620dd747fe8652a957493932f2035241f29ea15d
Parents: 5227f6f
Author: Jian He <ji...@apache.org>
Authored: Wed Jan 28 15:23:13 2015 -0800
Committer: Zhe Zhang <zh...@apache.org>
Committed: Thu Jan 29 10:05:26 2015 -0800
----------------------------------------------------------------------
hadoop-yarn-project/CHANGES.txt | 3 +++
.../hadoop/yarn/client/api/impl/AMRMClientImpl.java | 8 ++++----
.../hadoop/yarn/client/api/impl/TestAMRMClient.java | 14 +++++++++++---
3 files changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/620dd747/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 225e126..3f56cfc 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -431,6 +431,9 @@ Release 2.7.0 - UNRELEASED
YARN-3011. Possible IllegalArgumentException in ResourceLocalizationService
might lead NM to crash. (Varun Saxena via jianhe)
+ YARN-3103. AMRMClientImpl does not update AMRM token properly. (Jason Lowe
+ via jianhe)
+
Release 2.6.0 - 2014-11-18
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/620dd747/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java
index 3cf18ba..ab8aaa8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java
@@ -755,11 +755,11 @@ public class AMRMClientImpl<T extends ContainerRequest> extends AMRMClient<T> {
new org.apache.hadoop.security.token.Token<AMRMTokenIdentifier>(token
.getIdentifier().array(), token.getPassword().array(), new Text(
token.getKind()), new Text(token.getService()));
- amrmToken.setService(ClientRMProxy.getAMRMTokenService(getConfig()));
+ // Preserve the token service sent by the RM when adding the token
+ // to ensure we replace the previous token setup by the RM.
+ // Afterwards we can update the service address for the RPC layer.
UserGroupInformation currentUGI = UserGroupInformation.getCurrentUser();
- if (UserGroupInformation.isSecurityEnabled()) {
- currentUGI = UserGroupInformation.getLoginUser();
- }
currentUGI.addToken(amrmToken);
+ amrmToken.setService(ClientRMProxy.getAMRMTokenService(getConfig()));
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/620dd747/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
index e24b5f6..3c6918c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
@@ -200,8 +200,11 @@ public class TestAMRMClient {
// of testing.
UserGroupInformation.setLoginUser(UserGroupInformation
.createRemoteUser(UserGroupInformation.getCurrentUser().getUserName()));
- appAttempt.getAMRMToken().setService(ClientRMProxy.getAMRMTokenService(conf));
+
+ // emulate RM setup of AMRM token in credentials by adding the token
+ // *before* setting the token service
UserGroupInformation.getCurrentUser().addToken(appAttempt.getAMRMToken());
+ appAttempt.getAMRMToken().setService(ClientRMProxy.getAMRMTokenService(conf));
}
@After
@@ -1026,13 +1029,18 @@ public class TestAMRMClient {
UserGroupInformation.getCurrentUser().getCredentials();
Iterator<org.apache.hadoop.security.token.Token<?>> iter =
credentials.getAllTokens().iterator();
+ org.apache.hadoop.security.token.Token<AMRMTokenIdentifier> result = null;
while (iter.hasNext()) {
org.apache.hadoop.security.token.Token<?> token = iter.next();
if (token.getKind().equals(AMRMTokenIdentifier.KIND_NAME)) {
- return (org.apache.hadoop.security.token.Token<AMRMTokenIdentifier>)
+ if (result != null) {
+ Assert.fail("credentials has more than one AMRM token."
+ + " token1: " + result + " token2: " + token);
+ }
+ result = (org.apache.hadoop.security.token.Token<AMRMTokenIdentifier>)
token;
}
}
- return null;
+ return result;
}
}