Author: ddas
Date: Mon Feb 23 11:59:50 2009
New Revision: 746970
URL: http://svn.apache.org/viewvc?rev=746970&view=rev
Log:
HADOOP-5280. Adds a check to prevent a task state transition from FAILED to any
of UNASSIGNED, RUNNING, COMMIT_PENDING or SUCCEEDED. Contributed by Devaraj Das.
Modified:
hadoop/core/trunk/CHANGES.txt
hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskInProgress.java
Modified: hadoop/core/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=746970&r1=746969&r2=746970&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Mon Feb 23 11:59:50 2009
@@ -861,6 +861,9 @@
the connector. The workaround patch takes the most conservative approach
of
killing the server process whenever this is true. (ddas)
+ HADOOP-5280. Adds a check to prevent a task state transition from FAILED
to any of
+ UNASSIGNED, RUNNING, COMMIT_PENDING or SUCCEEDED. (ddas)
+
Release 0.19.1 - Unreleased
IMPROVEMENTS
Modified:
hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskInProgress.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskInProgress.java?rev=746970&r1=746969&r2=746970&view=diff
==============================================================================
--- hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskInProgress.java
(original)
+++ hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskInProgress.java
Mon Feb 23 11:59:50 2009
@@ -535,6 +535,18 @@
oldState == TaskStatus.State.COMMIT_PENDING)) {
return false;
}
+
+ //This is to handle the case of the JobTracker timing out a task
+ //due to launch delay, but the TT comes back with one of the
+ //states mentioned in the newState
+ if (oldState == TaskStatus.State.FAILED &&
+ (newState == TaskStatus.State.UNASSIGNED ||
+ newState == TaskStatus.State.RUNNING ||
+ newState == TaskStatus.State.COMMIT_PENDING ||
+ newState == TaskStatus.State.SUCCEEDED)) {
+ tasksToKill.put(taskid, true);
+ return false;
+ }
changed = oldState != newState;
}