Explorar o código

YARN-7630. Fix AMRMToken rollover handling in AMRMProxy. Contributed by Botong Huang.

(cherry picked from commit 17ba74be29193ac15474f73baaaf4e647a95078b)
(cherry picked from commit 8d3d7fa1c5fda4ec394b2f64baf1008e7b0d9524)
Subru Krishnan %!s(int64=7) %!d(string=hai) anos
pai
achega
2b77729fdf

+ 5 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/utils/AMRMClientUtils.java

@@ -163,8 +163,12 @@ public final class AMRMClientUtils {
       LOG.info("Creating RMProxy to RM {} for protocol {} for user {}",
           rmClusterId, protocol.getSimpleName(), user);
       if (token != null) {
-        token.setService(ClientRMProxy.getAMRMTokenService(configuration));
+        // 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.
+        // Same as YarnServerSecurityUtils.updateAMRMToken()
         user.addToken(token);
+        token.setService(ClientRMProxy.getAMRMTokenService(configuration));
         setAuthModeInConf(configuration);
       }
       final T proxyConnection = user.doAs(new PrivilegedExceptionAction<T>() {