diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java index 1be1727..d1a856b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java @@ -735,7 +735,8 @@ public float getProgress() { // Clear and get current values List finishedContainers = justFinishedContainers.put - (nodeId, new ArrayList()); + (nodeId, + Collections.synchronizedList(new ArrayList())); if (keepContainersAcressAttempts) { returnList.addAll(finishedContainers); @@ -749,8 +750,8 @@ public float getProgress() { } } - finishedContainersSentToAM.putIfAbsent(nodeId, new ArrayList - ()); + finishedContainersSentToAM.putIfAbsent(nodeId, + Collections.synchronizedList(new ArrayList())); finishedContainersSentToAM.get(nodeId).addAll(finishedContainers); } @@ -1666,7 +1667,7 @@ private void sendFinishedContainersToNM() { // Clear and get current values List currentSentContainers = finishedContainersSentToAM.put(nodeId, - new ArrayList()); + Collections.synchronizedList(new ArrayList())); List containerIdList = new ArrayList(currentSentContainers.size()); for (ContainerStatus containerStatus : currentSentContainers) { @@ -1683,7 +1684,7 @@ private void sendAMContainerToNM(RMAppAttemptImpl appAttempt, RMAppAttemptContainerFinishedEvent containerFinishedEvent) { NodeId nodeId = containerFinishedEvent.getNodeId(); finishedContainersSentToAM.putIfAbsent(nodeId, - new ArrayList()); + Collections.synchronizedList(new ArrayList())); appAttempt.finishedContainersSentToAM.get(nodeId).add( containerFinishedEvent.getContainerStatus()); if (!appAttempt.getSubmissionContext() @@ -1695,7 +1696,8 @@ private void sendAMContainerToNM(RMAppAttemptImpl appAttempt, private static void addJustFinishedContainer(RMAppAttemptImpl appAttempt, RMAppAttemptContainerFinishedEvent containerFinishedEvent) { appAttempt.justFinishedContainers.putIfAbsent(containerFinishedEvent - .getNodeId(), new ArrayList()); + .getNodeId(), + Collections.synchronizedList(new ArrayList())); appAttempt.justFinishedContainers.get(containerFinishedEvent .getNodeId()).add(containerFinishedEvent.getContainerStatus()); }