This is an automated email from the ASF dual-hosted git repository. umamahesh pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new b3660d0 HDFS-15529: getChildFilesystems should include fallback fs as well (#2234). Contributed by Uma Maheswara Rao G. b3660d0 is described below commit b3660d014708de3d0fb04c9c152934f6020a65ae Author: Uma Maheswara Rao G <umamah...@apache.org> AuthorDate: Thu Sep 3 11:06:20 2020 -0700 HDFS-15529: getChildFilesystems should include fallback fs as well (#2234). Contributed by Uma Maheswara Rao G. --- .../main/java/org/apache/hadoop/fs/viewfs/InodeTree.java | 9 +++++++++ .../java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java | 6 ++++++ .../TestViewFileSystemOverloadSchemeWithHdfsScheme.java | 16 +++++++++++++--- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/InodeTree.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/InodeTree.java index 003694f..1f1adea 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/InodeTree.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/InodeTree.java @@ -394,6 +394,15 @@ abstract class InodeTree<T> { return rootFallbackLink != null; } + /** + * @return true if the root represented as internalDir. In LinkMergeSlash, + * there will be root to root mapping. So, root does not represent as + * internalDir. + */ + protected boolean isRootInternalDir() { + return root.isInternalDir(); + } + protected INodeLink<T> getRootFallbackLink() { Preconditions.checkState(root.isInternalDir()); return rootFallbackLink; diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java index 8c659d1..1ba91b5 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java @@ -939,6 +939,12 @@ public class ViewFileSystem extends FileSystem { FileSystem targetFs = mountPoint.target.targetFileSystem; children.addAll(Arrays.asList(targetFs.getChildFileSystems())); } + + if (fsState.isRootInternalDir() && fsState.getRootFallbackLink() != null) { + children.addAll(Arrays.asList( + fsState.getRootFallbackLink().targetFileSystem + .getChildFileSystems())); + } return children.toArray(new FileSystem[]{}); } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemOverloadSchemeWithHdfsScheme.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemOverloadSchemeWithHdfsScheme.java index 31674f8..9a858e1 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemOverloadSchemeWithHdfsScheme.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemOverloadSchemeWithHdfsScheme.java @@ -476,10 +476,18 @@ public class TestViewFileSystemOverloadSchemeWithHdfsScheme { // 2. Two hdfs file systems should be there if no cache. conf.setBoolean(Constants.CONFIG_VIEWFS_ENABLE_INNER_CACHE, false); try (FileSystem vfs = FileSystem.get(conf)) { - Assert.assertEquals(2, vfs.getChildFileSystems().length); + Assert.assertEquals(isFallBackExist(conf) ? 3 : 2, + vfs.getChildFileSystems().length); } } + // HDFS-15529: if any extended tests added fallback, then getChildFileSystems + // will include fallback as well. + private boolean isFallBackExist(Configuration config) { + return config.get(ConfigUtil.getConfigViewFsPrefix(defaultFSURI + .getAuthority()) + "." + Constants.CONFIG_VIEWFS_LINK_FALLBACK) != null; + } + /** * Create mount links as follows * hdfs://localhost:xxx/HDFSUser0 --> hdfs://localhost:xxx/HDFSUser/ @@ -501,7 +509,8 @@ public class TestViewFileSystemOverloadSchemeWithHdfsScheme { conf.setBoolean(Constants.CONFIG_VIEWFS_ENABLE_INNER_CACHE, false); // Two hdfs file systems should be there if no cache. try (FileSystem vfs = FileSystem.get(conf)) { - Assert.assertEquals(2, vfs.getChildFileSystems().length); + Assert.assertEquals(isFallBackExist(conf) ? 3 : 2, + vfs.getChildFileSystems().length); } } @@ -528,7 +537,8 @@ public class TestViewFileSystemOverloadSchemeWithHdfsScheme { // cache should work. conf.setBoolean(Constants.CONFIG_VIEWFS_ENABLE_INNER_CACHE, false); try (FileSystem vfs = FileSystem.get(conf)) { - Assert.assertEquals(1, vfs.getChildFileSystems().length); + Assert.assertEquals(isFallBackExist(conf) ? 2 : 1, + vfs.getChildFileSystems().length); } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org