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

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


The following commit(s) were added to refs/heads/master by this push:
     new ec84c256223 HDDS-14231. Reduce copying in OMFileRequest.getOmKeyInfo 
(#9547)
ec84c256223 is described below

commit ec84c2562236ff0e22a99c55167c8f1db1d92f33
Author: Eric C. Ho <[email protected]>
AuthorDate: Wed Dec 24 01:35:43 2025 +0800

    HDDS-14231. Reduce copying in OMFileRequest.getOmKeyInfo (#9547)
---
 .../hadoop/ozone/om/helpers/OmDirectoryInfo.java     |  4 ++++
 .../apache/hadoop/ozone/om/helpers/OmKeyInfo.java    | 20 ++++++++++++++++++++
 .../hadoop/ozone/om/request/file/OMFileRequest.java  | 20 ++------------------
 3 files changed, 26 insertions(+), 18 deletions(-)

diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmDirectoryInfo.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmDirectoryInfo.java
index 13a09fd0d94..3657d5ee68b 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmDirectoryInfo.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmDirectoryInfo.java
@@ -79,6 +79,10 @@ public static Builder builderFromOmKeyInfo(OmKeyInfo 
keyInfo) {
     return new Builder(keyInfo);
   }
 
+  public OmKeyInfo.Builder toKeyInfoBuilder() {
+    return OmKeyInfo.builderFromOmDirectoryInfo(this);
+  }
+
   /**
    * Builder for Directory Info.
    */
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
index e0e900ccf2d..b0e26c49d69 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
@@ -32,7 +32,9 @@
 import org.apache.hadoop.fs.FileEncryptionInfo;
 import org.apache.hadoop.hdds.client.ContainerBlockID;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
+import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
 import org.apache.hadoop.hdds.utils.db.Codec;
 import org.apache.hadoop.hdds.utils.db.CopyObject;
 import org.apache.hadoop.hdds.utils.db.DelegatedCodec;
@@ -520,6 +522,20 @@ public Builder(OmKeyInfo obj) {
                   keyLocationVersion.isMultipartKey())));
     }
 
+    private Builder(OmDirectoryInfo dirInfo) {
+      super(dirInfo);
+      this.acls = AclListBuilder.of(dirInfo.getAcls());
+      this.keyName = dirInfo.getName();
+      this.creationTime = dirInfo.getCreationTime();
+      this.modificationTime = dirInfo.getModificationTime();
+      this.ownerName = dirInfo.getOwner();
+      this.tags = MapBuilder.empty();
+      this.replicationConfig = RatisReplicationConfig
+          .getInstance(ReplicationFactor.ONE);
+      this.omKeyLocationInfoGroups.add(
+          new OmKeyLocationInfoGroup(0, new ArrayList<>()));
+    }
+
     public Builder setVolumeName(String volume) {
       this.volumeName = volume;
       return this;
@@ -930,6 +946,10 @@ public Builder toBuilder() {
     return new Builder(this);
   }
 
+  public static Builder builderFromOmDirectoryInfo(OmDirectoryInfo dirInfo) {
+    return new Builder(dirInfo);
+  }
+
   public OmDirectoryInfo.Builder toDirectoryInfoBuilder() {
     return OmDirectoryInfo.builderFromOmKeyInfo(this);
   }
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
index 6a23ab21537..8403828f395 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileRequest.java
@@ -30,16 +30,13 @@
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.hdds.utils.db.BatchOperation;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.hdds.utils.db.TableIterator;
@@ -54,7 +51,6 @@
 import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
 import org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo;
 import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
-import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup;
 import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
 import org.apache.hadoop.ozone.om.helpers.OzoneFileStatus;
 import org.slf4j.Logger;
@@ -744,22 +740,10 @@ public static OmKeyInfo getKeyInfoWithFullPath(OmKeyInfo 
parentInfo, OmKeyInfo o
   public static OmKeyInfo getOmKeyInfo(String volumeName, String bucketName,
       OmDirectoryInfo dirInfo, String keyName) {
 
-    return new OmKeyInfo.Builder()
-        .setParentObjectID(dirInfo.getParentObjectID())
-        .setKeyName(keyName)
-        .setAcls(dirInfo.getAcls())
-        .addAllMetadata(dirInfo.getMetadata())
+    return dirInfo.toKeyInfoBuilder()
         .setVolumeName(volumeName)
         .setBucketName(bucketName)
-        .setCreationTime(dirInfo.getCreationTime())
-        .setModificationTime(dirInfo.getModificationTime())
-        .setObjectID(dirInfo.getObjectID())
-        .setUpdateID(dirInfo.getUpdateID())
-        .setReplicationConfig(RatisReplicationConfig
-            .getInstance(HddsProtos.ReplicationFactor.ONE))
-        .setOmKeyLocationInfos(Collections.singletonList(
-            new OmKeyLocationInfoGroup(0, new ArrayList<>())))
-        .setOwnerName(dirInfo.getOwner())
+        .setKeyName(keyName)
         .build();
   }
 


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

Reply via email to