diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/FifoIntraQueuePreemptionPlugin.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/FifoIntraQueuePreemptionPlugin.java index 4bf6760..ad199a4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/FifoIntraQueuePreemptionPlugin.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/monitor/capacity/FifoIntraQueuePreemptionPlugin.java @@ -547,15 +547,17 @@ private Resource calculateUsedAMResourcesPerQueue(String partition, Collection runningApps = leafQueue.getApplications(); Resource amUsed = Resources.createResource(0, 0); - for (FiCaSchedulerApp app : runningApps) { - Resource userAMResource = perUserAMUsed.get(app.getUser()); - if (null == userAMResource) { - userAMResource = Resources.createResource(0, 0); - perUserAMUsed.put(app.getUser(), userAMResource); - } + synchronized (leafQueue) { + for (FiCaSchedulerApp app : runningApps) { + Resource userAMResource = perUserAMUsed.get(app.getUser()); + if (null == userAMResource) { + userAMResource = Resources.createResource(0, 0); + perUserAMUsed.put(app.getUser(), userAMResource); + } - Resources.addTo(userAMResource, app.getAMResource(partition)); - Resources.addTo(amUsed, app.getAMResource(partition)); + Resources.addTo(userAMResource, app.getAMResource(partition)); + Resources.addTo(amUsed, app.getAMResource(partition)); + } } return amUsed;