Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
None
-
None
Description
When application is submitted with "ApplicationSubmissionContext.getKeepContainersAcrossApplicationAttempts() == true", and NM is restarted with containers running, wrong NMToken is issued to AM through RegisterApplicationMasterResponse.
See the NM log:
2014-07-30 11:59:58,941 ERROR org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl: Unauthorized request to start container.- NMToken for application attempt : appattempt_1406691610864_0002_000001 was used for starting container with container token issued for application attempt : appattempt_1406691610864_0002_000002
The reason is in below code:
createAndGetNMToken(String applicationSubmitter,
ApplicationAttemptId appAttemptId, Container container) {
......
Token token =
createNMToken(container.getId().getApplicationAttemptId(),
container.getNodeId(), applicationSubmitter);
......
}
"appAttemptId" instead of "container.getId().getApplicationAttemptId()" should be passed to "createNMToken".