YARN-5083. YARN CLI for AM logs does not give any error message if entered invalid am value. Contributed by Jian He.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e14ee0d3 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e14ee0d3 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e14ee0d3 Branch: refs/heads/YARN-2915 Commit: e14ee0d3b55816bed1d27a8caf78001985119e3c Parents: cc6c265 Author: Junping Du <junping...@apache.org> Authored: Thu Jun 16 08:55:56 2016 -0700 Committer: Junping Du <junping...@apache.org> Committed: Thu Jun 16 08:55:56 2016 -0700 ---------------------------------------------------------------------- .../apache/hadoop/yarn/client/cli/LogsCLI.java | 7 +++++- .../hadoop/yarn/client/cli/TestLogsCLI.java | 23 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e14ee0d3/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java index ebd5428..d28c77c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/LogsCLI.java @@ -274,7 +274,7 @@ public class LogsCLI extends Configured implements Tool { formatter.printHelp("general options are:", options); } - private List<JSONObject> getAMContainerInfoForRMWebService( + protected List<JSONObject> getAMContainerInfoForRMWebService( Configuration conf, String appId) throws ClientHandlerException, UniformInterfaceException, JSONException { Client webServiceClient = Client.create(); @@ -538,6 +538,11 @@ public class LogsCLI extends Configured implements Tool { if (amContainerId <= requests.size()) { outputAMContainerLogs(requests.get(amContainerId - 1), conf, logCliHelper); + } else { + System.err.println(String.format("ERROR: Specified AM containerId" + + " (%s) exceeds the number of AM containers (%s).", + amContainerId, requests.size())); + return -1; } } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/e14ee0d3/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestLogsCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestLogsCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestLogsCLI.java index 10047e3..df1c6b7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestLogsCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestLogsCLI.java @@ -71,6 +71,7 @@ import org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat; import org.apache.hadoop.yarn.logaggregation.ContainerLogsRequest; import org.apache.hadoop.yarn.logaggregation.LogAggregationUtils; import org.apache.hadoop.yarn.logaggregation.LogCLIHelpers; +import org.codehaus.jettison.json.JSONObject; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -131,6 +132,28 @@ public class TestLogsCLI { assertTrue(sysErrStream.toString().startsWith("Invalid ApplicationId specified")); } + @Test(timeout = 5000L) + public void testInvalidAMContainerId() throws Exception { + Configuration conf = new YarnConfiguration(); + conf.setBoolean(YarnConfiguration.APPLICATION_HISTORY_ENABLED, true); + YarnClient mockYarnClient = + createMockYarnClient(YarnApplicationState.FINISHED, + UserGroupInformation.getCurrentUser().getShortUserName()); + LogsCLI cli = spy(new LogsCLIForTest(mockYarnClient)); + List<JSONObject> list = Arrays.asList(new JSONObject()); + doReturn(list).when(cli) + .getAMContainerInfoForRMWebService(any(Configuration.class), + any(String.class)); + cli.setConf(conf); + + int exitCode = cli.run( + new String[] {"-applicationId", "application_1465862913885_0027", + "-am", "1000" }); + assertTrue(exitCode == -1); + assertTrue(sysErrStream.toString() + .contains("exceeds the number of AM containers")); + } + @Test(timeout = 5000l) public void testUnknownApplicationId() throws Exception { Configuration conf = new YarnConfiguration(); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org