diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/UsersManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/UsersManager.java index 7287c5b..f38ea1c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/UsersManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/UsersManager.java @@ -490,8 +490,7 @@ public Resource getComputedResourceLimitForActiveUsers(String userName, Resource clusterResource, String nodePartition, SchedulingMode schedulingMode) { - Map userLimitPerSchedulingMode = preComputedActiveUserLimit - .get(nodePartition); + Map userLimitPerSchedulingMode = null; try { writeLock.lock(); @@ -507,6 +506,10 @@ public Resource getComputedResourceLimitForActiveUsers(String userName, } finally { writeLock.unlock(); } + if (userLimitPerSchedulingMode == null) { + userLimitPerSchedulingMode = + preComputedActiveUserLimit.get(nodePartition); + } Resource userLimitResource = userLimitPerSchedulingMode.get(schedulingMode); User user = getUser(userName); @@ -548,8 +551,7 @@ public Resource getComputedResourceLimitForAllUsers(String userName, Resource clusterResource, String nodePartition, SchedulingMode schedulingMode) { - Map userLimitPerSchedulingMode = preComputedAllUserLimit - .get(nodePartition); + Map userLimitPerSchedulingMode = null; try { writeLock.lock(); @@ -565,6 +567,10 @@ public Resource getComputedResourceLimitForAllUsers(String userName, } finally { writeLock.unlock(); } + if (userLimitPerSchedulingMode == null) { + userLimitPerSchedulingMode = + preComputedActiveUserLimit.get(nodePartition); + } Resource userLimitResource = userLimitPerSchedulingMode.get(schedulingMode); User user = getUser(userName);