Author: junping_du
Date: Tue Jul 22 13:07:23 2014
New Revision: 1612565
URL: http://svn.apache.org/r1612565
Log:
YARN-2242. Addendum patch. Improve exception information on AM launch crashes.
(Contributed by Li Lu)
Modified:
hadoop/common/trunk/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
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java
Modified:
hadoop/common/trunk/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
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/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?rev=1612565&r1=1612564&r2=1612565&view=diff
==============================================================================
---
hadoop/common/trunk/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
(original)
+++
hadoop/common/trunk/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
Tue Jul 22 13:07:23 2014
@@ -1294,12 +1294,20 @@ public class RMAppAttemptImpl implements
private String getAMContainerCrashedDiagnostics(
RMAppAttemptContainerFinishedEvent finishEvent) {
ContainerStatus status = finishEvent.getContainerStatus();
- String diagnostics =
- "AM Container for " + finishEvent.getApplicationAttemptId()
- + " exited with " + " exitCode: " + status.getExitStatus() + ". "
- + "Check application tracking page: " + this.getTrackingUrl()
- + " . Then, click on links to logs of each attempt for detailed
output. ";
- return diagnostics;
+ StringBuilder diagnosticsBuilder = new StringBuilder();
+ diagnosticsBuilder.append("AM Container for ").append(
+ finishEvent.getApplicationAttemptId()).append(
+ " exited with ").append(" exitCode: ").append(status.getExitStatus()).
+ append("\n");
+ if (this.getTrackingUrl() != null) {
+ diagnosticsBuilder.append("For more detailed output,").append(
+ " check application tracking page:").append(
+ this.getTrackingUrl()).append(
+ "Then, click on links to logs of each attempt.\n");
+ }
+ diagnosticsBuilder.append("Diagnostics: ").append(status.getDiagnostics())
+ .append("Failing this attempt");
+ return diagnosticsBuilder.toString();
}
private static class FinalTransition extends BaseFinalTransition {
Modified:
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java?rev=1612565&r1=1612564&r2=1612565&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java
(original)
+++
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/TestRMAppAttemptTransitions.java
Tue Jul 22 13:07:23 2014
@@ -823,7 +823,9 @@ public class TestRMAppAttemptTransitions
applicationAttempt.getAppAttemptState());
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
-
verifyAMCrashAtAllocatedDiagnosticInfo(applicationAttempt.getDiagnostics());
+ boolean shouldCheckURL = (applicationAttempt.getTrackingUrl() != null);
+ verifyAMCrashAtAllocatedDiagnosticInfo(applicationAttempt.getDiagnostics(),
+ exitCode, shouldCheckURL);
}
@Test
@@ -1241,11 +1243,18 @@ public class TestRMAppAttemptTransitions
verifyApplicationAttemptFinished(RMAppAttemptState.FAILED);
}
- private void verifyAMCrashAtAllocatedDiagnosticInfo(String diagnostics) {
- assertTrue("Diagnostic information does not contain application proxy URL",
- diagnostics.contains(applicationAttempt.getWebProxyBase()));
+ private void verifyAMCrashAtAllocatedDiagnosticInfo(String diagnostics,
+ int exitCode, boolean shouldCheckURL) {
assertTrue("Diagnostic information does not point the logs to the users",
diagnostics.contains("logs"));
+ assertTrue("Diagnostic information does not contain application attempt
id",
+ diagnostics.contains(applicationAttempt.getAppAttemptId().toString()));
+ assertTrue("Diagnostic information does not contain application exit code",
+ diagnostics.contains("exitCode: " + exitCode));
+ if (shouldCheckURL) {
+ assertTrue("Diagnostic information does not contain application proxy
URL",
+ diagnostics.contains(applicationAttempt.getWebProxyBase()));
+ }
}
private void verifyTokenCount(ApplicationAttemptId appAttemptId, int count) {