From 06ff1b69c76713d0ea3b82fb6b8890a3b70205f2 Mon Sep 17 00:00:00 2001 From: Cheng Pan Date: Thu, 20 Feb 2025 07:46:16 +0800 Subject: [PATCH] YARN-11384: NPE in DelegationTokenRenewer causes all subsequent apps to fail with "Timer already cancelled" (#7404) Contributed by Cheng Pan. Reviewed-by: Shilun Fan Signed-off-by: Shilun Fan --- .../resourcemanager/security/DelegationTokenRenewer.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/DelegationTokenRenewer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/DelegationTokenRenewer.java index be95572f92a3b..8e1214afc8095 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/DelegationTokenRenewer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/DelegationTokenRenewer.java @@ -807,10 +807,13 @@ private void cancelToken(DelegationTokenToRenew t) { private void removeFailedDelegationToken(DelegationTokenToRenew t) { Collection applicationIds = t.referringAppIds; synchronized (applicationIds) { - LOG.error("removing failed delegation token for appid=" + applicationIds - + ";t=" + t.token.getService()); + LOG.error("removing failed delegation token for appid={};t={}", + applicationIds, t.token.getService()); for (ApplicationId applicationId : applicationIds) { - appTokens.get(applicationId).remove(t); + Set tokens = appTokens.get(applicationId); + if (tokens != null && !tokens.isEmpty()) { + tokens.remove(t); + } } } allTokens.remove(t.token);