Pārlūkot izejas kodu

HADOOP-705. Fix a bug in the JobTracker when failed jobs were not completely cleaned up. Contributed by Mahadev.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@474907 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 18 gadi atpakaļ
vecāks
revīzija
7ab58423d2
2 mainītis faili ar 16 papildinājumiem un 1 dzēšanām
  1. 3 0
      CHANGES.txt
  2. 13 1
      src/java/org/apache/hadoop/mapred/TaskTracker.java

+ 3 - 0
CHANGES.txt

@@ -53,6 +53,9 @@ Trunk (unreleased changes)
 16. HADOOP-646.  Fix namenode to handle edits files larger than 2GB.
     (Milind Bhandarkar via cutting)
 
+17. HADOOP-705.  Fix a bug in the JobTracker when failed jobs were
+    not completely cleaned up.  (Mahadev Konar via cutting)
+
 
 Release 0.8.0 - 2006-11-03
 

+ 13 - 1
src/java/org/apache/hadoop/mapred/TaskTracker.java

@@ -276,13 +276,25 @@ public class TaskTracker
                                   jobId + Path.SEPARATOR + "job.jar");
   
           String jobFile = t.getJobFile();
+          FileSystem localFs = FileSystem.getNamed("local", fConf);
+          // this will happen on a partial execution of localizeJob.
+          // Sometimes the job.xml gets copied but copying job.jar
+          // might throw out an exception
+          // we should clean up and then try again
+          Path jobDir = localJobFile.getParent();
+          if (localFs.exists(jobDir)){
+            localFs.delete(jobDir);
+            boolean b = localFs.mkdirs(jobDir);
+            if (!b)
+              throw new IOException("Not able to create job directory "
+                  + jobDir.toString());
+          }
           fs.copyToLocalFile(new Path(jobFile), localJobFile);
           JobConf localJobConf = new JobConf(localJobFile);
           String jarFile = localJobConf.getJar();
           if (jarFile != null) {
             fs.copyToLocalFile(new Path(jarFile), localJarFile);
             localJobConf.setJar(localJarFile.toString());
-            FileSystem localFs = FileSystem.getNamed("local", fConf);
             OutputStream out = localFs.create(localJobFile);
             try {
               localJobConf.write(out);