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)

(cherry picked from commit 19d90e62fb)
This commit is contained in:
Chentao Yu 2021-04-15 17:46:40 -07:00 committed by Konstantin V Shvachko
parent db67952f9f
commit d14a7c6ee5
2 changed files with 19 additions and 5 deletions

View File

@ -1579,11 +1579,6 @@ public class ViewFileSystem extends FileSystem {
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 class TestViewFileSystemHdfs extends ViewFileSystemBaseTest {
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());
}
}