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 cu...@apache.org on 2006/09/28 20:24:48 UTC
svn commit: r450959 - in /lucene/hadoop/trunk: ./
src/java/org/apache/hadoop/dfs/ src/java/org/apache/hadoop/mapred/
src/test/org/apache/hadoop/dfs/ src/test/org/apache/hadoop/mapred/
src/webapps/job/ src/webapps/task/
Author: cutting
Date: Thu Sep 28 11:24:48 2006
New Revision: 450959
URL: http://svn.apache.org/viewvc?view=rev&rev=450959
Log:
HADOOP-560. Add a 'killed' task state. Contributed by Owen.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/NameNode.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTrackerStatus.java
lucene/hadoop/trunk/src/test/org/apache/hadoop/dfs/MiniDFSCluster.java
lucene/hadoop/trunk/src/test/org/apache/hadoop/mapred/TestMiniMRDFSCaching.java
lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp
lucene/hadoop/trunk/src/webapps/job/jobfailures.jsp
lucene/hadoop/trunk/src/webapps/job/taskdetails.jsp
lucene/hadoop/trunk/src/webapps/task/tasktracker.jsp
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Thu Sep 28 11:24:48 2006
@@ -84,6 +84,12 @@
returned after seeking to a random location.
(Milind Bhandarkar via cutting)
+22. HADOOP-560. Add a "killed" task state. This can be used to
+ distinguish kills from other failures. Task state has also been
+ converted to use an enum type instead of an int, uncovering a bug
+ elsewhere. The web interface is also updated to display killed
+ tasks. (omalley via cutting)
+
Release 0.6.2 (unreleased)
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/NameNode.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/NameNode.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/NameNode.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/NameNode.java Thu Sep 28 11:24:48 2006
@@ -436,6 +436,13 @@
return namesystem.isInSafeMode();
}
+ /**
+ * Is the cluster currently in safe mode?
+ */
+ boolean isInSafeMode() {
+ return namesystem.isInSafeMode();
+ }
+
////////////////////////////////////////////////////////////////
// DatanodeProtocol
////////////////////////////////////////////////////////////////
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java Thu Sep 28 11:24:48 2006
@@ -25,7 +25,8 @@
* The JobTracker is the Server, which implements this protocol.
*/
interface InterTrackerProtocol extends VersionedProtocol {
- public static final long versionID = 1L;
+ // version 2 introduced to replace TaskStatus.State with an enum
+ public static final long versionID = 2L;
public final static int TRACKERS_OK = 0;
public final static int UNKNOWN_TASKTRACKER = 1;
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java Thu Sep 28 11:24:48 2006
@@ -274,9 +274,11 @@
boolean wasComplete = tip.isComplete();
boolean change = tip.updateStatus(status);
if (change) {
- if (status.getRunState() == TaskStatus.SUCCEEDED) {
+ TaskStatus.State state = status.getRunState();
+ if (state == TaskStatus.State.SUCCEEDED) {
completedTask(tip, status, metrics);
- } else if (status.getRunState() == TaskStatus.FAILED) {
+ } else if (state == TaskStatus.State.FAILED ||
+ state == TaskStatus.State.KILLED) {
// Tell the job to fail the relevant task
failedTask(tip, status.getTaskId(), status, status.getTaskTracker(),
wasRunning, wasComplete);
@@ -494,7 +496,7 @@
//
// If all tasks are complete, then the job is done!
//
- if (status.getRunState() == JobStatus.RUNNING && allDone) {
+ if (this.status.getRunState() == JobStatus.RUNNING && allDone) {
this.status.setRunState(JobStatus.SUCCEEDED);
this.status.setReduceProgress(1.0f);
this.finishTime = System.currentTimeMillis();
@@ -597,7 +599,7 @@
TaskStatus status = new TaskStatus(taskid,
tip.isMapTask(),
0.0f,
- TaskStatus.FAILED,
+ TaskStatus.State.FAILED,
reason,
reason,
trackerName, phase);
@@ -659,7 +661,7 @@
if (tip.isComplete()) {
TaskStatus[] statuses = tip.getTaskStatuses();
for(int i=0; i < statuses.length; i++) {
- if (statuses[i].getRunState() == TaskStatus.SUCCEEDED) {
+ if (statuses[i].getRunState() == TaskStatus.State.SUCCEEDED) {
return statuses[i];
}
}
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java Thu Sep 28 11:24:48 2006
@@ -69,6 +69,7 @@
private long execFinishTime = 0 ;
private int completes = 0;
private boolean failed = false;
+ private boolean killed = false;
private TreeSet usableTaskIds = new TreeSet();
private TreeSet recentTasks = new TreeSet();
private JobConf conf;
@@ -188,7 +189,8 @@
if (status == null) {
return false;
}
- return ((completes > 0) && (status.getRunState() == TaskStatus.SUCCEEDED));
+ return ((completes > 0) &&
+ (status.getRunState() == TaskStatus.State.SUCCEEDED));
}
/**
*/
@@ -281,16 +283,17 @@
diagHistory.add(diagInfo);
}
if (oldStatus != null) {
- int oldState = oldStatus.getRunState();
- int newState = status.getRunState();
+ TaskStatus.State oldState = oldStatus.getRunState();
+ TaskStatus.State newState = status.getRunState();
// The task is not allowed to move from completed back to running.
// We have seen out of order status messagesmoving tasks from complete
// to running. This is a spot fix, but it should be addressed more
// globally.
- if (newState == TaskStatus.RUNNING &&
- (oldState == TaskStatus.FAILED ||
- oldState == TaskStatus.SUCCEEDED)) {
+ if (newState == TaskStatus.State.RUNNING &&
+ (oldState == TaskStatus.State.FAILED ||
+ oldState == TaskStatus.State.KILLED ||
+ oldState == TaskStatus.State.SUCCEEDED)) {
return false;
}
@@ -315,7 +318,7 @@
LOG.info("Task '" + taskid + "' has been lost.");
TaskStatus status = (TaskStatus) taskStatuses.get(taskid);
if (status != null) {
- status.setRunState(TaskStatus.FAILED);
+ status.setRunState(TaskStatus.State.FAILED);
// tasktracker went down and failed time was not reported.
if( 0 == status.getFinishTime() ){
status.setFinishTime(System.currentTimeMillis());
@@ -341,7 +344,7 @@
public void completed(String taskid) {
LOG.info("Task '" + taskid + "' has completed.");
TaskStatus status = (TaskStatus) taskStatuses.get(taskid);
- status.setRunState(TaskStatus.SUCCEEDED);
+ status.setRunState(TaskStatus.State.SUCCEEDED);
recentTasks.remove(taskid);
//
@@ -369,10 +372,19 @@
return;
}
this.failed = true;
+ killed = true;
recomputeProgress();
}
/**
+ * Was the task killed?
+ * @return true if the task killed
+ */
+ public boolean wasKilled() {
+ return killed;
+ }
+
+ /**
* This method is called whenever there's a status change
* for one of the TIP's sub-tasks. It recomputes the overall
* progress for the TIP. We examine all sub-tasks and find
@@ -391,11 +403,11 @@
for (Iterator it = taskStatuses.keySet().iterator(); it.hasNext(); ) {
String taskid = (String) it.next();
TaskStatus status = (TaskStatus) taskStatuses.get(taskid);
- if (status.getRunState() == TaskStatus.SUCCEEDED) {
+ if (status.getRunState() == TaskStatus.State.SUCCEEDED) {
bestProgress = 1;
bestState = status.getStateString();
break;
- } else if (status.getRunState() == TaskStatus.RUNNING) {
+ } else if (status.getRunState() == TaskStatus.State.RUNNING) {
if (status.getProgress() >= bestProgress) {
bestProgress = status.getProgress();
bestState = status.getStateString();
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java Thu Sep 28 11:24:48 2006
@@ -19,7 +19,7 @@
import java.io.*;
// enumeration for reporting current phase of a task.
-enum Phase{STARTING, MAP, SHUFFLE, SORT, REDUCE};
+enum Phase{STARTING, MAP, SHUFFLE, SORT, REDUCE}
/**************************************************
* Describes the current status of a task. This is
@@ -28,15 +28,12 @@
* @author Mike Cafarella
**************************************************/
class TaskStatus implements Writable {
- public static final int RUNNING = 0;
- public static final int SUCCEEDED = 1;
- public static final int FAILED = 2;
- public static final int UNASSIGNED = 3;
+ public static enum State {RUNNING, SUCCEEDED, FAILED, UNASSIGNED, KILLED};
private String taskid;
private boolean isMap;
private float progress;
- private int runState;
+ private State runState;
private String diagnosticInfo;
private String stateString;
private String taskTracker;
@@ -53,7 +50,7 @@
public TaskStatus() {}
public TaskStatus(String taskid, boolean isMap, float progress,
- int runState, String diagnosticInfo,
+ State runState, String diagnosticInfo,
String stateString, String taskTracker,
Phase phase) {
this.taskid = taskid;
@@ -70,10 +67,10 @@
public boolean getIsMap() { return isMap; }
public float getProgress() { return progress; }
public void setProgress(float progress) { this.progress = progress; }
- public int getRunState() { return runState; }
+ public State getRunState() { return runState; }
public String getTaskTracker() {return taskTracker;}
public void setTaskTracker(String tracker) { this.taskTracker = tracker;}
- public void setRunState(int runState) { this.runState = runState; }
+ public void setRunState(State runState) { this.runState = runState; }
public String getDiagnosticInfo() { return diagnosticInfo; }
public void setDiagnosticInfo(String info) { this.diagnosticInfo = info; }
public String getStateString() { return stateString; }
@@ -183,7 +180,7 @@
UTF8.writeString(out, taskid);
out.writeBoolean(isMap);
out.writeFloat(progress);
- out.writeInt(runState);
+ WritableUtils.writeEnum(out, runState);
UTF8.writeString(out, diagnosticInfo);
UTF8.writeString(out, stateString);
WritableUtils.writeEnum(out, phase);
@@ -199,7 +196,7 @@
this.taskid = UTF8.readString(in);
this.isMap = in.readBoolean();
this.progress = in.readFloat();
- this.runState = in.readInt();
+ this.runState = WritableUtils.readEnum(in, State.class);
this.diagnosticInfo = UTF8.readString(in);
this.stateString = UTF8.readString(in);
this.phase = WritableUtils.readEnum(in, Phase.class);
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java Thu Sep 28 11:24:48 2006
@@ -284,7 +284,7 @@
tip.setJobConf(jobConf);
tip.launchTask();
} catch (Throwable ie) {
- tip.runstate = TaskStatus.FAILED;
+ tip.runstate = TaskStatus.State.FAILED;
try {
tip.cleanup();
} catch (Throwable ie2) {
@@ -460,7 +460,7 @@
for (Iterator it = taskReports.iterator();
it.hasNext(); ) {
TaskStatus taskStatus = (TaskStatus) it.next();
- if (taskStatus.getRunState() != TaskStatus.RUNNING) {
+ if (taskStatus.getRunState() != TaskStatus.State.RUNNING) {
if (taskStatus.getIsMap()) {
mapTotal--;
} else {
@@ -509,7 +509,7 @@
TaskInProgress tip = (TaskInProgress) it.next();
long timeSinceLastReport = System.currentTimeMillis() -
tip.getLastProgressReport();
- if ((tip.getRunState() == TaskStatus.RUNNING) &&
+ if ((tip.getRunState() == TaskStatus.State.RUNNING) &&
(timeSinceLastReport > this.taskTimeout) &&
!tip.wasKilled) {
String msg = "Task failed to report status for " +
@@ -577,7 +577,7 @@
for (Iterator it = runningTasks.values().iterator(); it.hasNext(); ) {
TaskInProgress tip = (TaskInProgress) it.next();
- if ((tip.getRunState() == TaskStatus.RUNNING) &&
+ if ((tip.getRunState() == TaskStatus.State.RUNNING) &&
!tip.wasKilled) {
if (killMe == null) {
@@ -770,7 +770,7 @@
class TaskInProgress {
Task task;
float progress;
- int runstate;
+ TaskStatus.State runstate;
long lastProgressReport;
StringBuffer diagnosticInfo = new StringBuffer();
TaskRunner runner;
@@ -788,7 +788,7 @@
public TaskInProgress(Task task, JobConf conf) {
this.task = task;
this.progress = 0.0f;
- this.runstate = TaskStatus.UNASSIGNED;
+ this.runstate = TaskStatus.State.UNASSIGNED;
this.lastProgressReport = System.currentTimeMillis();
this.defaultJobConf = conf;
localJobConf = null;
@@ -862,7 +862,7 @@
*/
public synchronized void launchTask() throws IOException {
localizeTask(task);
- this.runstate = TaskStatus.RUNNING;
+ this.runstate = TaskStatus.State.RUNNING;
this.runner = task.createRunner(TaskTracker.this);
this.runner.start();
this.taskStatus.setStartTime(System.currentTimeMillis());
@@ -874,7 +874,7 @@
public synchronized void reportProgress(float p, String state, Phase newPhase) {
LOG.info(task.getTaskId()+" "+p+"% "+state);
this.progress = p;
- this.runstate = TaskStatus.RUNNING;
+ this.runstate = TaskStatus.State.RUNNING;
this.lastProgressReport = System.currentTimeMillis();
Phase oldPhase = taskStatus.getPhase() ;
if( oldPhase != newPhase ){
@@ -896,7 +896,7 @@
/**
*/
- public int getRunState() {
+ public TaskStatus.State getRunState() {
return runstate;
}
@@ -941,16 +941,19 @@
boolean needCleanup = false;
synchronized (this) {
if (done) {
- runstate = TaskStatus.SUCCEEDED;
+ runstate = TaskStatus.State.SUCCEEDED;
} else {
if (!wasKilled) {
failures += 1;
+ runstate = TaskStatus.State.FAILED;
+ } else {
+ runstate = TaskStatus.State.KILLED;
}
- runstate = TaskStatus.FAILED;
progress = 0.0f;
}
this.taskStatus.setFinishTime(System.currentTimeMillis());
- needCleanup = runstate == TaskStatus.FAILED;
+ needCleanup = (runstate == TaskStatus.State.FAILED) |
+ (runstate == TaskStatus.State.KILLED);
}
//
@@ -973,7 +976,7 @@
*/
public synchronized void jobHasFinished() throws IOException {
- if (getRunState() == TaskStatus.RUNNING) {
+ if (getRunState() == TaskStatus.State.RUNNING) {
killAndCleanup(false);
} else {
cleanup();
@@ -991,7 +994,7 @@
*/
public synchronized void killAndCleanup(boolean wasFailure
) throws IOException {
- if (runstate == TaskStatus.RUNNING) {
+ if (runstate == TaskStatus.State.RUNNING) {
wasKilled = true;
if (wasFailure) {
failures += 1;
@@ -1005,9 +1008,9 @@
*/
public synchronized void mapOutputLost(String failure
) throws IOException {
- if (runstate == TaskStatus.SUCCEEDED) {
+ if (runstate == TaskStatus.State.SUCCEEDED) {
LOG.info("Reporting output lost:"+task.getTaskId());
- runstate = TaskStatus.FAILED; // change status to failure
+ runstate = TaskStatus.State.FAILED; // change status to failure
progress = 0.0f;
reportDiagnosticInfo("Map output lost, rescheduling: " +
failure);
@@ -1029,7 +1032,7 @@
synchronized (TaskTracker.this) {
tasks.remove(taskId);
if (alwaysKeepTaskFiles ||
- (runstate == TaskStatus.FAILED &&
+ (runstate == TaskStatus.State.FAILED &&
keepFailedTaskFiles)) {
return;
}
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTrackerStatus.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTrackerStatus.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTrackerStatus.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTrackerStatus.java Thu Sep 28 11:24:48 2006
@@ -104,32 +104,34 @@
* Return the current MapTask count
*/
public int countMapTasks() {
- int mapCount = 0;
- for (Iterator it = taskReports.iterator(); it.hasNext(); ) {
- TaskStatus ts = (TaskStatus) it.next();
- if (ts.getIsMap() &&
- ((ts.getRunState() == TaskStatus.RUNNING)
- || (ts.getRunState() == TaskStatus.UNASSIGNED))) {
- mapCount++;
- }
- }
- return mapCount;
+ int mapCount = 0;
+ for (Iterator it = taskReports.iterator(); it.hasNext(); ) {
+ TaskStatus ts = (TaskStatus) it.next();
+ TaskStatus.State state = ts.getRunState();
+ if (ts.getIsMap() &&
+ ((state == TaskStatus.State.RUNNING) ||
+ (state == TaskStatus.State.UNASSIGNED))) {
+ mapCount++;
+ }
+ }
+ return mapCount;
}
/**
* Return the current ReduceTask count
*/
public int countReduceTasks() {
- int reduceCount = 0;
- for (Iterator it = taskReports.iterator(); it.hasNext(); ) {
- TaskStatus ts = (TaskStatus) it.next();
- if ((!ts.getIsMap()) &&
- ((ts.getRunState() == TaskStatus.RUNNING)
- || (ts.getRunState() == TaskStatus.UNASSIGNED))) {
- reduceCount++;
- }
+ int reduceCount = 0;
+ for (Iterator it = taskReports.iterator(); it.hasNext(); ) {
+ TaskStatus ts = (TaskStatus) it.next();
+ TaskStatus.State state = ts.getRunState();
+ if ((!ts.getIsMap()) &&
+ ((state == TaskStatus.State.RUNNING) ||
+ (state == TaskStatus.State.UNASSIGNED))) {
+ reduceCount++;
}
- return reduceCount;
+ }
+ return reduceCount;
}
/**
Modified: lucene/hadoop/trunk/src/test/org/apache/hadoop/dfs/MiniDFSCluster.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/test/org/apache/hadoop/dfs/MiniDFSCluster.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/test/org/apache/hadoop/dfs/MiniDFSCluster.java (original)
+++ lucene/hadoop/trunk/src/test/org/apache/hadoop/dfs/MiniDFSCluster.java Thu Sep 28 11:24:48 2006
@@ -30,7 +30,7 @@
}
try {
long[] sizes = node.getStats();
- return sizes[0] != 0;
+ return !node.isInSafeMode() && sizes[0] != 0;
} catch (IOException ie) {
return false;
}
Modified: lucene/hadoop/trunk/src/test/org/apache/hadoop/mapred/TestMiniMRDFSCaching.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/test/org/apache/hadoop/mapred/TestMiniMRDFSCaching.java?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/test/org/apache/hadoop/mapred/TestMiniMRDFSCaching.java (original)
+++ lucene/hadoop/trunk/src/test/org/apache/hadoop/mapred/TestMiniMRDFSCaching.java Thu Sep 28 11:24:48 2006
@@ -38,17 +38,16 @@
String namenode = null;
FileSystem fileSys = null;
try {
- Configuration conf = new Configuration();
+ JobConf conf = new JobConf();
dfs = new MiniDFSCluster(65314, conf, true);
fileSys = dfs.getFileSystem();
namenode = fileSys.getName();
mr = new MiniMRCluster(50050, 50060, 2, namenode, true);
- JobConf jconf = new JobConf();
// run the wordcount example with caching
boolean ret = MRCaching.launchMRCache("localhost:50050",
"/testing/wc/input",
"/testing/wc/output", namenode,
- jconf,
+ conf,
"The quick brown fox\nhas many silly\n"
+ "red fox sox\n");
assertTrue("Archives not matching", ret);
Modified: lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp Thu Sep 28 11:24:48 2006
@@ -23,6 +23,7 @@
int totalTasks = tasks.length;
int runningTasks = 0;
int finishedTasks = 0;
+ int killedTasks = 0;
int failures = 0;
for(int i=0; i < totalTasks; ++i) {
TaskInProgress task = tasks[i];
@@ -30,6 +31,8 @@
finishedTasks += 1;
} else if (task.isRunning()) {
runningTasks += 1;
+ } else if (task.wasKilled()) {
+ killedTasks += 1;
}
failures += task.numTaskFailures();
}
@@ -37,9 +40,11 @@
"&type="+ kind + "&pagenum=1\">" + kind + "</a></th><td>" +
StringUtils.formatPercent(completePercent, 2) +
"</td><td>" + totalTasks + "</td><td>" +
- (totalTasks - runningTasks - finishedTasks) + "</td><td>" +
+ (totalTasks - runningTasks - finishedTasks - killedTasks) +
+ "</td><td>" +
runningTasks + "</td><td>" +
- finishedTasks +
+ finishedTasks + "</td><td>" +
+ killedTasks +
"</td><td><a href=\"/jobfailures.jsp?jobid=" + jobId +
"&kind=" + kind + "\">" +
failures + "</a></td></tr>\n");
@@ -74,6 +79,7 @@
out.print("<table border=2 cellpadding=\"5\" cellspacing=\"2\">");
out.print("<tr><th>Kind</th><th>% Complete</th><th>Num Tasks</th>" +
"<th>Pending</th><th>Running</th><th>Complete</th>" +
+ "<th>Killed</th>" +
"<th><a href=\"/jobfailures.jsp?jobid=" + jobId +
"\">Failures</a></th></tr>\n");
printTaskSummary(out, jobId, "map", status.mapProgress(),
Modified: lucene/hadoop/trunk/src/webapps/job/jobfailures.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobfailures.jsp?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/webapps/job/jobfailures.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/job/jobfailures.jsp Thu Sep 28 11:24:48 2006
@@ -19,7 +19,7 @@
TaskStatus[] statuses = tip.getTaskStatuses();
String tipId = tip.getTIPId();
for(int i=0; i < statuses.length; ++i) {
- if (statuses[i].getRunState() == TaskStatus.FAILED) {
+ if (statuses[i].getRunState() == TaskStatus.State.FAILED) {
String taskTrackerName = statuses[i].getTaskTracker();
TaskTrackerStatus taskTracker = tracker.getTaskTracker(taskTrackerName);
out.print("<tr><td>" + statuses[i].getTaskId() +
Modified: lucene/hadoop/trunk/src/webapps/job/taskdetails.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/taskdetails.jsp?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/webapps/job/taskdetails.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/job/taskdetails.jsp Thu Sep 28 11:24:48 2006
@@ -19,28 +19,6 @@
TaskStatus[] ts = (job != null) ? tracker.getTaskStatuses(jobid, tipid): null;
%>
-<%!
- public void writeString(JspWriter out, int state) throws IOException{
- String sstate;
- if (state == TaskStatus.RUNNING){
- sstate = "RUNNING";
- }
- else if (state == TaskStatus.SUCCEEDED){
- sstate = "SUCCEDED";
- }
- else if (state == TaskStatus.FAILED){
- sstate = "FAILED";
- }
- else if (state == TaskStatus.UNASSIGNED){
- sstate = "UNASSIGNED";
- }
- else{
- sstate = "ERROR IN STATUS";
- }
- out.print(sstate);
- }
-%>
-
<html>
<title>Hadoop Task Details</title>
<body>
@@ -80,9 +58,7 @@
taskTracker.getHttpPort() + "\">" + taskTracker.getHost() +
"</a></td>");
}
- out.print("<td>");
- writeString(out, status.getRunState());
- out.print("</td>");
+ out.print("<td>" + status.getRunState() + "</td>");
out.print("<td>"+ StringUtils.formatPercent(status.getProgress(),2) +
"</td>");
out.print("<td>" + StringUtils.getFormattedTimeWithDiff(dateFormat,
Modified: lucene/hadoop/trunk/src/webapps/task/tasktracker.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/task/tasktracker.jsp?view=diff&rev=450959&r1=450958&r2=450959
==============================================================================
--- lucene/hadoop/trunk/src/webapps/task/tasktracker.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/task/tasktracker.jsp Thu Sep 28 11:24:48 2006
@@ -8,24 +8,6 @@
import="org.apache.hadoop.mapred.*"
import="org.apache.hadoop.util.*"
%>
-<%!
- private static DecimalFormat percentFormat = new DecimalFormat("##0.00");
-
- private String stringifyState(int state) {
- if (state == TaskStatus.RUNNING){
- return "RUNNING";
- } else if (state == TaskStatus.SUCCEEDED){
- return "SUCCEDED";
- } else if (state == TaskStatus.FAILED){
- return "FAILED";
- } else if (state == TaskStatus.UNASSIGNED){
- return "UNASSIGNED";
- }
- return "unknown status";
- }
-
- %>
-
<%
TaskTracker tracker = (TaskTracker) application.getAttribute("task.tracker");
String trackerName = tracker.getName();
@@ -50,9 +32,9 @@
while (itr.hasNext()) {
TaskStatus status = (TaskStatus) itr.next();
out.print("<tr><td>" + status.getTaskId());
- out.print("</td><td>" + stringifyState(status.getRunState()));
+ out.print("</td><td>" + status.getRunState());
out.print("</td><td>" +
- percentFormat.format(100.0 * status.getProgress()));
+ StringUtils.formatPercent(status.getProgress(), 2));
out.print("</td><td><pre>" + status.getDiagnosticInfo() + "</pre></td>");
out.print("</tr>\n");
}