[ https://issues.apache.org/jira/browse/GOBBLIN-1720?focusedWorklogId=824387&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-824387 ]
ASF GitHub Bot logged work on GOBBLIN-1720: ------------------------------------------- Author: ASF GitHub Bot Created on: 09/Nov/22 00:45 Start Date: 09/Nov/22 00:45 Worklog Time Spent: 10m Work Description: meethngala commented on code in PR #3577: URL: https://github.com/apache/gobblin/pull/3577#discussion_r1017273123 ########## gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/iceberg/IcebergDatasetTest.java: ########## @@ -246,52 +246,74 @@ public void testGenerateCopyEntitiesMultiSnapshotWhenDestEmpty() throws IOExcept MANIFEST_LIST_PATH_1, MANIFEST_PATH_1, MANIFEST_DATA_PATH_1A, MANIFEST_DATA_PATH_1B); MockFileSystemBuilder sourceBuilder = new MockFileSystemBuilder(SRC_FS_URI); - sourceBuilder.addPaths(expectedPaths); + sourceBuilder.addPathsAndFileStatuses(expectedPaths, false); FileSystem sourceFs = sourceBuilder.build(); IcebergTable icebergTable = MockIcebergTable.withSnapshots(Arrays.asList(SNAPSHOT_PATHS_1, SNAPSHOT_PATHS_0)); - IcebergDataset icebergDataset = new TrickIcebergDataset(testDbName, testTblName, icebergTable, new Properties(), sourceFs); + IcebergDataset icebergDataset = + new TrickIcebergDataset(testDbName, testTblName, icebergTable, new Properties(), sourceFs); MockFileSystemBuilder destBuilder = new MockFileSystemBuilder(DEST_FS_URI); FileSystem destFs = destBuilder.build(); - CopyConfiguration copyConfiguration = CopyConfiguration.builder(destFs, copyConfigProperties) - .preserve(PreserveAttributes.fromMnemonicString("")) - .copyContext(new CopyContext()) - .build(); + CopyConfiguration copyConfiguration = + CopyConfiguration.builder(destFs, copyConfigProperties).preserve(PreserveAttributes.fromMnemonicString("")) + .copyContext(new CopyContext()).build(); Collection<CopyEntity> copyEntities = icebergDataset.generateCopyEntities(destFs, copyConfiguration); verifyCopyEntities(copyEntities, expectedPaths); } + @Test + public void testFsOwnershipAndPermissionPreservationWhenDestEmpty() throws IOException { + List<String> expectedPaths = Arrays.asList(METADATA_PATH, MANIFEST_LIST_PATH_0, + MANIFEST_PATH_0, MANIFEST_DATA_PATH_0A, MANIFEST_DATA_PATH_0B); + MockFileSystemBuilder sourceBuilder = new MockFileSystemBuilder(SRC_FS_URI); + sourceBuilder.addPathsAndFileStatuses(expectedPaths, true); + FileSystem sourceFs = sourceBuilder.build(); + + IcebergTable icebergTable = MockIcebergTable.withSnapshots(Arrays.asList(SNAPSHOT_PATHS_0)); + IcebergDataset icebergDataset = new TrickIcebergDataset(testDbName, testTblName, icebergTable, new Properties(), sourceFs); + + MockFileSystemBuilder destBuilder = new MockFileSystemBuilder(DEST_FS_URI); + FileSystem destFs = destBuilder.build(); + + CopyConfiguration copyConfiguration = + CopyConfiguration.builder(destFs, copyConfigProperties) + // preserving attributes for owner, group and permissions respectively + .preserve(PreserveAttributes.fromMnemonicString("ugp")) + .copyContext(new CopyContext()).build(); Review Comment: added a counter test! Issue Time Tracking ------------------- Worklog Id: (was: 824387) Time Spent: 2h (was: 1h 50m) > Preserve Ancestor Owner and Permissions for Fs between Src and Dest for > Iceberg Distcp > -------------------------------------------------------------------------------------- > > Key: GOBBLIN-1720 > URL: https://issues.apache.org/jira/browse/GOBBLIN-1720 > Project: Apache Gobblin > Issue Type: Improvement > Reporter: Meeth Gala > Priority: Major > Time Spent: 2h > Remaining Estimate: 0h > > We want to preserve the Fs ownership and permissions between src and dest > while performing an Iceberg based distcp. Currently, we are preserving all > the permissions up to root dir for Iceberg tables. -- This message was sent by Atlassian Jira (v8.20.10#820010)