Author: bobby Date: Mon Sep 17 21:14:14 2012 New Revision: 1386844 URL: http://svn.apache.org/viewvc?rev=1386844&view=rev Log: svn merge -c 1386838 FIXES: YARN-108. FSDownload can create cache directories with the wrong permissions (Jason Lowe via bobby)
Modified: hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestFSDownload.java Modified: hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt?rev=1386844&r1=1386843&r2=1386844&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt Mon Sep 17 21:14:14 2012 @@ -12,6 +12,9 @@ Release 0.23.4 - UNRELEASED BUG FIXES + YARN-108. FSDownload can create cache directories with the wrong + permissions (Jason Lowe via bobby) + Release 0.23.3 - Unreleased INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java?rev=1386844&r1=1386843&r2=1386844&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java Mon Sep 17 21:14:14 2012 @@ -82,6 +82,13 @@ public class FSDownload implements Calla return resource; } + private void createDir(Path path, FsPermission perm) throws IOException { + files.mkdir(path, perm, false); + if (!perm.equals(files.getUMask().applyUMask(perm))) { + files.setPermission(path, perm); + } + } + private Path copy(Path sCopy, Path dstdir) throws IOException { FileSystem sourceFs = sCopy.getFileSystem(conf); Path dCopy = new Path(dstdir, sCopy.getName() + ".tmp"); @@ -144,9 +151,9 @@ public class FSDownload implements Calla } while (files.util().exists(tmp)); destDirPath = tmp; - files.mkdir(destDirPath, cachePerms, false); + createDir(destDirPath, cachePerms); final Path dst_work = new Path(destDirPath + "_tmp"); - files.mkdir(dst_work, cachePerms, false); + createDir(dst_work, cachePerms); Path dFinal = files.makeQualified(new Path(dst_work, sCopy.getName())); try { Modified: hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestFSDownload.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestFSDownload.java?rev=1386844&r1=1386843&r2=1386844&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestFSDownload.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestFSDownload.java Mon Sep 17 21:14:14 2012 @@ -42,6 +42,7 @@ import junit.framework.Assert; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.CommonConfigurationKeys; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileContext; import org.apache.hadoop.fs.FileStatus; @@ -115,6 +116,7 @@ public class TestFSDownload { public void testDownload() throws IOException, URISyntaxException, InterruptedException { Configuration conf = new Configuration(); + conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "077"); FileContext files = FileContext.getLocalFSFileContext(conf); final Path basedir = files.makeQualified(new Path("target", TestFSDownload.class.getSimpleName())); @@ -162,8 +164,14 @@ public class TestFSDownload { Path localized = p.getValue().get(); assertEquals(sizes[Integer.valueOf(localized.getName())], p.getKey() .getSize()); - FileStatus status = files.getFileStatus(localized); + + FileStatus status = files.getFileStatus(localized.getParent()); FsPermission perm = status.getPermission(); + assertEquals("Cache directory permissions are incorrect", + new FsPermission((short)0755), perm); + + status = files.getFileStatus(localized); + perm = status.getPermission(); System.out.println("File permission " + perm + " for rsrc vis " + p.getKey().getVisibility().name()); assert(rsrcVis.containsKey(p.getKey()));