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]