YARN-2242. Improve exception information on AM launch crashes. (Contributed by Li Lu)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1607655 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1def6cde1f
commit
5cb489f9d3
|
@ -26,6 +26,9 @@ Release 2.6.0 - UNRELEASED
|
||||||
|
|
||||||
IMPROVEMENTS
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
YARN-2242. Improve exception information on AM launch crashes. (Li Lu
|
||||||
|
via junping_du)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
|
@ -1273,14 +1273,14 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||||
this.amContainerExitStatus = status.getExitStatus();
|
this.amContainerExitStatus = status.getExitStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getAMContainerCrashedDiagnostics(
|
private String getAMContainerCrashedDiagnostics(
|
||||||
RMAppAttemptContainerFinishedEvent finishEvent) {
|
RMAppAttemptContainerFinishedEvent finishEvent) {
|
||||||
ContainerStatus status = finishEvent.getContainerStatus();
|
ContainerStatus status = finishEvent.getContainerStatus();
|
||||||
String diagnostics =
|
String diagnostics =
|
||||||
"AM Container for " + finishEvent.getApplicationAttemptId()
|
"AM Container for " + finishEvent.getApplicationAttemptId()
|
||||||
+ " exited with " + " exitCode: " + status.getExitStatus()
|
+ " exited with " + " exitCode: " + status.getExitStatus() + ". "
|
||||||
+ " due to: " + status.getDiagnostics() + "."
|
+ "Check application tracking page: " + this.getTrackingUrl()
|
||||||
+ "Failing this attempt.";
|
+ " . Then, click on links to logs of each attempt for detailed output. ";
|
||||||
return diagnostics;
|
return diagnostics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -820,6 +820,7 @@ public class TestRMAppAttemptTransitions {
|
||||||
applicationAttempt.getAppAttemptState());
|
applicationAttempt.getAppAttemptState());
|
||||||
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
|
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
|
||||||
verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
|
verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
|
||||||
|
verifyAMCrashAtAllocatedDiagnosticInfo(applicationAttempt.getDiagnostics());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -1237,6 +1238,13 @@ public class TestRMAppAttemptTransitions {
|
||||||
verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
|
verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void verifyAMCrashAtAllocatedDiagnosticInfo(String diagnostics) {
|
||||||
|
assertTrue("Diagnostic information does not contain application proxy URL",
|
||||||
|
diagnostics.contains(applicationAttempt.getWebProxyBase()));
|
||||||
|
assertTrue("Diagnostic information does not point the logs to the users",
|
||||||
|
diagnostics.contains("logs"));
|
||||||
|
}
|
||||||
|
|
||||||
private void verifyTokenCount(ApplicationAttemptId appAttemptId, int count) {
|
private void verifyTokenCount(ApplicationAttemptId appAttemptId, int count) {
|
||||||
verify(amRMTokenManager, times(count)).applicationMasterFinished(appAttemptId);
|
verify(amRMTokenManager, times(count)).applicationMasterFinished(appAttemptId);
|
||||||
if (UserGroupInformation.isSecurityEnabled()) {
|
if (UserGroupInformation.isSecurityEnabled()) {
|
||||||
|
|
Loading…
Reference in New Issue