This is an automated email from the ASF dual-hosted git repository.

wlo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 2917b6311 [GOBBLIN-1866] Preserve sticky bit across distcp copies 
(#3726)
2917b6311 is described below

commit 2917b6311949d25f898a6691fe0730d344299d25
Author: y242yang <[email protected]>
AuthorDate: Wed Aug 2 15:06:55 2023 -0700

    [GOBBLIN-1866] Preserve sticky bit across distcp copies (#3726)
    
    * [gobblin] move sticky bit
    
    * [gobblin] add unit test to sticky bit
    
    ---------
    
    Co-authored-by: Yiming Yang <[email protected]>
---
 .../writer/FileAwareInputStreamDataWriter.java     |  2 +-
 .../writer/FileAwareInputStreamDataWriterTest.java | 25 ++++++++--------------
 2 files changed, 10 insertions(+), 17 deletions(-)

diff --git 
a/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriter.java
 
b/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriter.java
index 837174c20..2712cc67e 100644
--- 
a/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriter.java
+++ 
b/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriter.java
@@ -417,7 +417,7 @@ public class FileAwareInputStreamDataWriter extends 
InstrumentedDataWriter<FileA
 
   static FsPermission addExecutePermissionToOwner(FsPermission fsPermission) {
     FsAction newOwnerAction = 
fsPermission.getUserAction().or(FsAction.EXECUTE);
-    return new FsPermission(newOwnerAction, fsPermission.getGroupAction(), 
fsPermission.getOtherAction());
+    return new FsPermission(newOwnerAction, fsPermission.getGroupAction(), 
fsPermission.getOtherAction(), fsPermission.getStickyBit());
   }
 
   @Override
diff --git 
a/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriterTest.java
 
b/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriterTest.java
index bb88c2f71..8807de3f8 100644
--- 
a/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriterTest.java
+++ 
b/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/writer/FileAwareInputStreamDataWriterTest.java
@@ -574,22 +574,15 @@ public class FileAwareInputStreamDataWriterTest {
 
   @Test
   public void testAddExecutePermission() {
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("000")),
-        new FsPermission("100"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("100")),
-        new FsPermission("100"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("200")),
-        new FsPermission("300"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("400")),
-        new FsPermission("500"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("600")),
-        new FsPermission("700"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("700")),
-        new FsPermission("700"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("211")),
-        new FsPermission("311"));
-    
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission("250")),
-        new FsPermission("350"));
+    String[] setPermissions = {"000", "100", "200", "400", "600", "700", 
"211", "250"};
+    String[] expectPermissions = {"100", "100", "300", "500", "700", "700", 
"311", "350"};
+    String[] stickyBit = {"" ,"1"};
+    for (String bit : stickyBit) {
+      for (int index = 0; index < setPermissions.length; ++index) {
+        
Assert.assertEquals(FileAwareInputStreamDataWriter.addExecutePermissionToOwner(new
 FsPermission(bit + setPermissions[index])),
+                new FsPermission(bit + expectPermissions[index]));
+      }
+    }
   }
 
   @Test

Reply via email to