Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java (revision 1540978) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java (working copy) @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -238,7 +239,10 @@ if (null == liveContainers.remove(rmContainer.getContainerId())) { return false; } - + + // Remove from the list of newly allocated containers if found + removeFromNewlyAllocatedContainers(rmContainer); + Container container = rmContainer.getContainer(); ContainerId containerId = container.getId(); @@ -265,7 +269,20 @@ return true; } + + synchronized private void removeFromNewlyAllocatedContainers( + RMContainer container) { + for (Iterator itr = newlyAllocatedContainers.iterator(); itr + .hasNext();) { + RMContainer rmContainer = itr.next(); + if (rmContainer.equals(container)) { + itr.remove(); + return; + } + } + } + synchronized public RMContainer allocate(NodeType type, FiCaSchedulerNode node, Priority priority, ResourceRequest request, Container container) {