This is an automated email from the ASF dual-hosted git repository. umamahesh pushed a commit to branch branch-3.3 in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.3 by this push: new 1195dac HDFS-15529: getChildFilesystems should include fallback fs as well (#2234). Contributed by Uma Maheswara Rao G. 1195dac is described below commit 1195dac55e995eeea22cded88be602030c09cf2d 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. (cherry picked from commit b3660d014708de3d0fb04c9c152934f6020a65ae) --- .../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 dbcd9b4..fceb73a 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 @@ -408,6 +408,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 0e190a3..b906996 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 @@ -959,6 +959,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