This is an automated email from the ASF dual-hosted git repository. shv pushed a commit to branch branch-2.10 in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-2.10 by this push: new cb5af00 HDFS-10650. DFSClient#mkdirs and DFSClient#primitiveMkdir should use default directory permission. Contributed by John Zhuge. cb5af00 is described below commit cb5af0012ed94bb8ab63cfdcdfcd1ab17f6660bb Author: Xiao Chen <x...@apache.org> AuthorDate: Thu Jul 28 13:15:02 2016 -0700 HDFS-10650. DFSClient#mkdirs and DFSClient#primitiveMkdir should use default directory permission. Contributed by John Zhuge. --- .../src/main/java/org/apache/hadoop/hdfs/DFSClient.java | 14 ++++++++++---- .../java/org/apache/hadoop/security/TestPermission.java | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java index ad4e499..32553fb 100755 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java @@ -1209,6 +1209,13 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, return permission.applyUMask(dfsClientConf.getUMask()); } + private FsPermission applyUMaskDir(FsPermission permission) { + if (permission == null) { + permission = FsPermission.getDirDefault(); + } + return permission.applyUMask(dfsClientConf.getUMask()); + } + /** * Same as {@link #create(String, FsPermission, EnumSet, boolean, short, long, * Progressable, int, ChecksumOpt)} with the addition of favoredNodes that is @@ -2458,7 +2465,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, * * @param src The path of the directory being created * @param permission The permission of the directory being created. - * If permission == null, use {@link FsPermission#getDefault()}. + * If permission == null, use {@link FsPermission#getDirDefault()}. * @param createParent create missing parent directory if true * * @return True if the operation success. @@ -2467,7 +2474,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, */ public boolean mkdirs(String src, FsPermission permission, boolean createParent) throws IOException { - final FsPermission masked = applyUMask(permission); + final FsPermission masked = applyUMaskDir(permission); return primitiveMkdir(src, masked, createParent); } @@ -2488,9 +2495,8 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, boolean createParent) throws IOException { checkOpen(); if (absPermission == null) { - absPermission = applyUMask(null); + absPermission = applyUMaskDir(null); } - LOG.debug("{}: masked={}", src, absPermission); try (TraceScope ignored = tracer.newScope("mkdir")) { return namenode.mkdirs(src, absPermission, createParent); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java index 5e4f693..d3a4956 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java @@ -53,6 +53,7 @@ public class TestPermission { final private static Path ROOT_PATH = new Path("/data"); final private static Path CHILD_DIR1 = new Path(ROOT_PATH, "child1"); final private static Path CHILD_DIR2 = new Path(ROOT_PATH, "child2"); + final private static Path CHILD_DIR3 = new Path(ROOT_PATH, "child3"); final private static Path CHILD_FILE1 = new Path(ROOT_PATH, "file1"); final private static Path CHILD_FILE2 = new Path(ROOT_PATH, "file2"); final private static Path CHILD_FILE3 = new Path(ROOT_PATH, "file3"); @@ -237,6 +238,9 @@ public class TestPermission { // following dir/file creations are legal nnfs.mkdirs(CHILD_DIR1); + status = nnfs.getFileStatus(CHILD_DIR1); + assertThat("Expect 755 = 777 (default dir) - 022 (default umask)", + status.getPermission().toString(), is("rwxr-xr-x")); out = nnfs.create(CHILD_FILE1); status = nnfs.getFileStatus(CHILD_FILE1); assertTrue(status.getPermission().toString().equals("rw-r--r--")); @@ -248,6 +252,12 @@ public class TestPermission { status = nnfs.getFileStatus(CHILD_FILE1); assertTrue(status.getPermission().toString().equals("rwx------")); + // mkdirs with null permission + nnfs.mkdirs(CHILD_DIR3, null); + status = nnfs.getFileStatus(CHILD_DIR3); + assertThat("Expect 755 = 777 (default dir) - 022 (default umask)", + status.getPermission().toString(), is("rwxr-xr-x")); + // following read is legal byte dataIn[] = new byte[FILE_LEN]; FSDataInputStream fin = nnfs.open(CHILD_FILE1); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org