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 56e7988f0f5 HDDS-13937. Make WithObjectID immutable (#9327)
56e7988f0f5 is described below
commit 56e7988f0f587891c04d2c65e01ee40c49b4f3dd
Author: Eric C. Ho <[email protected]>
AuthorDate: Fri Nov 21 20:51:52 2025 +0800
HDDS-13937. Make WithObjectID immutable (#9327)
---
.../main/java/org/apache/hadoop/ozone/OmUtils.java | 21 ++--
.../hadoop/ozone/om/helpers/OmBucketInfo.java | 12 ++
.../hadoop/ozone/om/helpers/OmDirectoryInfo.java | 1 +
.../apache/hadoop/ozone/om/helpers/OmKeyInfo.java | 20 ++++
.../ozone/om/helpers/OmMultipartKeyInfo.java | 22 ++++
.../hadoop/ozone/om/helpers/OmVolumeArgs.java | 30 +++++
.../hadoop/ozone/om/helpers/WithMetadata.java | 2 +-
.../hadoop/ozone/om/helpers/WithObjectID.java | 130 +++++++++++----------
.../ozone/om/helpers/WithParentObjectId.java | 18 +++
.../hadoop/ozone/om/helpers/OmPrefixInfo.java | 6 +
.../om/request/bucket/OMBucketCreateRequest.java | 7 +-
.../om/request/bucket/OMBucketSetOwnerRequest.java | 4 +-
.../om/request/bucket/acl/OMBucketAclRequest.java | 5 +-
.../om/request/file/OMRecoverLeaseRequest.java | 2 +-
.../om/request/key/OMAllocateBlockRequest.java | 4 +-
.../request/key/OMAllocateBlockRequestWithFSO.java | 4 +-
.../ozone/om/request/key/OMKeyCommitRequest.java | 20 ++--
.../om/request/key/OMKeyCommitRequestWithFSO.java | 17 +--
.../ozone/om/request/key/OMKeyDeleteRequest.java | 4 +-
.../om/request/key/OMKeyDeleteRequestWithFSO.java | 4 +-
.../ozone/om/request/key/OMKeyRenameRequest.java | 4 +-
.../om/request/key/OMKeyRenameRequestWithFSO.java | 4 +-
.../hadoop/ozone/om/request/key/OMKeyRequest.java | 31 +++--
.../ozone/om/request/key/OMKeySetTimesRequest.java | 2 +-
.../request/key/OMKeySetTimesRequestWithFSO.java | 2 +-
.../ozone/om/request/key/OMKeysDeleteRequest.java | 4 +-
.../ozone/om/request/key/OMKeysRenameRequest.java | 4 +-
.../om/request/key/OMOpenKeysDeleteRequest.java | 4 +-
.../om/request/key/OmKeysDeleteRequestWithFSO.java | 66 ++++++-----
.../ozone/om/request/key/acl/OMKeyAclRequest.java | 4 +-
.../om/request/key/acl/OMKeyAclRequestWithFSO.java | 5 +-
.../request/key/acl/prefix/OMPrefixAclRequest.java | 4 +-
.../S3ExpiredMultipartUploadsAbortRequest.java | 4 +-
.../multipart/S3MultipartUploadAbortRequest.java | 4 +-
.../S3MultipartUploadCommitPartRequest.java | 9 +-
.../S3MultipartUploadCompleteRequest.java | 18 ++-
.../s3/tagging/S3DeleteObjectTaggingRequest.java | 4 +-
.../S3DeleteObjectTaggingRequestWithFSO.java | 4 +-
.../s3/tagging/S3PutObjectTaggingRequest.java | 4 +-
.../tagging/S3PutObjectTaggingRequestWithFSO.java | 4 +-
.../request/s3/tenant/OMTenantCreateRequest.java | 7 +-
.../om/request/volume/OMVolumeCreateRequest.java | 8 +-
.../om/request/volume/OMVolumeSetOwnerRequest.java | 4 +-
.../om/request/volume/OMVolumeSetQuotaRequest.java | 4 +-
.../om/request/volume/acl/OMVolumeAclRequest.java | 4 +-
.../apache/hadoop/ozone/debug/om/PrefixParser.java | 5 +-
46 files changed, 359 insertions(+), 191 deletions(-)
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
index cc75a83d0da..f7cd9c68fbf 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
@@ -541,29 +541,26 @@ public static File createOMDir(String dirPath) {
*/
public static RepeatedOmKeyInfo prepareKeyForDelete(long bucketId, OmKeyInfo
keyInfo,
long trxnLogIndex) {
- OmKeyInfo sanitizedKeyInfo = keyInfo;
+ OmKeyInfo.Builder builder = keyInfo.toBuilder();
// If this key is in a GDPR enforced bucket, then before moving
// KeyInfo to deletedTable, remove the GDPR related metadata and
// FileEncryptionInfo from KeyInfo.
if (Boolean.parseBoolean(
keyInfo.getMetadata().get(OzoneConsts.GDPR_FLAG))
) {
- sanitizedKeyInfo = sanitizedKeyInfo.withMetadataMutations(metadata -> {
- metadata.remove(OzoneConsts.GDPR_FLAG);
- metadata.remove(OzoneConsts.GDPR_ALGORITHM);
- metadata.remove(OzoneConsts.GDPR_SECRET);
- });
- sanitizedKeyInfo.clearFileEncryptionInfo();
+ Map<String, String> metadata = builder.getMetadata();
+ metadata.remove(OzoneConsts.GDPR_FLAG);
+ metadata.remove(OzoneConsts.GDPR_ALGORITHM);
+ metadata.remove(OzoneConsts.GDPR_SECRET);
+
+ builder.setFileEncryptionInfo(null);
}
// Set the updateID
- sanitizedKeyInfo.setUpdateID(trxnLogIndex);
- if (sanitizedKeyInfo != keyInfo) {
- keyInfo.setUpdateID(trxnLogIndex);
- }
+ builder.withUpdateID(trxnLogIndex);
//The key doesn't exist in deletedTable, so create a new instance.
- return new RepeatedOmKeyInfo(sanitizedKeyInfo, bucketId);
+ return new RepeatedOmKeyInfo(builder.build(), bucketId);
}
/**
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
index c8c1a038139..6695cac6135 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
@@ -509,12 +509,24 @@ public Builder setObjectID(long obId) {
return this;
}
+ @Override
+ public Builder withObjectID(long obId) {
+ super.withObjectID(obId);
+ return this;
+ }
+
@Override
public Builder setUpdateID(long id) {
super.setUpdateID(id);
return this;
}
+ @Override
+ public Builder withUpdateID(long newValue) {
+ super.withUpdateID(newValue);
+ return this;
+ }
+
@Override
public Builder addMetadata(String key, String value) {
super.addMetadata(key, value);
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 c0fc58f3537..9f80f7ce0b3 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
@@ -153,6 +153,7 @@ public Builder addAllMetadata(Map<String, String>
additionalMetadata) {
return this;
}
+ @Override
public OmDirectoryInfo build() {
return new OmDirectoryInfo(this);
}
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 232f0c82fe4..3164529d19d 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
@@ -624,6 +624,18 @@ public Builder setMetadata(Map<String, String> map) {
return this;
}
+ @Override
+ public Builder withObjectID(long obId) {
+ super.withObjectID(obId);
+ return this;
+ }
+
+ @Override
+ public Builder withUpdateID(long newValue) {
+ super.withUpdateID(newValue);
+ return this;
+ }
+
public Builder setFileEncryptionInfo(FileEncryptionInfo feInfo) {
this.encInfo = feInfo;
return this;
@@ -676,6 +688,12 @@ public Builder setFile(boolean isAFile) {
return this;
}
+ public Builder setTags(Map<String, String> tags) {
+ this.tags.clear();
+ addAllTags(tags);
+ return this;
+ }
+
public Builder addTag(String key, String value) {
tags.put(key, value);
return this;
@@ -691,6 +709,7 @@ public Builder setExpectedDataGeneration(Long
existingGeneration) {
return this;
}
+ @Override
public OmKeyInfo build() {
return new OmKeyInfo(this);
}
@@ -942,6 +961,7 @@ public int hashCode() {
/**
* Return a new copy of the object.
*/
+ @Override
public Builder toBuilder() {
return new Builder(this);
}
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmMultipartKeyInfo.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmMultipartKeyInfo.java
index 7bdf31485cb..19045aa86d2 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmMultipartKeyInfo.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmMultipartKeyInfo.java
@@ -222,6 +222,10 @@ public ReplicationConfig getReplicationConfig() {
return replicationConfig;
}
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
/**
* Builder of OmMultipartKeyInfo.
*/
@@ -236,6 +240,18 @@ public Builder() {
this.partKeyInfoList = new TreeMap<>();
}
+ public Builder(OmMultipartKeyInfo multipartKeyInfo) {
+ super(multipartKeyInfo);
+ this.uploadID = multipartKeyInfo.uploadID;
+ this.creationTime = multipartKeyInfo.creationTime;
+ this.replicationConfig = multipartKeyInfo.replicationConfig;
+ this.partKeyInfoList = new TreeMap<>();
+ for (PartKeyInfo partKeyInfo : multipartKeyInfo.partKeyInfoMap) {
+ this.partKeyInfoList.put(partKeyInfo.getPartNumber(), partKeyInfo);
+ }
+ this.parentID = multipartKeyInfo.parentID;
+ }
+
public Builder setUploadID(String uploadId) {
this.uploadID = uploadId;
return this;
@@ -277,6 +293,12 @@ public Builder setUpdateID(long id) {
return this;
}
+ @Override
+ public Builder withUpdateID(long newValue) {
+ super.withUpdateID(newValue);
+ return this;
+ }
+
public Builder setParentID(long parentObjId) {
this.parentID = parentObjId;
return this;
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmVolumeArgs.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmVolumeArgs.java
index bb5086d4521..056abc0e4d5 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmVolumeArgs.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmVolumeArgs.java
@@ -225,6 +225,10 @@ public long getUsedNamespace() {
return usedNamespace;
}
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
/**
* Returns new builder class that builds a OmVolumeArgs.
*
@@ -297,6 +301,18 @@ public Builder setUpdateID(long id) {
return this;
}
+ @Override
+ public Builder withObjectID(long obId) {
+ super.withObjectID(obId);
+ return this;
+ }
+
+ @Override
+ public Builder withUpdateID(long newValue) {
+ super.withUpdateID(newValue);
+ return this;
+ }
+
/**
* Constructs a builder.
*/
@@ -310,6 +326,20 @@ private Builder(List<OzoneAcl> acls) {
quotaInNamespace = OzoneConsts.QUOTA_RESET;
}
+ private Builder(OmVolumeArgs omVolumeArgs) {
+ super(omVolumeArgs);
+ this.acls = omVolumeArgs.acls;
+ this.adminName = omVolumeArgs.adminName;
+ this.ownerName = omVolumeArgs.ownerName;
+ this.volume = omVolumeArgs.volume;
+ this.creationTime = omVolumeArgs.creationTime;
+ this.modificationTime = omVolumeArgs.modificationTime;
+ this.quotaInBytes = omVolumeArgs.quotaInBytes;
+ this.quotaInNamespace = omVolumeArgs.quotaInNamespace;
+ this.usedNamespace = omVolumeArgs.usedNamespace;
+ this.refCount = omVolumeArgs.refCount;
+ }
+
public Builder setAdminName(String admin) {
this.adminName = admin;
return this;
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithMetadata.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithMetadata.java
index 956fa5753a9..b2fcd9152bd 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithMetadata.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithMetadata.java
@@ -81,7 +81,7 @@ public Builder setMetadata(Map<String, String> map) {
return this;
}
- protected Map<String, String> getMetadata() {
+ public Map<String, String> getMetadata() {
return metadata;
}
}
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithObjectID.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithObjectID.java
index eae9c3f325a..81fee5e50f1 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithObjectID.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithObjectID.java
@@ -19,16 +19,21 @@
import static org.apache.hadoop.ozone.OzoneConsts.OBJECT_ID_RECLAIM_BLOCKS;
+import net.jcip.annotations.Immutable;
+
/**
* Mixin class to handle ObjectID and UpdateID.
*/
+@Immutable
public abstract class WithObjectID extends WithMetadata {
- private long objectID;
- private long updateID;
+ private final long objectID;
+ private final long updateID;
protected WithObjectID() {
super();
+ objectID = 0;
+ updateID = 0;
}
protected WithObjectID(Builder b) {
@@ -59,65 +64,6 @@ public final long getUpdateID() {
return updateID;
}
- /**
- * Set the Object ID.
- * There is a reason why we cannot use the final here. The object
- * ({@link OmVolumeArgs}/ {@link OmBucketInfo}/ {@link OmKeyInfo}) is
- * deserialized from the protobuf in many places in code. We need to set
- * this object ID, after it is deserialized.
- *
- * @param obId - long
- */
- public final void setObjectID(long obId) {
- if (this.objectID != 0 && obId != OBJECT_ID_RECLAIM_BLOCKS) {
- throw new UnsupportedOperationException("Attempt to modify object ID " +
- "which is not zero. Current Object ID is " + this.objectID);
- }
- this.objectID = obId;
- }
-
- /**
- * Sets the update ID. For each modification of this object, we will set
- * this to a value greater than the current value.
- */
- public final void setUpdateID(long newValue) {
-
- // Because in non-HA, we have multiple rpc handler threads and
- // transactionID is generated in OzoneManagerServerSideTranslatorPB.
-
- // Lets take T1 -> Set Bucket Property
- // T2 -> Set Bucket Acl
-
- // Now T2 got lock first, so updateID will be set to 2. Now when T1 gets
- // executed we will hit the precondition exception. So for OM non-HA with
- // out ratis we should not have this check.
-
- // Same can happen after OM restart also.
-
- // OM Start
- // T1 -> Create Bucket
- // T2 -> Set Bucket Property
-
- // OM restart
- // T1 -> Set Bucket Acl
-
- // So when T1 is executing, Bucket will have updateID 2 which is set by T2
- // execution before restart.
-
- // Main reason, in non-HA transaction Index after restart starts from 0.
- // And also because of this same reason we don't do replay checks in
non-HA.
-
- final long currentValue = getUpdateID();
- if (newValue < currentValue) {
- throw new IllegalArgumentException(String.format(
- "Trying to set updateID to %d which is not greater than the " +
- "current value of %d for %s", newValue, currentValue,
- getObjectInfo()));
- }
-
- updateID = newValue;
- }
-
/** Hook method, customized in subclasses. */
public String getObjectInfo() {
return this.toString();
@@ -148,6 +94,63 @@ public Builder setObjectID(long obId) {
return this;
}
+ /**
+ * Set the Object ID.
+ * The object ({@link OmVolumeArgs}/ {@link OmBucketInfo}/ {@link
OmKeyInfo}) is
+ * deserialized from the protobuf in many places in code. We need to set
+ * this object ID, after it is deserialized.
+ *
+ * @param obId - long
+ */
+ public Builder withObjectID(long obId) {
+ if (this.objectID != 0 && obId != OBJECT_ID_RECLAIM_BLOCKS) {
+ throw new UnsupportedOperationException("Attempt to modify object ID "
+
+ "which is not zero. Current Object ID is " + this.objectID);
+ }
+ this.objectID = obId;
+ return this;
+ }
+
+ /**
+ * Sets the update ID. For each modification of this object, we will set
+ * this to a value greater than the current value.
+ */
+ public Builder withUpdateID(long newValue) {
+ // Because in non-HA, we have multiple rpc handler threads and
+ // transactionID is generated in OzoneManagerServerSideTranslatorPB.
+
+ // Lets take T1 -> Set Bucket Property
+ // T2 -> Set Bucket Acl
+
+ // Now T2 got lock first, so updateID will be set to 2. Now when T1 gets
+ // executed we will hit the precondition exception. So for OM non-HA with
+ // out ratis we should not have this check.
+
+ // Same can happen after OM restart also.
+
+ // OM Start
+ // T1 -> Create Bucket
+ // T2 -> Set Bucket Property
+
+ // OM restart
+ // T1 -> Set Bucket Acl
+
+ // So when T1 is executing, Bucket will have updateID 2 which is set by
T2
+ // execution before restart.
+
+ // Main reason, in non-HA transaction Index after restart starts from 0.
+ // And also because of this same reason we don't do replay checks in
non-HA.
+ final long currentValue = getUpdateID();
+ if (newValue < currentValue) {
+ throw new IllegalArgumentException(String.format(
+ "Trying to set updateID to %d which is not greater than the " +
+ "current value of %d for %s", newValue, currentValue,
+ getObjectInfo()));
+ }
+ this.updateID = newValue;
+ return this;
+ }
+
/**
* Sets the update ID for this Object. Update IDs are monotonically
* increasing values which are updated each time there is an update.
@@ -164,5 +167,10 @@ public long getObjectID() {
public long getUpdateID() {
return updateID;
}
+
+ /** Hook method, customized in subclasses. */
+ public String getObjectInfo() {
+ return this.toString();
+ }
}
}
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithParentObjectId.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithParentObjectId.java
index 06f167bb9f0..0458ebbce54 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithParentObjectId.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/WithParentObjectId.java
@@ -62,6 +62,14 @@ public final void setParentObjectID(long parentObjectID) {
this.parentObjectID = parentObjectID;
}
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
/** Builder for {@link WithParentObjectId}. */
public static class Builder extends WithObjectID.Builder {
private long parentObjectID;
@@ -83,5 +91,15 @@ public Builder setParentObjectID(long parentObjectId) {
protected long getParentObjectID() {
return parentObjectID;
}
+
+ @Override
+ public Builder withObjectID(long obId) {
+ super.withObjectID(obId);
+ return this;
+ }
+
+ public WithParentObjectId build() {
+ return new WithParentObjectId(this);
+ }
}
}
diff --git
a/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/helpers/OmPrefixInfo.java
b/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/helpers/OmPrefixInfo.java
index fe046bac0aa..b838c6e4e45 100644
---
a/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/helpers/OmPrefixInfo.java
+++
b/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/helpers/OmPrefixInfo.java
@@ -148,6 +148,12 @@ public Builder setUpdateID(long id) {
return this;
}
+ @Override
+ public Builder withUpdateID(long newValue) {
+ super.withUpdateID(newValue);
+ return this;
+ }
+
/**
* Constructs the OmPrefixInfo.
* @return instance of OmPrefixInfo.
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
index 838ee3be86c..0416924e033 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
@@ -253,9 +253,10 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
}
// Add objectID and updateID
- omBucketInfo.setObjectID(
- ozoneManager.getObjectIdFromTxId(transactionLogIndex));
- omBucketInfo.setUpdateID(transactionLogIndex);
+ omBucketInfo = omBucketInfo.toBuilder()
+ .withObjectID(ozoneManager.getObjectIdFromTxId(transactionLogIndex))
+ .withUpdateID(transactionLogIndex)
+ .build();
addDefaultAcls(omBucketInfo, omVolumeArgs, ozoneManager);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetOwnerRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetOwnerRequest.java
index 3d63a1d4b1a..75a774a1222 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetOwnerRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetOwnerRequest.java
@@ -150,14 +150,12 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
OmBucketInfo newOmBucketInfo = omBucketInfo.toBuilder()
.setOwner(newOwner)
.setModificationTime(setBucketPropertyRequest.getModificationTime())
+ .withUpdateID(transactionLogIndex)
.build();
LOG.debug("Updating bucket owner to {} for bucket: {} in volume: {}",
newOwner, bucketName, volumeName);
- // Set the updateID to current transaction log index
- newOmBucketInfo.setUpdateID(transactionLogIndex);
-
// Update table cache.
omMetadataManager.getBucketTable().addCacheEntry(
new CacheKey<>(bucketKey),
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
index 565c6e4854d..a3a324d4ecc 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
@@ -106,7 +106,6 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
}
operationResult = omBucketAclOp.test(ozoneAcls, omBucketInfo);
- omBucketInfo.setUpdateID(transactionLogIndex);
if (operationResult) {
// Update the modification time when updating ACLs of Bucket.
@@ -122,7 +121,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
.getModificationTime();
}
omBucketInfo = omBucketInfo.toBuilder()
- .setModificationTime(modificationTime).build();
+ .withUpdateID(transactionLogIndex)
+ .setModificationTime(modificationTime)
+ .build();
// update cache.
omMetadataManager.getBucketTable().addCacheEntry(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMRecoverLeaseRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMRecoverLeaseRequest.java
index c3effc5d291..c1b342dc4ca 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMRecoverLeaseRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMRecoverLeaseRequest.java
@@ -230,8 +230,8 @@ private RecoverLeaseResponse doWork(OzoneManager
ozoneManager,
}
openKeyInfo = openKeyInfo.toBuilder()
.addMetadata(OzoneConsts.LEASE_RECOVERY, "true")
+ .withUpdateID(transactionLogIndex)
.build();
- openKeyInfo.setUpdateID(transactionLogIndex);
openKeyInfo.setModificationTime(Time.now());
// add to cache.
omMetadataManager.getOpenKeyTable(getBucketLayout()).addCacheEntry(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
index 7c5660b9380..be8efa51ef9 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
@@ -236,7 +236,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
openKeyInfo.setModificationTime(keyArgs.getModificationTime());
// Set the UpdateID to current transactionLogIndex
- openKeyInfo.setUpdateID(trxnLogIndex);
+ openKeyInfo = openKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Add to cache.
omMetadataManager.getOpenKeyTable(getBucketLayout()).addCacheEntry(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequestWithFSO.java
index 799983cbe44..dd5059be03e 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequestWithFSO.java
@@ -160,7 +160,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
openKeyInfo.setModificationTime(keyArgs.getModificationTime());
// Set the UpdateID to current transactionLogIndex
- openKeyInfo.setUpdateID(trxnLogIndex);
+ openKeyInfo = openKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Add to cache.
addOpenTableCacheEntry(trxnLogIndex, omMetadataManager, openKeyName,
keyName,
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
index a106903bce7..c64a85f9187 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
@@ -276,9 +276,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
openKeyToDelete =
omMetadataManager.getOpenKeyTable(getBucketLayout()).get(dbOpenKeyToDeleteKey);
openKeyToDelete = openKeyToDelete.toBuilder()
.addMetadata(OzoneConsts.OVERWRITTEN_HSYNC_KEY, "true")
+ .withUpdateID(trxnLogIndex)
.build();
openKeyToDelete.setModificationTime(Time.now());
- openKeyToDelete.setUpdateID(trxnLogIndex);
omMetadataManager.getOpenKeyTable(getBucketLayout()).addCacheEntry(
dbOpenKeyToDeleteKey, openKeyToDelete, trxnLogIndex);
}
@@ -299,21 +299,21 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
validateAtomicRewrite(keyToDelete, omKeyInfo, auditMap);
// Optimistic locking validation has passed. Now set the rewrite fields
to null so they are
// not persisted in the key table.
- omKeyInfo.setExpectedDataGeneration(null);
-
- omKeyInfo = omKeyInfo.withMetadataMutations(metadata ->
- metadata.putAll(KeyValueUtil.getFromProtobuf(
- commitKeyArgs.getMetadataList())));
- omKeyInfo.setDataSize(commitKeyArgs.getDataSize());
+ // Combination
+ // Set the UpdateID to current transactionLogIndex
+ omKeyInfo = omKeyInfo.toBuilder()
+ .setExpectedDataGeneration(null)
+ .addAllMetadata(KeyValueUtil.getFromProtobuf(
+ commitKeyArgs.getMetadataList()))
+ .withUpdateID(trxnLogIndex)
+ .setDataSize(commitKeyArgs.getDataSize())
+ .build();
// Update the block length for each block, return the allocated but
// uncommitted blocks
List<OmKeyLocationInfo> uncommitted =
omKeyInfo.updateLocationInfoList(locationInfoList, false);
- // Set the UpdateID to current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
-
Map<String, RepeatedOmKeyInfo> oldKeyVersionsToDeleteMap = null;
long correctedSpace = omKeyInfo.getReplicatedSize();
// if keyToDelete isn't null, usedNamespace needn't check and
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequestWithFSO.java
index ffed1ebf555..161c5ad7e69 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequestWithFSO.java
@@ -204,9 +204,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
omMetadataManager, dbOpenKeyToDeleteKey, keyName);
openKeyToDelete = openKeyToDelete.toBuilder()
.addMetadata(OzoneConsts.OVERWRITTEN_HSYNC_KEY, "true")
+ .withUpdateID(trxnLogIndex)
.build();
openKeyToDelete.setModificationTime(Time.now());
- openKeyToDelete.setUpdateID(trxnLogIndex);
OMFileRequest.addOpenFileTableCacheEntry(omMetadataManager,
dbOpenKeyToDeleteKey, openKeyToDelete, keyName, fileName,
trxnLogIndex);
}
@@ -224,17 +224,18 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
}
}
- omKeyInfo = omKeyInfo.withMetadataMutations(metadata ->
- metadata.putAll(KeyValueUtil.getFromProtobuf(
- commitKeyArgs.getMetadataList())));
- omKeyInfo.setDataSize(commitKeyArgs.getDataSize());
+ // Set the new metadata from the request and UpdateID to current
+ // transactionLogIndex
+ omKeyInfo = omKeyInfo.toBuilder()
+ .addAllMetadata(KeyValueUtil.getFromProtobuf(
+ commitKeyArgs.getMetadataList()))
+ .setDataSize(commitKeyArgs.getDataSize())
+ .withUpdateID(trxnLogIndex)
+ .build();
List<OmKeyLocationInfo> uncommitted =
omKeyInfo.updateLocationInfoList(locationInfoList, false);
- // Set the UpdateID to current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
-
// If bucket versioning is turned on during the update, between key
// creation and key commit, old versions will be just overwritten and
// not kept. Bucket versioning will be effective from the first key
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java
index fba766504e7..528d1a8922a 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java
@@ -147,7 +147,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
}
// Set the UpdateID to current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Update table cache. Put a tombstone entry
omMetadataManager.getKeyTable(getBucketLayout()).addCacheEntry(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
index e2541ef051c..78d4652c95d 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequestWithFSO.java
@@ -125,7 +125,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
omKeyInfo.setKeyName(fileName);
// Set the UpdateID to current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
final long volumeId = omMetadataManager.getVolumeId(volumeName);
final long bucketId = omMetadataManager.getBucketId(volumeName,
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java
index f1d71d99fdf..103b5b81100 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java
@@ -176,7 +176,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
throw new OMException("Key not found " + fromKey, KEY_NOT_FOUND);
}
- fromKeyValue.setUpdateID(trxnLogIndex);
+ fromKeyValue = fromKeyValue.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
fromKeyValue.setKeyName(toKeyName);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequestWithFSO.java
index 98c2986b793..85dff125514 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequestWithFSO.java
@@ -288,7 +288,9 @@ private OMClientResponse renameKey(OmKeyInfo toKeyParent,
String toKeyName,
String bucketKey = metadataMgr.getBucketKey(
fromKeyValue.getVolumeName(), fromKeyValue.getBucketName());
- fromKeyValue.setUpdateID(trxnLogIndex);
+ fromKeyValue = fromKeyValue.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Set toFileName
fromKeyValue.setKeyName(toKeyFileName);
fromKeyValue.setFileName(toKeyFileName);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
index 46cef44e1c5..03af4822627 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
@@ -973,31 +973,25 @@ protected OmKeyInfo prepareFileInfo(
if (omBucketInfo.getIsVersionEnabled()) {
newSize += dbKeyInfo.getDataSize();
}
- dbKeyInfo.setDataSize(newSize);
// The modification time is set in preExecute. Use the same
// modification time.
- dbKeyInfo.setModificationTime(keyArgs.getModificationTime());
- dbKeyInfo.setUpdateID(transactionLogIndex);
- dbKeyInfo.setReplicationConfig(replicationConfig);
-
// Construct a new metadata map from KeyArgs by rebuilding via toBuilder.
- dbKeyInfo = dbKeyInfo.toBuilder()
- .setMetadata(KeyValueUtil.getFromProtobuf(
- keyArgs.getMetadataList()))
- .build();
-
// Construct a new tags from KeyArgs
// Clear the old one when the key is overwritten
- dbKeyInfo.getTags().clear();
- dbKeyInfo.getTags().putAll(KeyValueUtil.getFromProtobuf(
- keyArgs.getTagsList()));
+ final OmKeyInfo.Builder builder = dbKeyInfo.toBuilder()
+ .setDataSize(newSize)
+ .setModificationTime(keyArgs.getModificationTime())
+ .setReplicationConfig(replicationConfig)
+ .setMetadata(KeyValueUtil.getFromProtobuf(keyArgs.getMetadataList()))
+ .withUpdateID(transactionLogIndex)
+ .setTags(KeyValueUtil.getFromProtobuf(keyArgs.getTagsList()))
+ .setFileEncryptionInfo(encInfo);
if (keyArgs.hasExpectedDataGeneration()) {
-
dbKeyInfo.setExpectedDataGeneration(keyArgs.getExpectedDataGeneration());
+ builder.setExpectedDataGeneration(keyArgs.getExpectedDataGeneration());
}
- dbKeyInfo.setFileEncryptionInfo(encInfo);
- return dbKeyInfo;
+ return builder.build();
}
// the key does not exist, create a new object.
@@ -1164,10 +1158,11 @@ protected OmKeyInfo wrapUncommittedBlocksAsPseudoKey(
}
LOG.debug("Detect allocated but uncommitted blocks {} in key {}.",
uncommitted, omKeyInfo.getKeyName());
- OmKeyInfo pseudoKeyInfo = omKeyInfo.copyObject();
+ OmKeyInfo pseudoKeyInfo = omKeyInfo.toBuilder()
+ .withObjectID(OBJECT_ID_RECLAIM_BLOCKS)
+ .build();
// This is a special marker to indicate that SnapshotDeletingService
// can reclaim this key's blocks unconditionally.
- pseudoKeyInfo.setObjectID(OBJECT_ID_RECLAIM_BLOCKS);
// TODO dataSize of pseudoKey is not real here
List<OmKeyLocationInfoGroup> uncommittedGroups = new ArrayList<>();
// version not matters in the current logic of keyDeletingService,
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequest.java
index e137847eb39..ba626b5fdf1 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequest.java
@@ -230,7 +230,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
operationResult = true;
apply(omKeyInfo);
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder().withUpdateID(trxnLogIndex).build();
// update cache.
omMetadataManager.getKeyTable(getBucketLayout())
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequestWithFSO.java
index 6cc68b6f718..714cb2f5c7b 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeySetTimesRequestWithFSO.java
@@ -100,7 +100,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
boolean isDirectory = keyStatus.isDirectory();
operationResult = true;
apply(omKeyInfo);
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder().withUpdateID(trxnLogIndex).build();
// update cache.
if (isDirectory) {
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java
index f0f447091ec..d3ce69bca44 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java
@@ -316,7 +316,9 @@ protected Pair<Long, Integer>
markKeysAsDeletedInCache(OzoneManager ozoneManager
new CacheKey<>(omMetadataManager.getOzoneKey(volumeName, bucketName,
keyName)),
CacheValue.get(trxnLogIndex));
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
quotaReleased += sumBlockLengths(omKeyInfo);
emptyKeys += OmKeyInfo.isKeyEmpty(omKeyInfo) ? 1 : 0;
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
index ef4d64b27c9..febdaff5843 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java
@@ -192,7 +192,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
continue;
}
- fromKeyValue.setUpdateID(trxnLogIndex);
+ fromKeyValue = fromKeyValue.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
fromKeyValue.setKeyName(toKeyName);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMOpenKeysDeleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMOpenKeysDeleteRequest.java
index 3997f1a6778..5f74da0d7b7 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMOpenKeysDeleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMOpenKeysDeleteRequest.java
@@ -196,7 +196,9 @@ protected void updateOpenKeyTableCache(OzoneManager
ozoneManager,
}
// Set the UpdateID to current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
deletedOpenKeys.put(fullKeyName, Pair.of(bucketId, omKeyInfo));
// Update openKeyTable cache.
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OmKeysDeleteRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OmKeysDeleteRequestWithFSO.java
index 5d53ce7db09..77ad9f452cc 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OmKeysDeleteRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OmKeysDeleteRequestWithFSO.java
@@ -91,36 +91,43 @@ protected OzoneFileStatus getOzoneKeyStatus(
protected Pair<Long, Integer> markKeysAsDeletedInCache(
OzoneManager ozoneManager, long trxnLogIndex, List<OmKeyInfo>
omKeyInfoList, List<OmKeyInfo> dirList,
OMMetadataManager omMetadataManager, Map<String, OmKeyInfo>
openKeyInfoMap) throws IOException {
- long quotaReleased = 0;
+ long quotaReleased = 0L;
int emptyKeys = 0;
// Mark all keys which can be deleted, in cache as deleted.
- for (OmKeyInfo omKeyInfo : omKeyInfoList) {
+ for (int i = 0; i < omKeyInfoList.size(); i++) {
+ final OmKeyInfo omKeyInfo = omKeyInfoList.get(i);
+
final long volumeId = omMetadataManager.getVolumeId(
omKeyInfo.getVolumeName());
final long bucketId = omMetadataManager.getBucketId(
omKeyInfo.getVolumeName(), omKeyInfo.getBucketName());
final long parentId = omKeyInfo.getParentObjectID();
final String fileName = omKeyInfo.getFileName();
- omMetadataManager.getKeyTable(getBucketLayout()).addCacheEntry(
- new CacheKey<>(omMetadataManager
- .getOzonePathKey(volumeId, bucketId, parentId, fileName)),
- CacheValue.get(trxnLogIndex));
+ final String dbKey = omMetadataManager.getOzonePathKey(
+ volumeId, bucketId, parentId, fileName);
+ omMetadataManager.getKeyTable(getBucketLayout())
+ .addCacheEntry(new CacheKey<>(dbKey),
+ CacheValue.get(trxnLogIndex));
emptyKeys += OmKeyInfo.isKeyEmpty(omKeyInfo) ? 1 : 0;
- omKeyInfo.setUpdateID(trxnLogIndex);
- quotaReleased += sumBlockLengths(omKeyInfo);
+ final OmKeyInfo updatedOmKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
+ quotaReleased += sumBlockLengths(updatedOmKeyInfo);
+ omKeyInfoList.set(i, updatedOmKeyInfo);
// If omKeyInfo has hsync metadata, delete its corresponding open key as
well
- String hsyncClientId =
omKeyInfo.getMetadata().get(OzoneConsts.HSYNC_CLIENT_ID);
+ final String hsyncClientId =
updatedOmKeyInfo.getMetadata().get(OzoneConsts.HSYNC_CLIENT_ID);
if (hsyncClientId != null) {
- Table<String, OmKeyInfo> openKeyTable =
omMetadataManager.getOpenKeyTable(getBucketLayout());
- String dbOpenKey = omMetadataManager.getOpenFileName(volumeId,
bucketId, parentId, fileName, hsyncClientId);
- OmKeyInfo openKeyInfo = openKeyTable.get(dbOpenKey);
+ final Table<String, OmKeyInfo> openKeyTable =
omMetadataManager.getOpenKeyTable(getBucketLayout());
+ final String dbOpenKey = omMetadataManager.getOpenFileName(
+ volumeId, bucketId, parentId, fileName, hsyncClientId);
+ final OmKeyInfo openKeyInfo = openKeyTable.get(dbOpenKey);
if (openKeyInfo != null) {
- openKeyInfo = openKeyInfo.withMetadataMutations(
+ final OmKeyInfo updatedOpenKeyInfo =
openKeyInfo.withMetadataMutations(
metadata -> metadata.put(DELETED_HSYNC_KEY, "true"));
- openKeyTable.addCacheEntry(dbOpenKey, openKeyInfo, trxnLogIndex);
+ openKeyTable.addCacheEntry(dbOpenKey, updatedOpenKeyInfo,
trxnLogIndex);
// Add to the map of open keys to be deleted.
- openKeyInfoMap.put(dbOpenKey, openKeyInfo);
+ openKeyInfoMap.put(dbOpenKey, updatedOpenKeyInfo);
} else {
LOG.warn("Potentially inconsistent DB state: open key not found with
dbOpenKey '{}'", dbOpenKey);
}
@@ -128,19 +135,26 @@ protected Pair<Long, Integer> markKeysAsDeletedInCache(
}
// Mark directory keys.
- for (OmKeyInfo omKeyInfo : dirList) {
+ for (int i = 0; i < dirList.size(); i++) {
+ final OmKeyInfo dirInfo = dirList.get(i);
final long volumeId = omMetadataManager.getVolumeId(
- omKeyInfo.getVolumeName());
+ dirInfo.getVolumeName());
final long bucketId = omMetadataManager.getBucketId(
- omKeyInfo.getVolumeName(), omKeyInfo.getBucketName());
- omMetadataManager.getDirectoryTable().addCacheEntry(new CacheKey<>(
- omMetadataManager.getOzonePathKey(volumeId, bucketId,
- omKeyInfo.getParentObjectID(),
- omKeyInfo.getFileName())),
- CacheValue.get(trxnLogIndex));
-
- omKeyInfo.setUpdateID(trxnLogIndex);
- quotaReleased += sumBlockLengths(omKeyInfo);
+ dirInfo.getVolumeName(), dirInfo.getBucketName());
+ final long parentId = dirInfo.getParentObjectID();
+ final String dirName = dirInfo.getFileName();
+
+ final String dbDirKey = omMetadataManager.getOzonePathKey(
+ volumeId, bucketId, parentId, dirName);
+ omMetadataManager.getDirectoryTable()
+ .addCacheEntry(new CacheKey<>(dbDirKey),
+ CacheValue.get(trxnLogIndex));
+
+ final OmKeyInfo updatedDirInfo = dirInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
+ quotaReleased += sumBlockLengths(updatedDirInfo);
+ dirList.set(i, updatedDirInfo);
}
return Pair.of(quotaReleased, emptyKeys);
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequest.java
index 67a7f8a626b..0e1b6834d9f 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequest.java
@@ -107,7 +107,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
}
operationResult = apply(omKeyInfo, trxnLogIndex);
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Update the modification time when updating ACLs of Key.
long modificationTime = omKeyInfo.getModificationTime();
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequestWithFSO.java
index f32a22b1732..0c7196164e7 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAclRequestWithFSO.java
@@ -106,7 +106,10 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
omKeyInfo.getParentObjectID(), omKeyInfo.getFileName());
boolean isDirectory = keyStatus.isDirectory();
operationResult = apply(omKeyInfo, trxnLogIndex);
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
+
// Update the modification time when updating ACLs of Key.
long modificationTime = omKeyInfo.getModificationTime();
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/prefix/OMPrefixAclRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/prefix/OMPrefixAclRequest.java
index 5e1f3513564..beebeba93ec 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/prefix/OMPrefixAclRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/prefix/OMPrefixAclRequest.java
@@ -90,7 +90,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
omPrefixInfo = omMetadataManager.getPrefixTable().get(prefixPath);
if (omPrefixInfo != null) {
- omPrefixInfo.setUpdateID(trxnLogIndex);
+ omPrefixInfo = omPrefixInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
}
try {
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3ExpiredMultipartUploadsAbortRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3ExpiredMultipartUploadsAbortRequest.java
index 5f7d01d9a73..745a2523ea5 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3ExpiredMultipartUploadsAbortRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3ExpiredMultipartUploadsAbortRequest.java
@@ -236,7 +236,9 @@ private void updateTableCache(OzoneManager ozoneManager,
}
// Set the UpdateID to current transactionLogIndex
- omMultipartKeyInfo.setUpdateID(trxnLogIndex);
+ omMultipartKeyInfo = omMultipartKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Parse the multipart upload components (e.g. volume, bucket, key)
// from the multipartInfoTable db key
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java
index 1e64edfb5be..8f1e6785582 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java
@@ -160,7 +160,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
multipartKeyInfo = omMetadataManager.getMultipartInfoTable()
.get(multipartKey);
- multipartKeyInfo.setUpdateID(trxnLogIndex);
+ multipartKeyInfo = multipartKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// When abort uploaded key, we need to subtract the PartKey length from
// the volume usedBytes.
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java
index d2c3d76e35c..7735c1fb174 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java
@@ -161,9 +161,12 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
openKey + "entry is not found in the openKey table",
KEY_NOT_FOUND);
}
+ // Add/Update user defined metadata.
+ // Set the UpdateID to current transactionLogIndex
omKeyInfo = omKeyInfo.toBuilder()
.addAllMetadata(KeyValueUtil.getFromProtobuf(
keyArgs.getMetadataList()))
+ .withUpdateID(trxnLogIndex)
.build();
// set the data size and location info list
@@ -174,8 +177,6 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
.collect(Collectors.toList()), true);
// Set Modification time
omKeyInfo.setModificationTime(keyArgs.getModificationTime());
- // Set the UpdateID to current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
int partNumber = keyArgs.getMultipartNumber();
partName = getPartName(ozoneKey, uploadID, partNumber);
@@ -206,7 +207,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
multipartKeyInfo.addPartKeyInfo(partKeyInfo.build());
// Set the UpdateID to current transactionLogIndex
- multipartKeyInfo.setUpdateID(trxnLogIndex);
+ multipartKeyInfo = multipartKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// OldPartKeyInfo will be deleted. Its updateID will be set in
// S3MultipartUploadCommitPartResponse before being added to
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
index d51055fdf2f..6c644d3f3ab 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java
@@ -463,6 +463,7 @@ protected OmKeyInfo getOmKeyInfo(long trxnLogIndex,
OmKeyInfo omKeyInfo = getOmKeyInfoFromKeyTable(ozoneKey, keyName,
omMetadataManager);
+ OmKeyInfo.Builder builder = null;
if (omKeyInfo == null) {
// This is a newly added key, it does not have any versions.
OmKeyLocationInfoGroup keyLocationInfoGroup = new
@@ -473,8 +474,7 @@ protected OmKeyInfo getOmKeyInfo(long trxnLogIndex,
keyName, omMetadataManager);
// A newly created key, this is the first version.
- OmKeyInfo.Builder builder =
- new OmKeyInfo.Builder().setVolumeName(volumeName)
+ builder = new OmKeyInfo.Builder().setVolumeName(volumeName)
.setBucketName(bucketName).setKeyName(dbOpenKeyInfo.getKeyName())
.setReplicationConfig(ReplicationConfig.fromProto(
partKeyInfo.getType(), partKeyInfo.getFactor(),
@@ -498,7 +498,6 @@ protected OmKeyInfo getOmKeyInfo(long trxnLogIndex,
builder.setObjectID(dbOpenKeyInfo.getObjectID());
}
updatePrefixFSOInfo(dbOpenKeyInfo, builder);
- omKeyInfo = builder.build();
} else {
OmKeyInfo dbOpenKeyInfo = getOmKeyInfoFromOpenKeyTable(multipartOpenKey,
keyName, omMetadataManager);
@@ -520,19 +519,16 @@ protected OmKeyInfo getOmKeyInfo(long trxnLogIndex,
omKeyInfo.setDataSize(dataSize);
omKeyInfo.setReplicationConfig(dbOpenKeyInfo.getReplicationConfig());
final String multipartHash = multipartUploadedKeyHash(partKeyInfoMap);
- OmKeyInfo.Builder omKeyInfoBuilder = omKeyInfo.toBuilder();
+ builder = omKeyInfo.toBuilder();
if (dbOpenKeyInfo.getMetadata() != null) {
- omKeyInfoBuilder.setMetadata(dbOpenKeyInfo.getMetadata());
+ builder.setMetadata(dbOpenKeyInfo.getMetadata());
}
- omKeyInfo = omKeyInfoBuilder
- .addMetadata(OzoneConsts.ETAG, multipartHash)
- .build();
+ builder.addMetadata(OzoneConsts.ETAG, multipartHash);
if (dbOpenKeyInfo.getTags() != null) {
- omKeyInfo.setTags(dbOpenKeyInfo.getTags());
+ builder.setTags(dbOpenKeyInfo.getTags());
}
}
- omKeyInfo.setUpdateID(trxnLogIndex);
- return omKeyInfo;
+ return builder.withUpdateID(trxnLogIndex).build();
}
protected void updatePrefixFSOInfo(OmKeyInfo dbOpenKeyInfo,
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequest.java
index 12c4ce13de5..69656d80b06 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequest.java
@@ -129,7 +129,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
// Clear / delete the tags
omKeyInfo.getTags().clear();
// Set the UpdateID to the current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Note: Key modification time is not changed because S3 last modified
// time only changes when there are changes in the object content
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequestWithFSO.java
index b40e6c1f8a4..23922377c02 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3DeleteObjectTaggingRequestWithFSO.java
@@ -118,7 +118,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
// Clear / delete the tags
omKeyInfo.getTags().clear();
// Set the UpdateId to the current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Note: Key modification time is not changed because S3 last modified
// time only changes when there are changes in the object content
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequest.java
index 23d7a40f26d..907e7fac310 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequest.java
@@ -131,7 +131,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
omKeyInfo.getTags().clear();
omKeyInfo.getTags().putAll(KeyValueUtil.getFromProtobuf(keyArgs.getTagsList()));
// Set the UpdateID to the current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Note: Key modification time is not changed because S3 last modified
// time only changes when there are changes in the object content
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequestWithFSO.java
index 05a45322c59..d1276b2af71 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tagging/S3PutObjectTaggingRequestWithFSO.java
@@ -120,7 +120,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
omKeyInfo.getTags().clear();
omKeyInfo.getTags().putAll(KeyValueUtil.getFromProtobuf(keyArgs.getTagsList()));
// Set the UpdateId to the current transactionLogIndex
- omKeyInfo.setUpdateID(trxnLogIndex);
+ omKeyInfo = omKeyInfo.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// Note: Key modification time is not changed because S3 last modified
// time only changes when there are changes in the object content
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
index 3732f074bb0..e2fcb4f57c6 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
@@ -278,9 +278,10 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
omVolumeArgs = OmVolumeArgs.getFromProtobuf(volumeInfo);
omVolumeArgs.setQuotaInBytes(OzoneConsts.QUOTA_RESET);
omVolumeArgs.setQuotaInNamespace(OzoneConsts.QUOTA_RESET);
- omVolumeArgs.setObjectID(
- ozoneManager.getObjectIdFromTxId(transactionLogIndex));
- omVolumeArgs.setUpdateID(transactionLogIndex);
+ omVolumeArgs = omVolumeArgs.toBuilder()
+
.withObjectID(ozoneManager.getObjectIdFromTxId(transactionLogIndex))
+ .withUpdateID(transactionLogIndex)
+ .build();
omVolumeArgs.incRefCount();
// Remove this check when vol ref count is also used by other features
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeCreateRequest.java
index 1397f8a1b9f..e91757ee3a2 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeCreateRequest.java
@@ -136,10 +136,10 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
// when you create a volume, we set both Object ID and update ID.
// The Object ID will never change, but update
// ID will be set to transactionID each time we update the object.
- omVolumeArgs.setObjectID(
- ozoneManager.getObjectIdFromTxId(transactionLogIndex));
- omVolumeArgs.setUpdateID(transactionLogIndex);
-
+ omVolumeArgs = omVolumeArgs.toBuilder()
+ .withObjectID(ozoneManager.getObjectIdFromTxId(transactionLogIndex))
+ .withUpdateID(transactionLogIndex)
+ .build();
auditMap = omVolumeArgs.toAuditMap();
// acquire lock.
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
index f9a6fa30359..a5cdcb675b5 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
@@ -152,7 +152,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
// Set owner with new owner name.
omVolumeArgs.setOwnerName(newOwner);
- omVolumeArgs.setUpdateID(transactionLogIndex);
+ omVolumeArgs = omVolumeArgs.toBuilder()
+ .withUpdateID(transactionLogIndex)
+ .build();
// Update modificationTime.
omVolumeArgs.setModificationTime(
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetQuotaRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetQuotaRequest.java
index b4279eac2d4..f4171b757c3 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetQuotaRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetQuotaRequest.java
@@ -136,7 +136,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
omVolumeArgs.setQuotaInNamespace(omVolumeArgs.getQuotaInNamespace());
}
- omVolumeArgs.setUpdateID(transactionLogIndex);
+ omVolumeArgs = omVolumeArgs.toBuilder()
+ .withUpdateID(transactionLogIndex)
+ .build();
omVolumeArgs.setModificationTime(
setVolumePropertyRequest.getModificationTime());
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
index 88d786cdd20..e12532c7a8a 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
@@ -108,7 +108,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager
ozoneManager, Execut
}
omVolumeArgs.setModificationTime(modificationTime);
- omVolumeArgs.setUpdateID(trxnLogIndex);
+ omVolumeArgs = omVolumeArgs.toBuilder()
+ .withUpdateID(trxnLogIndex)
+ .build();
// update cache.
omMetadataManager.getVolumeTable().addCacheEntry(
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/om/PrefixParser.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/om/PrefixParser.java
index 6bc4e35ae5f..a55cc798f5f 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/om/PrefixParser.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/om/PrefixParser.java
@@ -134,8 +134,9 @@ public void parse(String vol, String buck, String db,
final long volumeObjectId = metadataManager.getVolumeId(
info.getVolumeName());
long lastObjectId = info.getObjectID();
- WithParentObjectId objectBucketId = new WithParentObjectId();
- objectBucketId.setObjectID(lastObjectId);
+ WithParentObjectId objectBucketId = WithParentObjectId.newBuilder()
+ .withObjectID(lastObjectId)
+ .build();
dumpInfo(Types.BUCKET, effectivePath, objectBucketId,
metadataManager.getBucketKey(vol, buck));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]