YARN-4246. NPE while listing app attempt. (Nijel S F via rohithsharmaks)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b57f08c0 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b57f08c0 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b57f08c0 Branch: refs/heads/HDFS-8966 Commit: b57f08c0d2dae57b545a3baa213e18464060ae3b Parents: 1aa735c Author: Rohith Sharma K S <rohithsharm...@apache.org> Authored: Mon Oct 26 11:56:36 2015 +0530 Committer: Rohith Sharma K S <rohithsharm...@apache.org> Committed: Mon Oct 26 11:56:36 2015 +0530 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 2 ++ .../hadoop/yarn/client/cli/ApplicationCLI.java | 6 +++-- .../hadoop/yarn/client/cli/TestYarnCLI.java | 23 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b57f08c0/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 0169163..192843e 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -997,6 +997,8 @@ Release 2.8.0 - UNRELEASED YARN-3724. Use POSIX nftw(3) instead of fts(3) (Alan Burlison via aw) + YARN-4246. NPE while listing app attempt. (Nijel S F via rohithsharmaks) + Release 2.7.2 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/b57f08c0/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java index e34675a..b486074 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java @@ -349,8 +349,9 @@ public class ApplicationCLI extends YarnCLI { appAttemptReportStr.println(appAttemptReport .getYarnApplicationAttemptState()); appAttemptReportStr.print("\tAMContainer : "); - appAttemptReportStr.println(appAttemptReport.getAMContainerId() - .toString()); + appAttemptReportStr + .println(appAttemptReport.getAMContainerId() == null ? "N/A" + : appAttemptReport.getAMContainerId().toString()); appAttemptReportStr.print("\tTracking-URL : "); appAttemptReportStr.println(appAttemptReport.getTrackingUrl()); appAttemptReportStr.print("\tRPC Port : "); @@ -667,6 +668,7 @@ public class ApplicationCLI extends YarnCLI { writer.printf(APPLICATION_ATTEMPTS_PATTERN, appAttemptReport .getApplicationAttemptId(), appAttemptReport .getYarnApplicationAttemptState(), appAttemptReport + .getAMContainerId() == null ? "N/A" : appAttemptReport .getAMContainerId().toString(), appAttemptReport.getTrackingUrl()); } writer.flush(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/b57f08c0/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java index 069ff7d..3dab504 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java @@ -1590,4 +1590,27 @@ public class TestYarnCLI { private static String normalize(String s) { return SPACES_PATTERN.matcher(s).replaceAll(" "); // single space } + + @Test + public void testAppAttemptReportWhileContainerIsNotAssigned() + throws Exception { + ApplicationCLI cli = createAndGetAppCLI(); + ApplicationId applicationId = ApplicationId.newInstance(1234, 5); + ApplicationAttemptId attemptId = + ApplicationAttemptId.newInstance(applicationId, 1); + ApplicationAttemptReport attemptReport = + ApplicationAttemptReport.newInstance(attemptId, "host", 124, "url", + "oUrl", "diagnostics", YarnApplicationAttemptState.SCHEDULED, null, + 1000l, 2000l); + when(client.getApplicationAttemptReport(any(ApplicationAttemptId.class))) + .thenReturn(attemptReport); + int result = + cli.run(new String[] { "applicationattempt", "-status", + attemptId.toString() }); + assertEquals(0, result); + result = + cli.run(new String[] { "applicationattempt", "-list", + applicationId.toString() }); + assertEquals(0, result); + } }