浏览代码

HADOOP-5278. Fixes a problem to do with logging the finish time of a task during recovery (after a JobTracker restart). Contributed by Amar Kamat.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@747290 13f79535-47bb-0310-9956-ffa450edef68
Devaraj Das 16 年之前
父节点
当前提交
510d59dc17

+ 3 - 0
CHANGES.txt

@@ -224,6 +224,9 @@ Trunk (unreleased changes)
     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)
 
+    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.20.0 - Unreleased
 
   INCOMPATIBLE CHANGES

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

@@ -1178,6 +1178,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.
      * @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) {
     execFinishTime = finishTime;
+    JobHistory.Task.logUpdates(id, execFinishTime); // log the update
   }
   
   /**