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 Steve Loughran
parent 686a934a5e
commit 38d448e40b
No known key found for this signature in database
GPG Key ID: D22CF846DBB162A0
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());
}
}