From 7470bbcb74cae360c58840a9f2eadbba21718d3b Mon Sep 17 00:00:00 2001 From: Syed Shameerur Rahman Date: Mon, 8 Sep 2025 12:57:22 +0530 Subject: [PATCH] YARN-11838: YARN ConcurrentModificationException When Refreshing Node Attributes --- .../nodelabels/NodeAttributesManagerImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NodeAttributesManagerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NodeAttributesManagerImpl.java index 2b7561367033a..c8f7a1f5df787 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NodeAttributesManagerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NodeAttributesManagerImpl.java @@ -741,7 +741,14 @@ public void refreshNodeAttributesToScheduler(NodeId nodeId) { if (host == null || host.attributes == null) { return; } - newNodeToAttributesMap.put(hostName, host.attributes.keySet()); + // Use read lock and create defensive copy since + // other threads might access host.attributes + readLock.lock(); + try { + newNodeToAttributesMap.put(hostName, new HashSet<>(host.attributes.keySet())); + } finally { + readLock.unlock(); + } // Notify RM if (rmContext != null && rmContext.getDispatcher() != null) {