[
https://issues.apache.org/jira/browse/HDFS-16954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17714336#comment-17714336
]
ASF GitHub Bot commented on HDFS-16954:
---------------------------------------
ayushtkn commented on code in PR #5483:
URL: https://github.com/apache/hadoop/pull/5483#discussion_r1171932550
##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRPCMultipleDestinationMountTableResolver.java:
##########
@@ -720,6 +720,48 @@ public void testWriteWithUnavailableSubCluster() throws
IOException {
}
}
+ /**
+ * Test rename a dir from src dir (mapped to both ns0 and ns1) to ns0.
+ */
+ @Test
+ public void testRenameWithMultiDestinations() throws Exception {
+ //create a mount point with multiple destinations
+ String srcDir = "/mount-source-dir";
+ Path path = new Path(srcDir);
+ Map<String, String> destMap = new HashMap<>();
+ destMap.put("ns0", srcDir);
+ destMap.put("ns1", srcDir);
+ nnFs0.mkdirs(path);
+ nnFs1.mkdirs(path);
+ MountTable addEntry =
+ MountTable.newInstance(srcDir, destMap);
+ addEntry.setDestOrder(DestinationOrder.RANDOM);
+ addEntry.setFaultTolerant(true);
Review Comment:
fault tolerant wasn't required as such IMO, but ok no harm
> RBF: The operation of renaming a multi-subcluster directory to a
> single-cluster directory should throw ioexception
> ------------------------------------------------------------------------------------------------------------------
>
> Key: HDFS-16954
> URL: https://issues.apache.org/jira/browse/HDFS-16954
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: rbf
> Affects Versions: 3.4.0
> Reporter: Max Xie
> Assignee: Max Xie
> Priority: Minor
> Labels: pull-request-available
>
> The operation of renaming a multi-subcluster directory to a single-cluster
> directory may cause inconsistent behavior of the file system. This operation
> should throw exception to be reasonable.
> Examples are as follows:
> 1. add hash_all mount point `hdfs dfsrouteradmin -add /tmp/foo
> subcluster1,subcluster2 /tmp/foo -order HASH_ALL`
> 2. add mount point `hdfs dfsrouteradmin -add /user/foo subcluster1
> /user/foo`
> 3. mkdir dir for all subcluster. ` hdfs dfs -mkdir /tmp/foo/123 `
> 4. check dir and all subclusters will have dir `/tmp/foo/123`
> `hdfs dfs -ls /tmp/foo/` : will show dir `/tmp/foo/123`;
> `hdfs dfs -ls hdfs://subcluster1/tmp/foo/` : will show dir
> `hdfs://subcluster1/tmp/foo/123`;
> `hdfs dfs -ls hdfs://subcluster2/tmp/foo/` : will show dir
> `hdfs://subcluster2/tmp/foo/123`;
> 5. rename `/tmp/foo/123` to `/user/foo/123`. The op will succeed. `hdfs dfs
> -mv /tmp/foo/123 /user/foo/123 `
> 6. check dir again, rbf cluster still show dir `/tmp/foo/123`
> `hdfs dfs -ls /tmp/foo/` : will show dir `/tmp/foo/123`;
> `hdfs dfs -ls hdfs://subcluster1/tmp/foo/` : will no dirs;
> `hdfs dfs -ls hdfs://subcluster2/tmp/foo/` : will show dir
> `hdfs://subcluster2/tmp/foo/123`;
> The step 5 should throw exception.
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]