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:
parent
703fa1b141
commit
b2e869f2a8
|
@ -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
|
||||
|
|
|
@ -1658,6 +1658,16 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
|||
}
|
||||
}
|
||||
|
||||
// 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 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
|||
new ArrayList<ContainerStatus>());
|
||||
appAttempt.finishedContainersSentToAM.get(nodeId).add(
|
||||
containerFinishedEvent.getContainerStatus());
|
||||
|
||||
if (!appAttempt.getSubmissionContext()
|
||||
.getKeepContainersAcrossApplicationAttempts()) {
|
||||
appAttempt.sendFinishedContainersToNM();
|
||||
} else {
|
||||
appAttempt.sendFinishedAMContainerToNM(nodeId,
|
||||
containerFinishedEvent.getContainerStatus().getContainerId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue