HADOOP-18109. Ensure that default permissions of directories under internal ViewFS directories are the same as directories on target filesystems. Contributed by Chentao Yu. (3953)

This commit is contained in:
Chentao Yu 2021-04-15 17:46:40 -07:00 committed by Konstantin V Shvachko
parent 48bef285a8
commit 19d90e62fb
2 changed files with 19 additions and 5 deletions

View File

@ -1665,11 +1665,6 @@ public boolean mkdirs(Path dir, FsPermission permission)
throw readOnlyMountTable("mkdirs", dir);
}
@Override
public boolean mkdirs(Path dir) throws IOException {
return mkdirs(dir, null);
}
@Override
public FSDataInputStream open(Path f, int bufferSize)
throws AccessControlException, FileNotFoundException, IOException {

View File

@ -479,4 +479,23 @@ public Object run() throws IOException {
assertEquals("The owner did not match ", owner, userUgi.getShortUserName());
otherfs.delete(user1Path, false);
}
@Test
public void testInternalDirectoryPermissions() throws IOException {
LOG.info("Starting testInternalDirectoryPermissions!");
Configuration localConf = new Configuration(conf);
ConfigUtil.addLinkFallback(
localConf, new Path(targetTestRoot, "fallbackDir").toUri());
FileSystem fs = FileSystem.get(FsConstants.VIEWFS_URI, localConf);
// check that the default permissions on a sub-folder of an internal
// directory are the same as those created on non-internal directories.
Path subDirOfInternalDir = new Path("/internalDir/dir1");
fs.mkdirs(subDirOfInternalDir);
Path subDirOfRealDir = new Path("/internalDir/linkToDir2/dir1");
fs.mkdirs(subDirOfRealDir);
assertEquals(fs.getFileStatus(subDirOfInternalDir).getPermission(),
fs.getFileStatus(subDirOfRealDir).getPermission());
}
}