ferhui commented on a change in pull request #3970:
URL: https://github.com/apache/hadoop/pull/3970#discussion_r805750088



##########
File path: 
hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/TestDistCpSystem.java
##########
@@ -551,4 +554,41 @@ public void testSourceRoot() throws Exception {
     String[] args2 = new String[]{rootStr, tgtStr2};
     Assert.assertThat(ToolRunner.run(conf, new DistCp(), args2), is(0));
   }
+
+  @Test
+  public void testUpdateRootDirectoryAttributes() throws Exception {
+    FileSystem fs = cluster.getFileSystem();
+
+    Path source = new Path("/src");
+    Path dest1 = new Path("/dest1");
+    Path dest2 = new Path("/dest2");
+
+    fs.delete(source, true);
+    fs.delete(dest1, true);
+    fs.delete(dest2, true);
+
+    // Create a source dir
+    fs.mkdirs(source);
+    fs.setOwner(source, "userA", "groupA");
+    fs.setTimes(source, new Random().nextLong(), new Random().nextLong());
+
+    GenericTestUtils.createFiles(fs, source, 3, 5, 5);
+
+    // should not preserve attrs
+    DistCpTestUtils.assertRunDistCp(DistCpConstants.SUCCESS, source.toString(),
+        dest1.toString(), "-p -update", conf);
+
+    FileStatus srcStatus = fs.getFileStatus(source);
+    FileStatus destStatus1 = fs.getFileStatus(dest1);
+    assertNotEquals(destStatus1.getOwner(), srcStatus.getOwner());
+    assertNotEquals(destStatus1.getModificationTime(), 
srcStatus.getModificationTime());
+
+    // should preserve attrs
+    DistCpTestUtils.assertRunDistCp(DistCpConstants.SUCCESS, source.toString(),
+        dest2.toString(), "-p -update -updateRootDirectoryAttributes", conf);
+
+    FileStatus destStatus2 = fs.getFileStatus(dest2);
+    assertEquals(destStatus2.getOwner(), srcStatus.getOwner());

Review comment:
       Should exchange the expected actual objects in assertEquals.
   srcStatus.getOwner() is the expected one, destStatus2.getOwner() is the 
actual one.

##########
File path: hadoop-tools/hadoop-distcp/src/site/markdown/DistCp.md.vm
##########
@@ -363,6 +363,7 @@ Command Line Options
 | `-xtrack <path>` | Save information about missing source files to the 
specified path. | This option is only valid with `-update` option. This is an 
experimental property and it cannot be used with `-atomic` option. |
 | `-direct` | Write directly to destination paths | Useful for avoiding 
potentially very expensive temporary file rename operations when the 
destination is an object store |
 | `-useiterator` | Uses single threaded listStatusIterator to build listing | 
Useful for saving memory at the client side. Using this option will ignore the 
numListstatusThreads option |
+| `-updateRootDirectoryAttributes` | Update root directory attributes (eg 
permissions, ownership ...) | Useful if you need to enforce root directory 
attributes update when using distcp |

Review comment:
       Could you replace updateRoot instead of updateRootDirectoryAttributes or 
give another short name?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to