You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by om...@apache.org on 2011/03/04 05:38:31 UTC

svn commit: r1077632 - in /hadoop/common/branches/branch-0.20-security-patches/src: mapred/org/apache/hadoop/mapred/JobHistory.java test/org/apache/hadoop/mapred/TestJobHistory.java

Author: omalley
Date: Fri Mar  4 04:38:30 2011
New Revision: 1077632

URL: http://svn.apache.org/viewvc?rev=1077632&view=rev
Log:
commit ef735b317e99351d7a98b11fa48de4dc9a55bd8b
Author: Arun C Murthy <ac...@apache.org>
Date:   Tue Aug 3 15:27:20 2010 -0700

    MAPREDUCE-323. Fixed job history files' permissions.

Modified:
    hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobHistory.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestJobHistory.java

Modified: hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobHistory.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobHistory.java?rev=1077632&r1=1077631&r2=1077632&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobHistory.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/mapred/org/apache/hadoop/mapred/JobHistory.java Fri Mar  4 04:38:30 2011
@@ -402,7 +402,7 @@ public class JobHistory {
       if (!DONEDIR_FS.exists(dir)) {
         LOG.info("Creating DONE subfolder at "+ dir);
 
-        if (!DONEDIR_FS.mkdirs(dir,
+        if (!FileSystem.mkdirs(DONEDIR_FS, dir,
                                new FsPermission(HISTORY_DIR_PERMISSION))) {
           throw new IOException("Mkdirs failed to create " + dir.toString());
         }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestJobHistory.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestJobHistory.java?rev=1077632&r1=1077631&r2=1077632&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestJobHistory.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/mapred/TestJobHistory.java Fri Mar  4 04:38:30 2011
@@ -32,8 +32,10 @@ import java.util.regex.Pattern;
 import junit.framework.TestCase;
 
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.PathFilter;
 import org.apache.hadoop.fs.permission.FsPermission;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.mapred.JobHistory.*;
@@ -885,7 +887,32 @@ public class TestJobHistory extends Test
 
       assertTrue("Completed job and config file aren't in the same directory",
                  confFile.getParent().toString().equals(logFile.getParent().toString()));
+
+      // Test that all of the ancestors of the log file have the same
+      //   permissions as the done directory
       
+      Path cursor = logFile.getParent();
+
+      Path doneParent = doneDir.getParent();
+
+      FsPermission donePermission = getStatus(fileSys, doneDir).getPermission();
+
+      System.err.println("testDoneFolderOnHDFS: done dir permission = "
+                         + donePermission);
+
+      while (!cursor.equals(doneParent)) {
+        FileStatus cursorStatus = getStatus(fileSys, cursor);
+        FsPermission cursorPermission = cursorStatus.getPermission();
+
+        assertEquals("testDoneFolderOnHDFS: A done directory descendant, "
+                     + cursor
+                     + " does not have the same permisison as the done directory, "
+                     + doneDir,
+                     donePermission,
+                     cursorPermission);
+
+        cursor = cursor.getParent();
+      }      
 
       // check if the job file is removed from the history location 
       Path runningJobsHistoryFolder = logFile.getParent().getParent();
@@ -910,6 +937,26 @@ public class TestJobHistory extends Test
     }
   }
 
+  private static FileStatus getStatus(FileSystem fs, final Path path) {
+    Path pathParent = path.getParent();
+
+    try {
+      FileStatus[] statuses
+        = fs.listStatus(pathParent,
+                        new PathFilter() {
+                          @Override
+                            public boolean accept(Path filterPath) {
+                            return filterPath.getName().equals(path.getName());
+                          }
+                        }
+                        );
+
+      return statuses[0];
+    } catch (IOException e) {
+      return null;
+    }
+  }
+
   /** Run a job that will be succeeded and validate its history file format
    *  and its content.
    */