From 6269651e45da51e9ffc86ba9acbeb5c3d97d9b26 Mon Sep 17 00:00:00 2001 From: Sreeja Chintalapati Date: Tue, 14 Oct 2025 20:05:07 +0530 Subject: [PATCH 1/4] HDDS-13723. Add missing detailed lock information --- .../om/request/key/OMDirectoriesPurgeRequestWithFSO.java | 5 +++-- .../multipart/S3ExpiredMultipartUploadsAbortRequest.java | 8 +++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java index adbbf58a98f0..99a819d66f83 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java @@ -125,7 +125,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, Execut return new OMDirectoriesPurgeResponseWithFSO(createErrorOMResponse(omResponse, e)); } List bucketLockKeys = getBucketLockKeySet(purgeDirsRequest); - boolean lockAcquired = omMetadataManager.getLock().acquireWriteLocks(BUCKET_LOCK, bucketLockKeys).isLockAcquired(); + mergeOmLockDetails(omMetadataManager.getLock().acquireWriteLocks(BUCKET_LOCK, bucketLockKeys)); + boolean lockAcquired = getOmLockDetails().isLockAcquired(); if (!lockAcquired && !purgeDirsRequest.getBucketNameInfosList().isEmpty()) { OMException oe = new OMException("Unable to acquire write locks on buckets while performing DirectoryPurge", OMException.ResultCodes.KEY_DELETION_ERROR); @@ -254,7 +255,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, Execut volBucketInfoMap.entrySet()) { entry.setValue(entry.getValue().copyObject()); } - omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketLockKeys); + mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketLockKeys)); } return new OMDirectoriesPurgeResponseWithFSO( 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 5f7d01d9a733..8bf9064a33fe 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 @@ -38,7 +38,6 @@ import org.apache.hadoop.ozone.om.helpers.OmMultipartAbortInfo; import org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo; import org.apache.hadoop.ozone.om.helpers.OmMultipartUpload; -import org.apache.hadoop.ozone.om.lock.OMLockDetails; import org.apache.hadoop.ozone.om.request.key.OMKeyRequest; import org.apache.hadoop.ozone.om.request.util.OMMultipartUploadUtils; import org.apache.hadoop.ozone.om.request.util.OmResponseUtil; @@ -198,11 +197,10 @@ private void updateTableCache(OzoneManager ozoneManager, OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager(); OmBucketInfo omBucketInfo = null; BucketLayout bucketLayout = null; - OMLockDetails omLockDetails = null; try { - omLockDetails = omMetadataManager.getLock() - .acquireWriteLock(BUCKET_LOCK, volumeName, bucketName); - acquiredLock = omLockDetails.isLockAcquired(); + mergeOmLockDetails(omMetadataManager.getLock() + .acquireWriteLock(BUCKET_LOCK, volumeName, bucketName)); + acquiredLock = getOmLockDetails().isLockAcquired(); omBucketInfo = getBucketInfo(omMetadataManager, volumeName, bucketName); From c31be3fff64ff223323c37a4f29c0b67de29c3d5 Mon Sep 17 00:00:00 2001 From: Sreeja Chintalapati Date: Fri, 14 Nov 2025 14:45:30 +0530 Subject: [PATCH 2/4] Added isLockAcquired check before calling releaseWriteLocks --- .../om/request/key/OMDirectoriesPurgeRequestWithFSO.java | 4 +++- .../apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java index 99a819d66f83..9f3ef3a5d12a 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMDirectoriesPurgeRequestWithFSO.java @@ -255,7 +255,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, Execut volBucketInfoMap.entrySet()) { entry.setValue(entry.getValue().copyObject()); } - mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketLockKeys)); + if (lockAcquired) { + mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketLockKeys)); + } } return new OMDirectoriesPurgeResponseWithFSO( diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java index b543c3cfbf62..acc7d4f38301 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java @@ -223,7 +223,9 @@ private List updateBucketSize(List bucketPurg } return bucketInfoList; } finally { - mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketKeyList)); + if (acquiredLock) { + mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketKeyList)); + } } } From 3b0ab5131de93e4273a6c3cf5a9f4f8645607ccf Mon Sep 17 00:00:00 2001 From: Sreeja Chintalapati Date: Thu, 20 Nov 2025 16:57:23 +0530 Subject: [PATCH 3/4] Removed unwanted check --- .../apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java index acc7d4f38301..e825740d6a95 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java @@ -223,9 +223,7 @@ private List updateBucketSize(List bucketPurg } return bucketInfoList; } finally { - if (acquiredLock) { mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketKeyList)); - } } } From ab69d328f8154a45fbb5989a2633c9d8b08366da Mon Sep 17 00:00:00 2001 From: Sreeja Chintalapati Date: Thu, 20 Nov 2025 18:00:39 +0530 Subject: [PATCH 4/4] Fixed checkstyle --- .../apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java index e825740d6a95..b543c3cfbf62 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyPurgeRequest.java @@ -223,7 +223,7 @@ private List updateBucketSize(List bucketPurg } return bucketInfoList; } finally { - mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketKeyList)); + mergeOmLockDetails(omMetadataManager.getLock().releaseWriteLocks(BUCKET_LOCK, bucketKeyList)); } }