Browse Source

HADOOP-694. Fix a NullPointerException in jobtracker. Contributed by Mahadev.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@472709 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 19 năm trước cách đây
mục cha
commit
c733c780a1
2 tập tin đã thay đổi với 13 bổ sung5 xóa
  1. 3 0
      CHANGES.txt
  2. 10 5
      src/java/org/apache/hadoop/mapred/JobTracker.java

+ 3 - 0
CHANGES.txt

@@ -31,6 +31,9 @@ Trunk (unreleased changes)
  9. HADOOP-459.  Fix memory leaks and a host of other issues with
     libhdfs.  (Sameer Paranjpye via cutting)
 
+10. HADOOP-694.  Fix a NullPointerException in jobtracker.
+    (Mahadev Konar via cutting)
+
 
 Release 0.8.0 - 2006-11-03
 

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

@@ -140,11 +140,16 @@ public class JobTracker implements MRConstants, InterTrackerProtocol, JobSubmiss
                       String trackerName = getAssignedTracker(taskId);
                       TaskTrackerStatus trackerStatus = 
                         getTaskTracker(trackerName);
-                      job.failedTask(tip, taskId, "Error launching task", 
-                                     tip.isMapTask()? TaskStatus.Phase.MAP:
-                                       TaskStatus.Phase.STARTING,
-                                     trackerStatus.getHost(), trackerName,
-                                     myMetrics);
+                      // This might happen when the tasktracker has already
+                      // expired and this thread tries to call failedtask
+                      // again. expire tasktracker should have called failed
+                      // task!
+                      if (trackerStatus != null)
+                        job.failedTask(tip, taskId, "Error launching task", 
+                                       tip.isMapTask()? TaskStatus.Phase.MAP:
+                                         TaskStatus.Phase.STARTING,
+                                       trackerStatus.getHost(), trackerName,
+                                       myMetrics);
                     }
                     itr.remove();
                   } else {