YARN-3987. Send AM container completed msg to NM once AM finishes. Contributed by sandflee

(cherry picked from commit 0a030546e2)
This commit is contained in:
Jian He 2015-08-13 16:20:36 -07:00
parent 703fa1b141
commit b2e869f2a8
2 changed files with 17 additions and 0 deletions

View File

@ -717,6 +717,9 @@ Release 2.8.0 - UNRELEASED
YARN-4047. ClientRMService getApplications has high scheduler lock contention.
(Jason Lowe via jianhe)
YARN-3987. Send AM container completed msg to NM once AM finishes.
(sandflee via jianhe)
Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -1658,6 +1658,16 @@ public RMAppAttemptState transition(RMAppAttemptImpl appAttempt,
}
}
// Ack NM to remove finished AM container, not waiting for
// new appattempt to pull am container complete msg, new appattempt
// may launch fail and leaves too many completed container in NM
private void sendFinishedAMContainerToNM(NodeId nodeId,
ContainerId containerId) {
List<ContainerId> containerIdList = new ArrayList<ContainerId>();
containerIdList.add(containerId);
eventHandler.handle(new RMNodeFinishedContainersPulledByAMEvent(
nodeId, containerIdList));
}
// Ack NM to remove finished containers from context.
private void sendFinishedContainersToNM() {
@ -1686,9 +1696,13 @@ private void sendAMContainerToNM(RMAppAttemptImpl appAttempt,
new ArrayList<ContainerStatus>());
appAttempt.finishedContainersSentToAM.get(nodeId).add(
containerFinishedEvent.getContainerStatus());
if (!appAttempt.getSubmissionContext()
.getKeepContainersAcrossApplicationAttempts()) {
appAttempt.sendFinishedContainersToNM();
} else {
appAttempt.sendFinishedAMContainerToNM(nodeId,
containerFinishedEvent.getContainerStatus().getContainerId());
}
}