Author: ddas
Date: Mon Jan 14 02:56:35 2008
New Revision: 611760

URL: http://svn.apache.org/viewvc?rev=611760&view=rev
Log:
HADOOP-2570. "work" directory created unconditionally, and symlinks created 
from the task cwds. Contributed by Arun Murthy and Amareshwari Sri Ramadasu.

Modified:
    lucene/hadoop/trunk/CHANGES.txt
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java

Modified: lucene/hadoop/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?rev=611760&r1=611759&r2=611760&view=diff
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Mon Jan 14 02:56:35 2008
@@ -443,6 +443,9 @@
 
     HADOOP-2540. fsck reports missing blocks incorrectly. (dhruba)
 
+    HADOOP-2570. "work" directory created unconditionally, and symlinks
+    created from the task cwds.
+
 Release 0.15.2 - 2008-01-02
 
   BUG FIXES

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java?rev=611760&r1=611759&r2=611760&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java 
(original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java Mon 
Jan 14 02:56:35 2008
@@ -655,6 +655,17 @@
         }
         fs.copyToLocalFile(new Path(jobFile), localJobFile);
         JobConf localJobConf = new JobConf(localJobFile);
+        
+        // create the 'work' directory
+        File workDir = new File(new File(localJobFile.toString()).getParent(),
+                                "work");
+        if (!workDir.mkdirs()) {
+          if (!workDir.isDirectory()) {
+            throw new IOException("Mkdirs failed to create " + 
workDir.toString());
+          }
+        }
+        
+        // unjar the job.jar files in workdir
         String jarFile = localJobConf.getJar();
         if (jarFile != null) {
           localJarFile = new Path(jobDir,"job.jar");
@@ -667,15 +678,6 @@
             out.close();
           }
 
-          // also unjar the job.jar files in workdir
-          File workDir = new File(
-                                  new 
File(localJobFile.toString()).getParent(),
-                                  "work");
-          if (!workDir.mkdirs()) {
-            if (!workDir.isDirectory()) {
-              throw new IOException("Mkdirs failed to create " + 
workDir.toString());
-            }
-          }
           RunJar.unJar(new File(localJarFile.toString()), workDir);
         }
         rjob.keepJobFiles = ((localJobConf.getKeepTaskFilesPattern() != null) 
||
@@ -1391,6 +1393,20 @@
                     Path.SEPARATOR + task.getJobId() + Path.SEPARATOR +
                     task.getTaskId()), defaultJobConf );
       FileSystem localFs = FileSystem.getLocal(fConf);
+      
+      // create symlink for ../work if it already doesnt exist
+      String workDir = lDirAlloc.getLocalPathToRead(
+                         TaskTracker.getJobCacheSubdir() 
+                         + Path.SEPARATOR + task.getJobId() 
+                         + Path.SEPARATOR  
+                         + "work", defaultJobConf).toString();
+      String link = localTaskDir.getParent().toString() 
+                      + Path.SEPARATOR + "work";
+      File flink = new File(link);
+      if (!flink.exists())
+        FileUtil.symLink(workDir, link);
+      
+      // create the working-directory of the task 
       if (!localFs.mkdirs(localTaskDir)) {
         throw new IOException("Mkdirs failed to create " + 
localTaskDir.toString());
       }


Reply via email to