You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by um...@apache.org on 2020/09/13 03:50:30 UTC
[hadoop] branch branch-3.3 updated: HDFS-15529: getChildFilesystems
should include fallback fs as well (#2234). Contributed by Uma Maheswara
Rao G.
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 <um...@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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org