You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cd...@apache.org on 2008/05/05 19:58:47 UTC
svn commit: r653540 - in /hadoop/core/trunk: CHANGES.txt
src/java/org/apache/hadoop/mapred/JobClient.java
src/java/org/apache/hadoop/util/GenericOptionsParser.java
src/test/org/apache/hadoop/util/TestGenericsUtil.java
Author: cdouglas
Date: Mon May 5 10:58:46 2008
New Revision: 653540
URL: http://svn.apache.org/viewvc?rev=653540&view=rev
Log:
HADOOP-3101. Prevent JobClient from throwing an exception when printing
usage. Contributed by Edward J. Yoon.
Modified:
hadoop/core/trunk/CHANGES.txt
hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java
hadoop/core/trunk/src/java/org/apache/hadoop/util/GenericOptionsParser.java
hadoop/core/trunk/src/test/org/apache/hadoop/util/TestGenericsUtil.java
Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=653540&r1=653539&r2=653540&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Mon May 5 10:58:46 2008
@@ -142,6 +142,9 @@
changed Writable serialization of DatanodeInfo. This patch handles it.
(Tsz Wo (Nicholas), SZE via rangadi)
+ HADOOP-3101. Prevent JobClient from throwing an exception when printing
+ usage. (Edward J. Yoon via cdouglas)
+
Release 0.17.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java?rev=653540&r1=653539&r2=653540&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/mapred/JobClient.java Mon May 5 10:58:46 2008
@@ -1199,23 +1199,42 @@
/**
* Display usage of the command-line tool and terminate execution
*/
- private void displayUsage() {
- System.out.printf("JobClient <command> <args>\n");
- System.out.printf("\t-submit\t<job-file>\n");
- System.out.printf("\t-status\t<job-id>\n");
- System.out.printf("\t-kill\t<job-id>\n");
- System.out.printf("\t-events\t<job-id> <from-event-#> <#-of-events>\n");
- System.out.printf("\t-history\t<jobOutputDir>\n");
- System.out.printf("\t-list\n");
- System.out.printf("\t-list\tall\n");
- System.out.printf("\t-kill-task <task-id>\n");
- System.out.printf("\t-fail-task <task-id>\n\n");
- ToolRunner.printGenericCommandUsage(System.out);
- throw new RuntimeException("JobClient: bad command-line arguments");
+ private void displayUsage(String cmd) {
+ String prefix = "Usage: JobClient ";
+ if("-submit".equals(cmd)) {
+ System.err.println(prefix + "[" + cmd + " <job-file>]");
+ } else if ("-status".equals(cmd) || "-kill".equals(cmd)) {
+ System.err.println(prefix + "[" + cmd + " <job-id>]");
+ } else if ("-events".equals(cmd)) {
+ System.err.println(prefix + "[" + cmd + " <job-id> <from-event-#> <#-of-events>]");
+ } else if ("-history".equals(cmd)) {
+ System.err.println(prefix + "[" + cmd + " <jobOutputDir>]");
+ } else if ("-list".equals(cmd)) {
+ System.err.println(prefix + "[" + cmd + " [all]]");
+ } else if ("-kill-task".equals(cmd) || "-fail-task".equals(cmd)) {
+ System.err.println(prefix + "[" + cmd + " <task-id>]");
+ } else {
+ System.err.printf(prefix + "<command> <args>\n");
+ System.err.printf("\t[-submit <job-file>]\n");
+ System.err.printf("\t[-status <job-id>]\n");
+ System.err.printf("\t[-kill <job-id>]\n");
+ System.err.printf("\t[-events <job-id> <from-event-#> <#-of-events>]\n");
+ System.err.printf("\t[-history <jobOutputDir>]\n");
+ System.err.printf("\t[-list [all]]\n");
+ System.err.printf("\t[-kill-task <task-id>]\n");
+ System.err.printf("\t[-fail-task <task-id>]\n\n");
+ ToolRunner.printGenericCommandUsage(System.out);
+ }
}
public int run(String[] argv) throws Exception {
+ int exitCode = -1;
+ if (argv.length < 1) {
+ displayUsage("");
+ return exitCode;
+ }
// process arguments
+ String cmd = argv[0];
String submitJobFile = null;
String jobid = null;
String taskid = null;
@@ -1231,34 +1250,41 @@
boolean listAllJobs = false;
boolean killTask = false;
boolean failTask = false;
-
- if (argv.length < 1)
- displayUsage();
- if ("-submit".equals(argv[0])) {
- if (argv.length != 2)
- displayUsage();
+ if ("-submit".equals(cmd)) {
+ if (argv.length != 2) {
+ displayUsage(cmd);
+ return exitCode;
+ }
submitJobFile = argv[1];
- } else if ("-status".equals(argv[0])) {
- if (argv.length != 2)
- displayUsage();
+ } else if ("-status".equals(cmd)) {
+ if (argv.length != 2) {
+ displayUsage(cmd);
+ return exitCode;
+ }
jobid = argv[1];
getStatus = true;
- } else if ("-kill".equals(argv[0])) {
- if (argv.length != 2)
- displayUsage();
+ } else if ("-kill".equals(cmd)) {
+ if (argv.length != 2) {
+ displayUsage(cmd);
+ return exitCode;
+ }
jobid = argv[1];
killJob = true;
- } else if ("-events".equals(argv[0])) {
- if (argv.length != 4)
- displayUsage();
+ } else if ("-events".equals(cmd)) {
+ if (argv.length != 4) {
+ displayUsage(cmd);
+ return exitCode;
+ }
jobid = argv[1];
fromEvent = Integer.parseInt(argv[2]);
nEvents = Integer.parseInt(argv[3]);
listEvents = true;
- } else if ("-history".equals(argv[0])) {
- if (argv.length != 2 && !(argv.length == 3 && "all".equals(argv[1])))
- displayUsage();
+ } else if ("-history".equals(cmd)) {
+ if (argv.length != 2 && !(argv.length == 3 && "all".equals(argv[1]))) {
+ displayUsage(cmd);
+ return exitCode;
+ }
viewHistory = true;
if (argv.length == 3 && "all".equals(argv[1])) {
viewAllHistory = true;
@@ -1266,26 +1292,33 @@
} else {
outputDir = argv[1];
}
- } else if ("-list".equals(argv[0])) {
- if (argv.length != 1 && !(argv.length == 2 && "all".equals(argv[1])))
- displayUsage();
+ } else if ("-list".equals(cmd)) {
+ if (argv.length != 1 && !(argv.length == 2 && "all".equals(argv[1]))) {
+ displayUsage(cmd);
+ return exitCode;
+ }
if (argv.length == 2 && "all".equals(argv[1])) {
listAllJobs = true;
} else {
listJobs = true;
}
- } else if("-kill-task".equals(argv[0])) {
- if(argv.length != 2)
- displayUsage();
+ } else if("-kill-task".equals(cmd)) {
+ if(argv.length != 2) {
+ displayUsage(cmd);
+ return exitCode;
+ }
killTask = true;
taskid = argv[1];
- } else if("-fail-task".equals(argv[0])) {
- if(argv.length != 2)
- displayUsage();
+ } else if("-fail-task".equals(cmd)) {
+ if(argv.length != 2) {
+ displayUsage(cmd);
+ return exitCode;
+ }
failTask = true;
taskid = argv[1];
} else {
- displayUsage();
+ displayUsage(cmd);
+ return exitCode;
}
// initialize JobClient
@@ -1298,7 +1331,6 @@
init(conf);
// Submit the request
- int exitCode = -1;
try {
if (submitJobFile != null) {
RunningJob job = submitJob(conf);
Modified: hadoop/core/trunk/src/java/org/apache/hadoop/util/GenericOptionsParser.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/java/org/apache/hadoop/util/GenericOptionsParser.java?rev=653540&r1=653539&r2=653540&view=diff
==============================================================================
--- hadoop/core/trunk/src/java/org/apache/hadoop/util/GenericOptionsParser.java (original)
+++ hadoop/core/trunk/src/java/org/apache/hadoop/util/GenericOptionsParser.java Mon May 5 10:58:46 2008
@@ -123,10 +123,11 @@
/**
* Returns an array of Strings containing only application-specific arguments.
*
- * @return array of <code>String</code>s containing the un-parsed arguments.
+ * @return array of <code>String</code>s containing the un-parsed arguments
+ * or <strong>empty array</strong> if commandLine was not defined.
*/
public String[] getRemainingArgs() {
- return commandLine.getArgs();
+ return (commandLine == null) ? new String[]{} : commandLine.getArgs();
}
/**
Modified: hadoop/core/trunk/src/test/org/apache/hadoop/util/TestGenericsUtil.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/org/apache/hadoop/util/TestGenericsUtil.java?rev=653540&r1=653539&r2=653540&view=diff
==============================================================================
--- hadoop/core/trunk/src/test/org/apache/hadoop/util/TestGenericsUtil.java (original)
+++ hadoop/core/trunk/src/test/org/apache/hadoop/util/TestGenericsUtil.java Mon May 5 10:58:46 2008
@@ -23,6 +23,8 @@
import junit.framework.TestCase;
+import org.apache.hadoop.conf.Configuration;
+
public class TestGenericsUtil extends TestCase {
public void testToArray() {
@@ -97,6 +99,12 @@
}
+ public void testGenericOptionsParser() throws Exception {
+ GenericOptionsParser parser = new GenericOptionsParser(
+ new Configuration(), new String[] {"-jt"});
+ assertEquals(parser.getRemainingArgs().length, 0);
+ }
+
public void testGetClass() {
//test with Integer