Browse Source

YARN-7879. NM user is unable to access the application filecache due to permissions. Contributed by Jason Lowe.

Miklos Szegedi 7 years ago
parent
commit
c7101fe21b

+ 2 - 5
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java

@@ -401,7 +401,7 @@ public class FSDownload implements Callable<Path> {
     }
 
     final Path destinationTmp = new Path(destDirPath + "_tmp");
-    createDir(destinationTmp, PRIVATE_DIR_PERMS);
+    createDir(destinationTmp, cachePerms);
     Path dFinal =
         files.makeQualified(new Path(destinationTmp, sCopy.getName()));
     try {
@@ -416,10 +416,7 @@ public class FSDownload implements Callable<Path> {
           }
         });
       }
-      Path destinationTmpfilesQualified = files.makeQualified(destinationTmp);
-      changePermissions(
-          destinationTmpfilesQualified.getFileSystem(conf),
-          destinationTmpfilesQualified);
+      changePermissions(dFinal.getFileSystem(conf), dFinal);
       files.rename(destinationTmp, destDirPath, Rename.OVERWRITE);
 
       if (LOG.isDebugEnabled()) {

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestFSDownload.java

@@ -451,7 +451,7 @@ public class TestFSDownload {
         FileStatus status = files.getFileStatus(localized.getParent());
         FsPermission perm = status.getPermission();
         assertEquals("Cache directory permissions are incorrect",
-            new FsPermission((short)0700), perm);
+            new FsPermission((short)0755), perm);
 
         status = files.getFileStatus(localized);
         perm = status.getPermission();