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 gt...@apache.org on 2016/03/22 22:28:40 UTC
hadoop git commit: MAPREDUCE-6110. JobHistoryServer CLI throws
NullPointerException with job ids that do not exist. (Kai Sasaki via
gtcarrera9)
Repository: hadoop
Updated Branches:
refs/heads/trunk e7ed05e4f -> 57ead18a8
MAPREDUCE-6110. JobHistoryServer CLI throws NullPointerException with job ids that do not exist. (Kai Sasaki via gtcarrera9)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/57ead18a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/57ead18a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/57ead18a
Branch: refs/heads/trunk
Commit: 57ead18a85e15aef1993f49157cf05aed38f1c87
Parents: e7ed05e
Author: Li Lu <gt...@apache.org>
Authored: Tue Mar 22 14:27:32 2016 -0700
Committer: Li Lu <gt...@apache.org>
Committed: Tue Mar 22 14:27:32 2016 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/mapreduce/tools/CLI.java | 48 +++++++++++++-------
.../apache/hadoop/mapreduce/tools/TestCLI.java | 38 +++++++++++++++-
2 files changed, 68 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/57ead18a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java
----------------------------------------------------------------------
diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java
index bc3c0c8..4f55792 100644
--- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java
+++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/tools/CLI.java
@@ -402,8 +402,13 @@ public class CLI extends Configured implements Tool {
}
}
} else if (listEvents) {
- listEvents(getJob(JobID.forName(jobid)), fromEvent, nEvents);
- exitCode = 0;
+ Job job = getJob(JobID.forName(jobid));
+ if (job == null) {
+ System.out.println("Could not find job " + jobid);
+ } else {
+ listEvents(job, fromEvent, nEvents);
+ exitCode = 0;
+ }
} else if (listJobs) {
listJobs(cluster);
exitCode = 0;
@@ -417,8 +422,13 @@ public class CLI extends Configured implements Tool {
listBlacklistedTrackers(cluster);
exitCode = 0;
} else if (displayTasks) {
- displayTasks(getJob(JobID.forName(jobid)), taskType, taskState);
- exitCode = 0;
+ Job job = getJob(JobID.forName(jobid));
+ if (job == null) {
+ System.out.println("Could not find job " + jobid);
+ } else {
+ displayTasks(getJob(JobID.forName(jobid)), taskType, taskState);
+ exitCode = 0;
+ }
} else if(killTask) {
TaskAttemptID taskID = TaskAttemptID.forName(taskid);
Job job = getJob(taskID.getJobID());
@@ -444,20 +454,24 @@ public class CLI extends Configured implements Tool {
exitCode = -1;
}
} else if (logs) {
- try {
JobID jobID = JobID.forName(jobid);
- TaskAttemptID taskAttemptID = TaskAttemptID.forName(taskid);
- LogParams logParams = cluster.getLogParams(jobID, taskAttemptID);
- LogCLIHelpers logDumper = new LogCLIHelpers();
- logDumper.setConf(getConf());
- exitCode = logDumper.dumpAContainersLogs(logParams.getApplicationId(),
- logParams.getContainerId(), logParams.getNodeId(),
- logParams.getOwner());
- } catch (IOException e) {
- if (e instanceof RemoteException) {
- throw e;
- }
- System.out.println(e.getMessage());
+ if (getJob(jobID) == null) {
+ System.out.println("Could not find job " + jobid);
+ } else {
+ try {
+ TaskAttemptID taskAttemptID = TaskAttemptID.forName(taskid);
+ LogParams logParams = cluster.getLogParams(jobID, taskAttemptID);
+ LogCLIHelpers logDumper = new LogCLIHelpers();
+ logDumper.setConf(getConf());
+ exitCode = logDumper.dumpAContainersLogs(
+ logParams.getApplicationId(), logParams.getContainerId(),
+ logParams.getNodeId(), logParams.getOwner());
+ } catch (IOException e) {
+ if (e instanceof RemoteException) {
+ throw e;
+ }
+ System.out.println(e.getMessage());
+ }
}
}
} catch (RemoteException re) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/57ead18a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java
index 73f57d5..112f585 100644
--- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java
+++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java
@@ -87,7 +87,7 @@ public class TestCLI {
JobID jobId = JobID.forName(jobIdStr);
Cluster mockCluster = mock(Cluster.class);
Job job = mock(Job.class);
- CLI cli = spy(new CLI());
+ CLI cli = spy(new CLI(new Configuration()));
doReturn(mockCluster).when(cli).createCluster();
when(mockCluster.getJob(jobId)).thenReturn(job);
@@ -101,12 +101,18 @@ public class TestCLI {
int retCode_invalidTaskState = cli.run(new String[] { "-list-attempt-ids",
jobIdStr, "REDUCE", "complete" });
+ String jobIdStr2 = "job_1015298225799_0016";
+ int retCode_invalidJobId = cli.run(new String[] { "-list-attempt-ids",
+ jobIdStr2, "MAP", "running" });
+
assertEquals("JOB_SETUP is an invalid input,exit code should be -1", -1,
retCode_JOB_SETUP);
assertEquals("JOB_CLEANUP is an invalid input,exit code should be -1", -1,
retCode_JOB_CLEANUP);
assertEquals("complete is an invalid input,exit code should be -1", -1,
retCode_invalidTaskState);
+ assertEquals("Non existing job id should be skippted with -1", -1,
+ retCode_invalidJobId);
}
@@ -176,4 +182,34 @@ public class TestCLI {
Assert.assertTrue(end - start < ((i + 1) * sleepTime));
}
}
+
+ @Test
+ public void testListEvents() throws Exception {
+ Cluster mockCluster = mock(Cluster.class);
+ CLI cli = spy(new CLI(new Configuration()));
+ doReturn(mockCluster).when(cli).createCluster();
+ String jobId1 = "job_1234654654_001";
+ String jobId2 = "job_1234654656_002";
+
+ Job mockJob1 = mockJob(mockCluster, jobId1, State.RUNNING);
+
+ // Check exiting with non existing job
+ int exitCode = cli.run(new String[]{"-events", jobId2, "0", "10"});
+ assertEquals(-1, exitCode);
+ }
+
+ @Test
+ public void testLogs() throws Exception {
+ Cluster mockCluster = mock(Cluster.class);
+ CLI cli = spy(new CLI(new Configuration()));
+ doReturn(mockCluster).when(cli).createCluster();
+ String jobId1 = "job_1234654654_001";
+ String jobId2 = "job_1234654656_002";
+
+ Job mockJob1 = mockJob(mockCluster, jobId1, State.SUCCEEDED);
+
+ // Check exiting with non existing job
+ int exitCode = cli.run(new String[]{"-logs", jobId2});
+ assertEquals(-1, exitCode);
+ }
}