Переглянути джерело

HADOOP-5278. Applied the patch on the 0.20 branch as well.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.20@752926 13f79535-47bb-0310-9956-ffa450edef68
Devaraj Das 16 роки тому
батько
коміт
bd0a9fe250

+ 3 - 0
CHANGES.txt

@@ -703,6 +703,9 @@ Release 0.20.0 - Unreleased
     HADOOP-5276. Fixes a problem to do with updating the start time of a task when
     HADOOP-5276. Fixes a problem to do with updating the start time of a task when
     the tracker that ran the task is lost. (Amar Kamat via ddas)
     the tracker that ran the task is lost. (Amar Kamat via ddas)
 
 
+    HADOOP-5278. Fixes a problem to do with logging the finish time of a task 
+    during recovery (after a JobTracker restart). (Amar Kamat via ddas)
+
 Release 0.19.2 - Unreleased
 Release 0.19.2 - Unreleased
 
 
   BUG FIXES
   BUG FIXES

+ 20 - 0
src/mapred/org/apache/hadoop/mapred/JobHistory.java

@@ -1180,6 +1180,26 @@ public class JobHistory {
         }
         }
       }
       }
     }
     }
+
+    /**
+     * Update the finish time of task. 
+     * @param taskId task id
+     * @param finishTime finish time of task in ms
+     */
+    public static void logUpdates(TaskID taskId, long finishTime){
+      if (!disableHistory){
+        ArrayList<PrintWriter> writer = openJobs.get(JOBTRACKER_UNIQUE_STRING 
+                                                     + taskId.getJobID()); 
+
+        if (null != writer){
+          JobHistory.log(writer, RecordTypes.Task, 
+                         new Keys[]{Keys.TASKID, Keys.FINISH_TIME}, 
+                         new String[]{ taskId.toString(), 
+                                       String.valueOf(finishTime)});
+        }
+      }
+    }
+
     /**
     /**
      * Log job failed event.
      * Log job failed event.
      * @param taskId task id
      * @param taskId task id

+ 1 - 0
src/mapred/org/apache/hadoop/mapred/TaskInProgress.java

@@ -260,6 +260,7 @@ class TaskInProgress {
    */
    */
   public void setExecFinishTime(long finishTime) {
   public void setExecFinishTime(long finishTime) {
     execFinishTime = finishTime;
     execFinishTime = finishTime;
+    JobHistory.Task.logUpdates(id, execFinishTime); // log the update
   }
   }
   
   
   /**
   /**