kerneltime commented on code in PR #3953:
URL: https://github.com/apache/ozone/pull/3953#discussion_r1033943149


##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequestWithFSO.java:
##########
@@ -243,27 +244,56 @@ public OMClientResponse 
validateAndUpdateCache(OzoneManager ozoneManager,
   }
 
   @SuppressWarnings("parameternumber")
-  private OMClientResponse renameKey(long toKeyParentId,
-      long trxnLogIndex, OmKeyInfo fromKeyValue, boolean isRenameDirectory,
-      String toKeyName, long modificationTime, OMResponse.Builder omResponse,
-      OzoneManager ozoneManager) throws IOException {
-
+  private OMClientResponse renameKey(OmKeyInfo toKeyParent, String toKeyName,
+      OmKeyInfo fromKeyValue, String fromKeyName, boolean isRenameDirectory,
+      long modificationTime, OzoneManager ozoneManager,
+      OMResponse.Builder omResponse, long trxnLogIndex) throws IOException {
     final OMMetadataManager ommm = ozoneManager.getMetadataManager();
     final long volumeId = ommm.getVolumeId(fromKeyValue.getVolumeName());
     final long bucketId = ommm.getBucketId(fromKeyValue.getVolumeName(),
             fromKeyValue.getBucketName());
     final String dbFromKey = ommm.getOzonePathKey(volumeId, bucketId,
             fromKeyValue.getParentObjectID(), fromKeyValue.getFileName());
     String toKeyFileName = OzoneFSUtils.getFileName(toKeyName);
+    OmKeyInfo fromKeyParent = null;
+    OMMetadataManager metadataMgr = ozoneManager.getMetadataManager();
+    Table<String, OmDirectoryInfo> dirTable = metadataMgr.getDirectoryTable();
 
     fromKeyValue.setUpdateID(trxnLogIndex, ozoneManager.isRatisEnabled());
     // Set toFileName
     fromKeyValue.setKeyName(toKeyFileName);
     fromKeyValue.setFileName(toKeyFileName);
     // Set toKeyObjectId
-    fromKeyValue.setParentObjectID(toKeyParentId);
-    //Set modification time
-    fromKeyValue.setModificationTime(modificationTime);
+    if (toKeyParent != null) {
+      fromKeyValue.setParentObjectID(toKeyParent.getObjectID());
+    } else {
+      String bucketKey = metadataMgr.getBucketKey(
+          fromKeyValue.getVolumeName(), fromKeyValue.getBucketName());
+      OmBucketInfo omBucketInfo =
+          metadataMgr.getBucketTable().get(bucketKey);
+      fromKeyValue.setParentObjectID(omBucketInfo.getObjectID());

Review Comment:
   In FSO world, a bucker is root of the filesystem and should follow the same 
semantics. 
   ```
   [root@nightly-71x-yj-1 ~]# cd /
   [root@nightly-71x-yj-1 /]# stat /
     File: ‘/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
   Device: fd10h/64784d Inode: 1835009     Links: 25
   Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
   Access: 2021-05-02 08:23:05.977173911 +0000
   Modify: 2022-11-28 06:27:06.659388314 +0000
   Change: 2022-11-28 06:27:06.659388314 +0000
    Birth: -
   [root@nightly-71x-yj-1 /]# touch file
   [root@nightly-71x-yj-1 /]# stat /
     File: ‘/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
   Device: fd10h/64784d Inode: 1835009     Links: 25
   Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
   Access: 2021-05-02 08:23:05.977173911 +0000
   Modify: 2022-11-28 19:02:40.442335928 +0000
   Change: 2022-11-28 19:02:40.442335928 +0000
    Birth: -
   [root@nightly-71x-yj-1 /]# mv file file2
   [root@nightly-71x-yj-1 /]# stat /
     File: ‘/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
   Device: fd10h/64784d Inode: 1835009     Links: 25
   Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
   Access: 2021-05-02 08:23:05.977173911 +0000
   Modify: 2022-11-28 19:02:49.217171265 +0000
   Change: 2022-11-28 19:02:49.217171265 +0000
    Birth: -
   ```



##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequestWithFSO.java:
##########
@@ -243,27 +244,56 @@ public OMClientResponse 
validateAndUpdateCache(OzoneManager ozoneManager,
   }
 
   @SuppressWarnings("parameternumber")
-  private OMClientResponse renameKey(long toKeyParentId,
-      long trxnLogIndex, OmKeyInfo fromKeyValue, boolean isRenameDirectory,
-      String toKeyName, long modificationTime, OMResponse.Builder omResponse,
-      OzoneManager ozoneManager) throws IOException {
-
+  private OMClientResponse renameKey(OmKeyInfo toKeyParent, String toKeyName,
+      OmKeyInfo fromKeyValue, String fromKeyName, boolean isRenameDirectory,
+      long modificationTime, OzoneManager ozoneManager,
+      OMResponse.Builder omResponse, long trxnLogIndex) throws IOException {
     final OMMetadataManager ommm = ozoneManager.getMetadataManager();
     final long volumeId = ommm.getVolumeId(fromKeyValue.getVolumeName());
     final long bucketId = ommm.getBucketId(fromKeyValue.getVolumeName(),
             fromKeyValue.getBucketName());
     final String dbFromKey = ommm.getOzonePathKey(volumeId, bucketId,
             fromKeyValue.getParentObjectID(), fromKeyValue.getFileName());
     String toKeyFileName = OzoneFSUtils.getFileName(toKeyName);
+    OmKeyInfo fromKeyParent = null;
+    OMMetadataManager metadataMgr = ozoneManager.getMetadataManager();
+    Table<String, OmDirectoryInfo> dirTable = metadataMgr.getDirectoryTable();
 
     fromKeyValue.setUpdateID(trxnLogIndex, ozoneManager.isRatisEnabled());
     // Set toFileName
     fromKeyValue.setKeyName(toKeyFileName);
     fromKeyValue.setFileName(toKeyFileName);
     // Set toKeyObjectId
-    fromKeyValue.setParentObjectID(toKeyParentId);
-    //Set modification time
-    fromKeyValue.setModificationTime(modificationTime);
+    if (toKeyParent != null) {
+      fromKeyValue.setParentObjectID(toKeyParent.getObjectID());
+    } else {
+      String bucketKey = metadataMgr.getBucketKey(
+          fromKeyValue.getVolumeName(), fromKeyValue.getBucketName());
+      OmBucketInfo omBucketInfo =
+          metadataMgr.getBucketTable().get(bucketKey);
+      fromKeyValue.setParentObjectID(omBucketInfo.getObjectID());

Review Comment:
   In FSO world, a bucket is root of the filesystem and should follow the same 
semantics. 
   ```
   [root@nightly-71x-yj-1 ~]# cd /
   [root@nightly-71x-yj-1 /]# stat /
     File: ‘/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
   Device: fd10h/64784d Inode: 1835009     Links: 25
   Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
   Access: 2021-05-02 08:23:05.977173911 +0000
   Modify: 2022-11-28 06:27:06.659388314 +0000
   Change: 2022-11-28 06:27:06.659388314 +0000
    Birth: -
   [root@nightly-71x-yj-1 /]# touch file
   [root@nightly-71x-yj-1 /]# stat /
     File: ‘/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
   Device: fd10h/64784d Inode: 1835009     Links: 25
   Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
   Access: 2021-05-02 08:23:05.977173911 +0000
   Modify: 2022-11-28 19:02:40.442335928 +0000
   Change: 2022-11-28 19:02:40.442335928 +0000
    Birth: -
   [root@nightly-71x-yj-1 /]# mv file file2
   [root@nightly-71x-yj-1 /]# stat /
     File: ‘/’
     Size: 4096         Blocks: 8          IO Block: 4096   directory
   Device: fd10h/64784d Inode: 1835009     Links: 25
   Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
   Access: 2021-05-02 08:23:05.977173911 +0000
   Modify: 2022-11-28 19:02:49.217171265 +0000
   Change: 2022-11-28 19:02:49.217171265 +0000
    Birth: -
   ```



-- 
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