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;
     }


Reply via email to