소스 검색

merge -r 765886:765887 to backport HADOOP-5533 to branch 0.20.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.20@765891 13f79535-47bb-0310-9956-ffa450edef68
Sharad Agarwal 16 년 전
부모
커밋
ec79fdfd8a
2개의 변경된 파일22개의 추가작업 그리고 5개의 파일을 삭제
  1. 3 0
      CHANGES.txt
  2. 19 5
      src/mapred/org/apache/hadoop/mapred/JobTracker.java

+ 3 - 0
CHANGES.txt

@@ -875,6 +875,9 @@ Release 0.20.0 - 2009-04-15
     HADOOP-5655. TestMRServerPorts fails on java.net.BindException. (Devaraj
     Das via hairong)
 
+    HADOOP-5533. Recovery duration shown on the jobtracker webpage is 
+    inaccurate. (Amar Kamat via sharad)
+
 Release 0.19.2 - Unreleased
 
   BUG FIXES

+ 19 - 5
src/mapred/org/apache/hadoop/mapred/JobTracker.java

@@ -1194,13 +1194,15 @@ public class JobTracker implements MRConstants, InterTrackerProtocol,
     }
 
     public void recover() {
+      long recoveryProcessStartTime = System.currentTimeMillis();
       if (!shouldRecover()) {
         // clean up jobs structure
         jobsToRecover.clear();
         return;
       }
 
-      LOG.info("Restart count of the jobtracker : " + restartCount);
+      LOG.info("Starting the recovery process with restart count : " 
+               + restartCount);
 
       // I. Init the jobs and cache the recovered job history filenames
       Map<JobID, Path> jobHistoryFilenameMap = new HashMap<JobID, Path>();
@@ -1256,6 +1258,11 @@ public class JobTracker implements MRConstants, InterTrackerProtocol,
         }
       }
 
+      LOG.info("Took a total of " 
+               + StringUtils.formatTime(System.currentTimeMillis() 
+                                        - recoveryProcessStartTime) 
+               + " for recovering filenames of all the jobs from history.");
+
       long recoveryStartTime = System.currentTimeMillis();
 
       // II. Recover each job
@@ -1313,14 +1320,21 @@ public class JobTracker implements MRConstants, InterTrackerProtocol,
         }
       }
 
-      recoveryDuration = System.currentTimeMillis() - recoveryStartTime;
+      long recoveryProcessEndTime = System.currentTimeMillis();
+      LOG.info("Took a total of " 
+               + StringUtils.formatTime(recoveryProcessEndTime
+                                        - recoveryStartTime) 
+               + " for parsing and recovering all the jobs from history.");
+
+      recoveryDuration = recoveryProcessEndTime - recoveryProcessStartTime;
+      LOG.info("Took a total of " + StringUtils.formatTime(recoveryDuration) 
+               + " for the whole recovery process.");
       hasRecovered = true;
 
       // III. Finalize the recovery
       synchronized (trackerExpiryQueue) {
         // Make sure that the tracker statuses in the expiry-tracker queue
         // are updated
-        long now = System.currentTimeMillis();
         int size = trackerExpiryQueue.size();
         for (int i = 0; i < size ; ++i) {
           // Get the first status
@@ -1330,14 +1344,14 @@ public class JobTracker implements MRConstants, InterTrackerProtocol,
           trackerExpiryQueue.remove(status);
 
           // Set the new time
-          status.setLastSeen(now);
+          status.setLastSeen(recoveryProcessEndTime);
 
           // Add back to get the sorted list
           trackerExpiryQueue.add(status);
         }
       }
 
-      LOG.info("Restoration complete");
+      LOG.info("Restoration done. Recovery complete!");
     }
     
     int totalEventsRecovered() {