hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From su...@apache.org
Subject [18/50] hadoop git commit: HADOOP-13073 RawLocalFileSystem does not react on changing umask. Contributed by Andras Bokor
Date Tue, 19 Jul 2016 22:01:58 GMT
HADOOP-13073 RawLocalFileSystem does not react on changing umask. Contributed by Andras Bokor


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/45af585e
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/45af585e
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/45af585e

Branch: refs/heads/YARN-2915
Commit: 45af585e7ad23e7d5a5bc4dade00723d315ef6b2
Parents: 1fa1fab
Author: Steve Loughran <stevel@apache.org>
Authored: Thu Jul 14 10:29:29 2016 +0100
Committer: Steve Loughran <stevel@apache.org>
Committed: Thu Jul 14 10:29:29 2016 +0100

----------------------------------------------------------------------
 .../apache/hadoop/fs/RawLocalFileSystem.java    |  7 +--
 .../fs/TestLocalFileSystemPermission.java       | 56 +++++++++++++++++++-
 2 files changed, 56 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/45af585e/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
index cc41f4a..0fcddcf 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java
@@ -64,8 +64,6 @@ public class RawLocalFileSystem extends FileSystem {
   // Temporary workaround for HADOOP-9652.
   private static boolean useDeprecatedFileStatus = true;
 
-  private FsPermission umask;
-
   @VisibleForTesting
   public static void useStatIfAvailable() {
     useDeprecatedFileStatus = !Stat.isAvailable();
@@ -99,7 +97,6 @@ public class RawLocalFileSystem extends FileSystem {
   public void initialize(URI uri, Configuration conf) throws IOException {
     super.initialize(uri, conf);
     setConf(conf);
-    umask = FsPermission.getUMask(conf);
   }
   
   /*******************************************************
@@ -233,7 +230,7 @@ public class RawLocalFileSystem extends FileSystem {
       if (permission == null) {
         this.fos = new FileOutputStream(file, append);
       } else {
-        permission = permission.applyUMask(umask);
+        permission = permission.applyUMask(FsPermission.getUMask(getConf()));
         if (Shell.WINDOWS && NativeIO.isAvailable()) {
           this.fos = NativeIO.Windows.createFileOutputStreamWithMode(file,
               append, permission.toShort());
@@ -510,7 +507,7 @@ public class RawLocalFileSystem extends FileSystem {
     if (permission == null) {
       permission = FsPermission.getDirDefault();
     }
-    permission = permission.applyUMask(umask);
+    permission = permission.applyUMask(FsPermission.getUMask(getConf()));
     if (Shell.WINDOWS && NativeIO.isAvailable()) {
       try {
         NativeIO.Windows.createDirectoryWithMode(p2f, permission.toShort());

http://git-wip-us.apache.org/repos/asf/hadoop/blob/45af585e/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystemPermission.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystemPermission.java
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystemPermission.java
index e37de19..7252ab9 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystemPermission.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystemPermission.java
@@ -29,6 +29,10 @@ import java.util.*;
 
 import junit.framework.*;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
 /**
  * This class tests the local file system via the FileSystem abstraction.
  */
@@ -67,9 +71,9 @@ public class TestLocalFileSystemPermission extends TestCase {
       System.out.println("Cannot run test for Windows");
       return;
     }
-    Configuration conf = new Configuration();
+    LocalFileSystem localfs = FileSystem.getLocal(new Configuration());
+    Configuration conf = localfs.getConf();
     conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "044");
-    LocalFileSystem localfs = FileSystem.getLocal(conf);
     Path dir = new Path(TEST_PATH_PREFIX + "dir");
     localfs.mkdirs(dir);
     try {
@@ -237,6 +241,54 @@ public class TestLocalFileSystemPermission extends TestCase {
     finally {cleanup(localfs, f);}
   }
 
+  /**
+   * Steps:
+   * 1. Create a directory with default permissions: 777 with umask 022
+   * 2. Check the directory has good permissions: 755
+   * 3. Set the umask to 062.
+   * 4. Create a new directory with default permissions.
+   * 5. For this directory we expect 715 as permission not 755
+   * @throws Exception we can throw away all the exception.
+   */
+  public void testSetUmaskInRealTime() throws Exception {
+    if (Path.WINDOWS) {
+      System.out.println("Cannot run test for Windows");
+      return;
+    }
+
+    LocalFileSystem localfs = FileSystem.getLocal(new Configuration());
+    Configuration conf = localfs.getConf();
+    conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "022");
+    System.out.println(
+        conf.get(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY));
+    Path dir = new Path(TEST_PATH_PREFIX + "dir");
+    Path dir2 = new Path(TEST_PATH_PREFIX + "dir2");
+    try {
+      assertTrue(localfs.mkdirs(dir));
+      FsPermission initialPermission = getPermission(localfs, dir);
+      assertEquals(
+          "With umask 022 permission should be 755 since the default " +
+              "permission is 777", new FsPermission("755"), initialPermission);
+
+      // Modify umask and create a new directory
+      // and check if new umask is applied
+      conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "062");
+      assertTrue(localfs.mkdirs(dir2));
+      FsPermission finalPermission = localfs.getFileStatus(dir2)
+          .getPermission();
+      assertThat("With umask 062 permission should not be 755 since the " +
+          "default permission is 777", new FsPermission("755"),
+          is(not(finalPermission)));
+      assertEquals(
+          "With umask 062 we expect 715 since the default permission is 777",
+          new FsPermission("715"), finalPermission);
+    } finally {
+      conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "022");
+      cleanup(localfs, dir);
+      cleanup(localfs, dir2);
+    }
+  }
+
   static List<String> getGroups() throws IOException {
     List<String> a = new ArrayList<String>();
     String s = Shell.execCommand(Shell.getGroupsCommand());


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org


Mime
View raw message