From 6c625108bf99929a9ae0f62dc18719c4598be879 Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Tue, 20 Feb 2024 15:54:04 +0530 Subject: [PATCH 01/13] added deleteKeySuccessLatencyNs and deleteKeyFailureLatencyNs metrics --- .../hadoop/ozone/om/OMPerformanceMetrics.java | 15 +++++++++++++++ .../ozone/om/request/key/OMKeyDeleteRequest.java | 9 ++++++--- .../ozone/om/request/key/OMKeysDeleteRequest.java | 10 ++++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java index d118e2f4ecc9..36fa4fc4e794 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java @@ -119,6 +119,13 @@ public static void unregister() { @Metric(about = "resolveBucketLink latency in listKeys") private MutableRate listKeysResolveBucketLatencyNs; + @Metric(about = "deleteKeyFailure latency in nano seconds") + private MutableRate deleteKeyFailureLatencyNs; + + @Metric(about = "deleteKeySuccess latency in nano seconds") + private MutableRate deleteKeySuccessLatencyNs; + + public void addLookupLatency(long latencyInNs) { lookupLatencyNs.add(latencyInNs); } @@ -223,4 +230,12 @@ public MutableRate getListKeysAclCheckLatencyNs() { public MutableRate getListKeysResolveBucketLatencyNs() { return listKeysResolveBucketLatencyNs; } + + public void setDeleteKeyFailureLatencyNs(long latencyInNs) { + deleteKeyFailureLatencyNs.add(latencyInNs); + } + + public void setDeleteKeySuccessLatencyNs(long latencyInNs) { + deleteKeySuccessLatencyNs.add(latencyInNs); + } } 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 82d3bdc9e8ec..d03d9bba260a 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 @@ -22,6 +22,7 @@ import java.nio.file.InvalidPathException; import java.util.Map; +import org.apache.hadoop.ozone.om.OMPerformanceMetrics; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.om.helpers.BucketLayout; @@ -115,7 +116,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn OMMetrics omMetrics = ozoneManager.getMetrics(); omMetrics.incNumKeyDeletes(); - + OMPerformanceMetrics perfMetrics = ozoneManager.getPerfMetrics(); AuditLogger auditLogger = ozoneManager.getAuditLogger(); OzoneManagerProtocolProtos.UserInfo userInfo = getOmRequest().getUserInfo(); @@ -126,7 +127,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn boolean acquiredLock = false; OMClientResponse omClientResponse = null; Result result = null; - + long startNanos = Time.monotonicNowNanos(); try { String objectKey = omMetadataManager.getOzoneKey(volumeName, bucketName, keyName); @@ -186,18 +187,20 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn omClientResponse.setOmLockDetails(getOmLockDetails()); } } - + long endNanos = Time.monotonicNowNanos(); // Performing audit logging outside of the lock. auditLog(auditLogger, buildAuditMessage(OMAction.DELETE_KEY, auditMap, exception, userInfo)); switch (result) { case SUCCESS: + perfMetrics.setDeleteKeySuccessLatencyNs(endNanos - startNanos); omMetrics.decNumKeys(); LOG.debug("Key deleted. Volume:{}, Bucket:{}, Key:{}", volumeName, bucketName, keyName); break; case FAILURE: + perfMetrics.setDeleteKeyFailureLatencyNs(endNanos - startNanos); omMetrics.incNumKeyDeleteFails(); LOG.error("Key delete failed. Volume:{}, Bucket:{}, Key:{}.", volumeName, bucketName, keyName, exception); 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 df7b2725fb60..d33d88162f62 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 @@ -19,12 +19,13 @@ package org.apache.hadoop.ozone.om.request.key; import org.apache.commons.lang3.tuple.Pair; -import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.hdds.utils.db.cache.CacheKey; import org.apache.hadoop.hdds.utils.db.cache.CacheValue; +import org.apache.hadoop.util.Time; import org.apache.hadoop.ozone.audit.AuditLogger; import org.apache.hadoop.ozone.om.OMMetadataManager; import org.apache.hadoop.ozone.om.OMMetrics; +import org.apache.hadoop.ozone.om.OMPerformanceMetrics; import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.ResolvedBucket; import org.apache.hadoop.ozone.om.exceptions.OMException; @@ -49,6 +50,7 @@ import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer; import org.apache.hadoop.ozone.security.acl.OzoneObj; import jakarta.annotation.Nonnull; +import org.apache.ratis.server.protocol.TermIndex; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,6 +98,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn OMMetrics omMetrics = ozoneManager.getMetrics(); omMetrics.incNumKeyDeletes(); + OMPerformanceMetrics perfMetrics = ozoneManager.getPerfMetrics(); String volumeName = deleteKeyArgs.getVolumeName(); String bucketName = deleteKeyArgs.getBucketName(); Map auditMap = new LinkedHashMap<>(); @@ -121,6 +124,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn .setVolumeName(volumeName).setBucketName(bucketName); boolean deleteStatus = true; + long startNanos = Time.monotonicNowNanos(); try { ResolvedBucket bucket = ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this); @@ -215,13 +219,14 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn } addDeletedKeys(auditMap, deleteKeys, unDeletedKeys.getKeysList()); - + long endNanos = Time.monotonicNowNanos(); auditLog(auditLogger, buildAuditMessage(DELETE_KEYS, auditMap, exception, userInfo)); switch (result) { case SUCCESS: omMetrics.decNumKeys(deleteKeys.size()); + perfMetrics.setDeleteKeySuccessLatencyNs(endNanos - startNanos); if (LOG.isDebugEnabled()) { LOG.debug("Keys delete success. Volume:{}, Bucket:{}, Keys:{}", volumeName, bucketName, auditMap.get(DELETED_KEYS_LIST)); @@ -229,6 +234,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn break; case FAILURE: omMetrics.incNumKeyDeleteFails(); + perfMetrics.setDeleteKeyFailureLatencyNs(endNanos - startNanos); if (LOG.isDebugEnabled()) { LOG.debug("Keys delete failed. Volume:{}, Bucket:{}, DeletedKeys:{}, " + "UnDeletedKeys:{}", volumeName, bucketName, From 715fad9a83e73b48053df8a87a9630081a8c2275 Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Thu, 29 Feb 2024 11:12:25 +0530 Subject: [PATCH 02/13] added deleteKeysResolveBucketLatencyNs, deleteKeysAclCheckLatencyNs, deleteKeyResolveBucketAndAclCheckLatencyNs --- .../hadoop/ozone/om/OMPerformanceMetrics.java | 20 +++++++++++++++++++ .../om/request/key/OMKeyDeleteRequest.java | 4 ++++ .../om/request/key/OMKeysDeleteRequest.java | 6 +++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java index 36fa4fc4e794..8b8a153aae01 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java @@ -125,6 +125,14 @@ public static void unregister() { @Metric(about = "deleteKeySuccess latency in nano seconds") private MutableRate deleteKeySuccessLatencyNs; + @Metric(about = "resolveBucketLink latency in deleteKeys") + private MutableRate deleteKeysResolveBucketLatencyNs; + + @Metric(about = "ACLs check latency in deleteKeys") + private MutableRate deleteKeysAclCheckLatencyNs; + + @Metric(about = "resolveBucketLink and ACLs check latency in deleteKey") + private MutableRate deleteKeyResolveBucketAndAclCheckLatencyNs; public void addLookupLatency(long latencyInNs) { lookupLatencyNs.add(latencyInNs); @@ -238,4 +246,16 @@ public void setDeleteKeyFailureLatencyNs(long latencyInNs) { public void setDeleteKeySuccessLatencyNs(long latencyInNs) { deleteKeySuccessLatencyNs.add(latencyInNs); } + + public void setDeleteKeysResolveBucketLatencyNs(long latencyInNs) { + deleteKeysResolveBucketLatencyNs.add(latencyInNs); + } + + public void setDeleteKeysAclCheckLatencyNs(long latencyInNs) { + deleteKeysAclCheckLatencyNs.add(latencyInNs); + } + + public void setDeleteKeyResolveBucketAndAclCheckLatencyNs(long latencyInNs) { + deleteKeyResolveBucketAndAclCheckLatencyNs.add(latencyInNs); + } } 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 d03d9bba260a..1f524a63d8c8 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 @@ -77,6 +77,7 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { DeleteKeyRequest deleteKeyRequest = super.preExecute(ozoneManager) .getDeleteKeyRequest(); Preconditions.checkNotNull(deleteKeyRequest); + OMPerformanceMetrics perfMetrics = ozoneManager.getPerfMetrics(); OzoneManagerProtocolProtos.KeyArgs keyArgs = deleteKeyRequest.getKeyArgs(); String keyPath = keyArgs.getKeyName(); @@ -88,7 +89,10 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { OzoneManagerProtocolProtos.KeyArgs.Builder newKeyArgs = keyArgs.toBuilder().setModificationTime(Time.now()).setKeyName(keyPath); + long startNano = Time.monotonicNowNanos(); KeyArgs resolvedArgs = resolveBucketAndCheckAcls(ozoneManager, newKeyArgs); + perfMetrics.setDeleteKeyResolveBucketAndAclCheckLatencyNs( + Time.monotonicNowNanos() - startNano); return getOmRequest().toBuilder() .setDeleteKeyRequest(deleteKeyRequest.toBuilder() .setKeyArgs(resolvedArgs)) 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 d33d88162f62..d337c50a00a9 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 @@ -69,6 +69,7 @@ import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.OK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.PARTIAL_DELETE; +import static org.apache.hadoop.util.MetricUtil.captureLatencyNs; /** * Handles DeleteKey request. @@ -126,12 +127,13 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn boolean deleteStatus = true; long startNanos = Time.monotonicNowNanos(); try { + long startNs = Time.monotonicNowNanos(); ResolvedBucket bucket = ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this); + perfMetrics.setDeleteKeysResolveBucketLatencyNs(Time.monotonicNowNanos() - startNs); bucket.audit(auditMap); volumeName = bucket.realVolume(); bucketName = bucket.realBucket(); - mergeOmLockDetails(omMetadataManager.getLock() .acquireWriteLock(BUCKET_LOCK, volumeName, bucketName)); acquiredLock = getOmLockDetails().isLockAcquired(); @@ -157,6 +159,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn try { // check Acl + long startNano = Time.monotonicNowNanos(); checkKeyAcls(ozoneManager, volumeName, bucketName, keyName, IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, volumeOwner); @@ -164,6 +167,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn ozoneManager, omMetadataManager, volumeName, bucketName, keyName); addKeyToAppropriateList(omKeyInfoList, omKeyInfo, dirList, fileStatus); + perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNano); } catch (Exception ex) { deleteStatus = false; LOG.error("Acl check failed for Key: {}", objectKey, ex); From f663a2871035f38b731b187bfe61f5b55d7c41ff Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Thu, 29 Feb 2024 11:50:29 +0530 Subject: [PATCH 03/13] removed unused imports --- .../apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java | 1 - 1 file changed, 1 deletion(-) 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 d337c50a00a9..e8f806b2b312 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 @@ -69,7 +69,6 @@ import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.OK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.PARTIAL_DELETE; -import static org.apache.hadoop.util.MetricUtil.captureLatencyNs; /** * Handles DeleteKey request. From 6924b8c560c9e3fa9b11e8a31b0387bb7685ecda Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Fri, 1 Mar 2024 15:44:50 +0530 Subject: [PATCH 04/13] resolution for unit test case --- .../apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java index fde83d7b7697..05316b613025 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java @@ -121,6 +121,7 @@ public class TestOMKeyRequest { public void setup() throws Exception { ozoneManager = mock(OzoneManager.class); omMetrics = OMMetrics.create(); + metrics = OMPerformanceMetrics.register(); OzoneConfiguration ozoneConfiguration = getOzoneConfiguration(); ozoneConfiguration.set(OMConfigKeys.OZONE_OM_DB_DIRS, folder.toAbsolutePath().toString()); @@ -130,6 +131,7 @@ public void setup() throws Exception { omMetadataManager = new OmMetadataManagerImpl(ozoneConfiguration, ozoneManager); when(ozoneManager.getMetrics()).thenReturn(omMetrics); + when(ozoneManager.getPerfMetrics()).thenReturn(metrics); when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager); when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); From 1fa842865bb0e2daa6575d3f148b5d7a88448f56 Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Mon, 4 Mar 2024 16:13:40 +0530 Subject: [PATCH 05/13] changed naming conventions --- .../om/request/key/OMKeyDeleteRequest.java | 11 ++++++----- .../om/request/key/OMKeysDeleteRequest.java | 17 ++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) 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 1f524a63d8c8..d36109afb94b 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 @@ -89,10 +89,10 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { OzoneManagerProtocolProtos.KeyArgs.Builder newKeyArgs = keyArgs.toBuilder().setModificationTime(Time.now()).setKeyName(keyPath); - long startNano = Time.monotonicNowNanos(); + long startNanosDeleteKeyResolveBucketAndCheckAclsLatency = Time.monotonicNowNanos(); KeyArgs resolvedArgs = resolveBucketAndCheckAcls(ozoneManager, newKeyArgs); perfMetrics.setDeleteKeyResolveBucketAndAclCheckLatencyNs( - Time.monotonicNowNanos() - startNano); + Time.monotonicNowNanos() - startNanosDeleteKeyResolveBucketAndCheckAclsLatency); return getOmRequest().toBuilder() .setDeleteKeyRequest(deleteKeyRequest.toBuilder() .setKeyArgs(resolvedArgs)) @@ -176,12 +176,16 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn omBucketInfo.copyObject()); result = Result.SUCCESS; + long endNanosDeleteKeySuccessLatencyNs = Time.monotonicNowNanos(); + perfMetrics.setDeleteKeySuccessLatencyNs(endNanosDeleteKeySuccessLatencyNs - startNanos); } catch (IOException | InvalidPathException ex) { result = Result.FAILURE; exception = ex; omClientResponse = new OMKeyDeleteResponse(createErrorOMResponse(omResponse, exception), getBucketLayout()); + long endNanosDeleteKeyFailureLatencyNs = Time.monotonicNowNanos(); + perfMetrics.setDeleteKeyFailureLatencyNs(endNanosDeleteKeyFailureLatencyNs - startNanos); } finally { if (acquiredLock) { mergeOmLockDetails(omMetadataManager.getLock() @@ -191,20 +195,17 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn omClientResponse.setOmLockDetails(getOmLockDetails()); } } - long endNanos = Time.monotonicNowNanos(); // Performing audit logging outside of the lock. auditLog(auditLogger, buildAuditMessage(OMAction.DELETE_KEY, auditMap, exception, userInfo)); switch (result) { case SUCCESS: - perfMetrics.setDeleteKeySuccessLatencyNs(endNanos - startNanos); omMetrics.decNumKeys(); LOG.debug("Key deleted. Volume:{}, Bucket:{}, Key:{}", volumeName, bucketName, keyName); break; case FAILURE: - perfMetrics.setDeleteKeyFailureLatencyNs(endNanos - startNanos); omMetrics.incNumKeyDeleteFails(); LOG.error("Key delete failed. Volume:{}, Bucket:{}, Key:{}.", volumeName, bucketName, keyName, exception); 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 e8f806b2b312..462b0457e6ac 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 @@ -126,10 +126,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn boolean deleteStatus = true; long startNanos = Time.monotonicNowNanos(); try { - long startNs = Time.monotonicNowNanos(); + long startNanosDeleteKeysResolveBucketLatency = Time.monotonicNowNanos(); ResolvedBucket bucket = ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this); - perfMetrics.setDeleteKeysResolveBucketLatencyNs(Time.monotonicNowNanos() - startNs); + perfMetrics.setDeleteKeysResolveBucketLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysResolveBucketLatency); bucket.audit(auditMap); volumeName = bucket.realVolume(); bucketName = bucket.realBucket(); @@ -158,7 +158,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn try { // check Acl - long startNano = Time.monotonicNowNanos(); + long startNanosDeleteKeysAclCheckLatency = Time.monotonicNowNanos(); checkKeyAcls(ozoneManager, volumeName, bucketName, keyName, IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, volumeOwner); @@ -166,7 +166,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn ozoneManager, omMetadataManager, volumeName, bucketName, keyName); addKeyToAppropriateList(omKeyInfoList, omKeyInfo, dirList, fileStatus); - perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNano); + perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); } catch (Exception ex) { deleteStatus = false; LOG.error("Acl check failed for Key: {}", objectKey, ex); @@ -192,7 +192,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn unDeletedKeys, deleteStatus, omBucketInfo, volumeId); result = Result.SUCCESS; - + long endNanosDeleteKeySuccessLatencyNs = Time.monotonicNowNanos(); + perfMetrics.setDeleteKeySuccessLatencyNs(endNanosDeleteKeySuccessLatencyNs - startNanos); } catch (IOException | InvalidPathException ex) { result = Result.FAILURE; exception = ex; @@ -210,7 +211,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn .setUnDeletedKeys(unDeletedKeys).build()).build(); omClientResponse = new OMKeysDeleteResponse(omResponse.build(), getBucketLayout()); - + long endNanosDeleteKeyFailureLatencyNs = Time.monotonicNowNanos(); + perfMetrics.setDeleteKeyFailureLatencyNs(endNanosDeleteKeyFailureLatencyNs - startNanos); } finally { if (acquiredLock) { mergeOmLockDetails(omMetadataManager.getLock() @@ -222,14 +224,12 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn } addDeletedKeys(auditMap, deleteKeys, unDeletedKeys.getKeysList()); - long endNanos = Time.monotonicNowNanos(); auditLog(auditLogger, buildAuditMessage(DELETE_KEYS, auditMap, exception, userInfo)); switch (result) { case SUCCESS: omMetrics.decNumKeys(deleteKeys.size()); - perfMetrics.setDeleteKeySuccessLatencyNs(endNanos - startNanos); if (LOG.isDebugEnabled()) { LOG.debug("Keys delete success. Volume:{}, Bucket:{}, Keys:{}", volumeName, bucketName, auditMap.get(DELETED_KEYS_LIST)); @@ -237,7 +237,6 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn break; case FAILURE: omMetrics.incNumKeyDeleteFails(); - perfMetrics.setDeleteKeyFailureLatencyNs(endNanos - startNanos); if (LOG.isDebugEnabled()) { LOG.debug("Keys delete failed. Volume:{}, Bucket:{}, DeletedKeys:{}, " + "UnDeletedKeys:{}", volumeName, bucketName, From 0bfe28d9301c2da45243a3db7a8df2fb8bb1be43 Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Mon, 4 Mar 2024 16:38:58 +0530 Subject: [PATCH 06/13] fixed checkstyle --- .../hadoop/ozone/om/request/key/OMKeysDeleteRequest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 462b0457e6ac..2715f9940f8d 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 @@ -129,7 +129,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn long startNanosDeleteKeysResolveBucketLatency = Time.monotonicNowNanos(); ResolvedBucket bucket = ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this); - perfMetrics.setDeleteKeysResolveBucketLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysResolveBucketLatency); + perfMetrics.setDeleteKeysResolveBucketLatencyNs( + Time.monotonicNowNanos() - startNanosDeleteKeysResolveBucketLatency); bucket.audit(auditMap); volumeName = bucket.realVolume(); bucketName = bucket.realBucket(); From 6821eaed705b0d9ccbc182ac8342d8d6f80ceeb4 Mon Sep 17 00:00:00 2001 From: muskan mishra Date: Thu, 7 Mar 2024 11:36:23 +0530 Subject: [PATCH 07/13] refactored code --- .../apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.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/OMKeysDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java index 2715f9940f8d..de47b53b6c5d 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 @@ -163,11 +163,11 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn checkKeyAcls(ozoneManager, volumeName, bucketName, keyName, IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, volumeOwner); + perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); OzoneFileStatus fileStatus = getOzoneKeyStatus( ozoneManager, omMetadataManager, volumeName, bucketName, keyName); addKeyToAppropriateList(omKeyInfoList, omKeyInfo, dirList, fileStatus); - perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); } catch (Exception ex) { deleteStatus = false; LOG.error("Acl check failed for Key: {}", objectKey, ex); From c27a2948ebc011e8aa98086edd0dedc68bf17b28 Mon Sep 17 00:00:00 2001 From: muskan1012 Date: Fri, 19 Apr 2024 16:13:32 +0530 Subject: [PATCH 08/13] introduced lamba functions for resolveBucket and AclCheck Latency --- .../hadoop/ozone/om/OMPerformanceMetrics.java | 12 ++++++------ .../om/request/key/OMKeyDeleteRequest.java | 16 +++++++--------- .../om/request/key/OMKeysDeleteRequest.java | 18 ++++++++---------- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java index 022e277f5a0f..742f0d47f92f 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java @@ -247,15 +247,15 @@ public void setDeleteKeySuccessLatencyNs(long latencyInNs) { deleteKeySuccessLatencyNs.add(latencyInNs); } - public void setDeleteKeysResolveBucketLatencyNs(long latencyInNs) { - deleteKeysResolveBucketLatencyNs.add(latencyInNs); + public MutableRate getDeleteKeysResolveBucketLatencyNs() { + return deleteKeysResolveBucketLatencyNs; } - public void setDeleteKeysAclCheckLatencyNs(long latencyInNs) { - deleteKeysAclCheckLatencyNs.add(latencyInNs); + public MutableRate getDeleteKeysAclCheckLatencyNs() { + return deleteKeysAclCheckLatencyNs; } - public void setDeleteKeyResolveBucketAndAclCheckLatencyNs(long latencyInNs) { - deleteKeyResolveBucketAndAclCheckLatencyNs.add(latencyInNs); + public MutableRate getDeleteKeyResolveBucketAndAclCheckLatencyNs() { + return deleteKeyResolveBucketAndAclCheckLatencyNs; } } 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 a173e8dcd887..897f5d18b2b4 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 @@ -61,6 +61,7 @@ import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND; import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; +import static org.apache.hadoop.util.MetricUtil.captureLatencyNs; /** * Handles DeleteKey request. @@ -91,22 +92,19 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { OzoneManagerProtocolProtos.KeyArgs.Builder newKeyArgs = keyArgs.toBuilder().setModificationTime(Time.now()).setKeyName(keyPath); - long startNanosDeleteKeyResolveBucketAndCheckAclsLatency = Time.monotonicNowNanos(); KeyArgs resolvedArgs = resolveBucketAndCheckAcls(ozoneManager, newKeyArgs); - perfMetrics.setDeleteKeyResolveBucketAndAclCheckLatencyNs( - Time.monotonicNowNanos() - startNanosDeleteKeyResolveBucketAndCheckAclsLatency); return getOmRequest().toBuilder() .setDeleteKeyRequest(deleteKeyRequest.toBuilder() .setKeyArgs(resolvedArgs)) .setUserInfo(getUserIfNotExists(ozoneManager)).build(); } - protected KeyArgs resolveBucketAndCheckAcls(OzoneManager ozoneManager, - KeyArgs.Builder newKeyArgs) throws IOException { - return resolveBucketAndCheckKeyAcls(newKeyArgs.build(), ozoneManager, - ACLType.DELETE); - } - +protected KeyArgs resolveBucketAndCheckAcls(OzoneManager ozoneManager, + KeyArgs.Builder newKeyArgs) throws IOException { + return captureLatencyNs( + ozoneManager.getPerfMetrics().getDeleteKeyResolveBucketAndAclCheckLatencyNs(), + () -> resolveBucketAndCheckKeyAcls(newKeyArgs.build(), ozoneManager, ACLType.DELETE)); +} @Override @SuppressWarnings("methodlength") public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIndex termIndex) { 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 0d05023d0a89..4687b27bd75c 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 @@ -71,6 +71,7 @@ import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.OK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.PARTIAL_DELETE; +import static org.apache.hadoop.util.MetricUtil.captureLatencyNs; /** * Handles DeleteKey request. @@ -127,12 +128,11 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn boolean deleteStatus = true; long startNanos = Time.monotonicNowNanos(); + String finalVolumeName = volumeName; + String finalBucketName = bucketName; try { - long startNanosDeleteKeysResolveBucketLatency = Time.monotonicNowNanos(); - ResolvedBucket bucket = - ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this); - perfMetrics.setDeleteKeysResolveBucketLatencyNs( - Time.monotonicNowNanos() - startNanosDeleteKeysResolveBucketLatency); + ResolvedBucket bucket = captureLatencyNs(perfMetrics.getDeleteKeysResolveBucketLatencyNs(), () -> + ozoneManager.resolveBucketLink(Pair.of(finalVolumeName, finalBucketName), this)); bucket.audit(auditMap); volumeName = bucket.realVolume(); bucketName = bucket.realBucket(); @@ -161,11 +161,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn try { // check Acl - long startNanosDeleteKeysAclCheckLatency = Time.monotonicNowNanos(); - checkKeyAcls(ozoneManager, volumeName, bucketName, keyName, - IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, - volumeOwner); - perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); + captureLatencyNs(perfMetrics.getDeleteKeysAclCheckLatencyNs(), + () -> checkKeyAcls(ozoneManager, finalVolumeName, finalBucketName, keyName, + IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, volumeOwner)); OzoneFileStatus fileStatus = getOzoneKeyStatus( ozoneManager, omMetadataManager, volumeName, bucketName, keyName); addKeyToAppropriateList(omKeyInfoList, omKeyInfo, dirList, From d259d6212b29d7f40efef42245abbd7b2552d36e Mon Sep 17 00:00:00 2001 From: muskan1012 Date: Fri, 19 Apr 2024 16:36:00 +0530 Subject: [PATCH 09/13] fixed checkstyle and findbugs --- .../org/apache/hadoop/ozone/om/OMPerformanceMetrics.java | 2 +- .../hadoop/ozone/om/request/key/OMKeyDeleteRequest.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java index 742f0d47f92f..78a5c64ef604 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java @@ -255,7 +255,7 @@ public MutableRate getDeleteKeysAclCheckLatencyNs() { return deleteKeysAclCheckLatencyNs; } - public MutableRate getDeleteKeyResolveBucketAndAclCheckLatencyNs() { + public MutableRate getDeleteKeyResolveBucketAndAclCheckLatencyNs() { return deleteKeyResolveBucketAndAclCheckLatencyNs; } } 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 897f5d18b2b4..fe886cc8ec05 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 @@ -80,7 +80,6 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { DeleteKeyRequest deleteKeyRequest = super.preExecute(ozoneManager) .getDeleteKeyRequest(); Preconditions.checkNotNull(deleteKeyRequest); - OMPerformanceMetrics perfMetrics = ozoneManager.getPerfMetrics(); OzoneManagerProtocolProtos.KeyArgs keyArgs = deleteKeyRequest.getKeyArgs(); String keyPath = keyArgs.getKeyName(); @@ -99,12 +98,12 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { .setUserInfo(getUserIfNotExists(ozoneManager)).build(); } -protected KeyArgs resolveBucketAndCheckAcls(OzoneManager ozoneManager, + protected KeyArgs resolveBucketAndCheckAcls(OzoneManager ozoneManager, KeyArgs.Builder newKeyArgs) throws IOException { - return captureLatencyNs( + return captureLatencyNs( ozoneManager.getPerfMetrics().getDeleteKeyResolveBucketAndAclCheckLatencyNs(), () -> resolveBucketAndCheckKeyAcls(newKeyArgs.build(), ozoneManager, ACLType.DELETE)); -} + } @Override @SuppressWarnings("methodlength") public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIndex termIndex) { From 0e0c9ab19d5d20c4b333ce081d7bd04bbc7bcd97 Mon Sep 17 00:00:00 2001 From: muskan1012 Date: Mon, 24 Jun 2024 10:45:46 +0530 Subject: [PATCH 10/13] minor nits fixed --- .../apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java | 2 +- .../apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) 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 fe886cc8ec05..8bb59221654c 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 @@ -99,7 +99,7 @@ public OMRequest preExecute(OzoneManager ozoneManager) throws IOException { } protected KeyArgs resolveBucketAndCheckAcls(OzoneManager ozoneManager, - KeyArgs.Builder newKeyArgs) throws IOException { + KeyArgs.Builder newKeyArgs) throws IOException { return captureLatencyNs( ozoneManager.getPerfMetrics().getDeleteKeyResolveBucketAndAclCheckLatencyNs(), () -> resolveBucketAndCheckKeyAcls(newKeyArgs.build(), ozoneManager, ACLType.DELETE)); 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 4687b27bd75c..16ba8bbb3047 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 @@ -136,6 +136,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn bucket.audit(auditMap); volumeName = bucket.realVolume(); bucketName = bucket.realBucket(); + mergeOmLockDetails(omMetadataManager.getLock() .acquireWriteLock(BUCKET_LOCK, volumeName, bucketName)); acquiredLock = getOmLockDetails().isLockAcquired(); @@ -226,6 +227,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn } addDeletedKeys(auditMap, deleteKeys, unDeletedKeys.getKeysList()); + auditLog(auditLogger, buildAuditMessage(DELETE_KEYS, auditMap, exception, userInfo)); From c9956dadcc4585c008cb904cf00c3356c6c7b534 Mon Sep 17 00:00:00 2001 From: muskan1012 Date: Thu, 11 Jul 2024 12:32:02 +0530 Subject: [PATCH 11/13] changed implementation as per the review comments --- .../hadoop/ozone/om/OMPerformanceMetrics.java | 8 ++++---- .../ozone/om/request/key/OMKeysDeleteRequest.java | 15 +++++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java index f1176032ea75..a01855d1b63e 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMPerformanceMetrics.java @@ -265,12 +265,12 @@ public void setDeleteKeySuccessLatencyNs(long latencyInNs) { deleteKeySuccessLatencyNs.add(latencyInNs); } - public MutableRate getDeleteKeysResolveBucketLatencyNs() { - return deleteKeysResolveBucketLatencyNs; + public void setDeleteKeysResolveBucketLatencyNs(long latencyInNs) { + deleteKeysResolveBucketLatencyNs.add(latencyInNs); } - public MutableRate getDeleteKeysAclCheckLatencyNs() { - return deleteKeysAclCheckLatencyNs; + public void setDeleteKeysAclCheckLatencyNs(long latencyInNs) { + deleteKeysAclCheckLatencyNs.add(latencyInNs); } public MutableRate getDeleteKeyResolveBucketAndAclCheckLatencyNs() { 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 6056b5478f71..2506834e06a9 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 @@ -73,7 +73,6 @@ import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.OK; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status.PARTIAL_DELETE; -import static org.apache.hadoop.util.MetricUtil.captureLatencyNs; /** * Handles DeleteKey request. @@ -134,8 +133,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn String finalVolumeName = volumeName; String finalBucketName = bucketName; try { - ResolvedBucket bucket = captureLatencyNs(perfMetrics.getDeleteKeysResolveBucketLatencyNs(), () -> - ozoneManager.resolveBucketLink(Pair.of(finalVolumeName, finalBucketName), this)); + long startNanosDeleteKeysResolveBucketLatency = Time.monotonicNowNanos(); + ResolvedBucket bucket = ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this); + perfMetrics.setDeleteKeysResolveBucketLatencyNs( + Time.monotonicNowNanos() - startNanosDeleteKeysResolveBucketLatency); bucket.audit(auditMap); volumeName = bucket.realVolume(); bucketName = bucket.realBucket(); @@ -166,13 +167,15 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn try { // check Acl - captureLatencyNs(perfMetrics.getDeleteKeysAclCheckLatencyNs(), - () -> checkKeyAcls(ozoneManager, finalVolumeName, finalBucketName, keyName, - IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, volumeOwner)); + long startNanosDeleteKeysAclCheckLatency = Time.monotonicNowNanos(); + checkKeyAcls(ozoneManager, volumeName, bucketName, keyName, + IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, + volumeOwner); OzoneFileStatus fileStatus = getOzoneKeyStatus( ozoneManager, omMetadataManager, volumeName, bucketName, keyName); addKeyToAppropriateList(omKeyInfoList, omKeyInfo, dirList, fileStatus); + perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); } catch (Exception ex) { deleteStatus = false; LOG.error("Acl check failed for Key: {}", objectKey, ex); From 14f70de972736b5d21c594dff20146dbaab0b42d Mon Sep 17 00:00:00 2001 From: muskan1012 Date: Thu, 11 Jul 2024 21:43:58 +0530 Subject: [PATCH 12/13] minor nits fixed --- .../hadoop/ozone/om/request/key/OMKeyDeleteRequest.java | 2 ++ .../hadoop/ozone/om/request/key/OMKeysDeleteRequest.java | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) 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 8bb59221654c..5739ee5096ee 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 @@ -104,6 +104,7 @@ protected KeyArgs resolveBucketAndCheckAcls(OzoneManager ozoneManager, ozoneManager.getPerfMetrics().getDeleteKeyResolveBucketAndAclCheckLatencyNs(), () -> resolveBucketAndCheckKeyAcls(newKeyArgs.build(), ozoneManager, ACLType.DELETE)); } + @Override @SuppressWarnings("methodlength") public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIndex termIndex) { @@ -204,6 +205,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn omClientResponse.setOmLockDetails(getOmLockDetails()); } } + // Performing audit logging outside of the lock. auditLog(auditLogger, buildAuditMessage(OMAction.DELETE_KEY, auditMap, exception, userInfo)); 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 2506834e06a9..0d03d8880664 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 @@ -169,13 +169,13 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn // check Acl long startNanosDeleteKeysAclCheckLatency = Time.monotonicNowNanos(); checkKeyAcls(ozoneManager, volumeName, bucketName, keyName, - IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, - volumeOwner); + IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY, + volumeOwner); + perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); OzoneFileStatus fileStatus = getOzoneKeyStatus( ozoneManager, omMetadataManager, volumeName, bucketName, keyName); addKeyToAppropriateList(omKeyInfoList, omKeyInfo, dirList, fileStatus); - perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() - startNanosDeleteKeysAclCheckLatency); } catch (Exception ex) { deleteStatus = false; LOG.error("Acl check failed for Key: {}", objectKey, ex); From 98bc21714181e2d4612980b38d3816e015375cfc Mon Sep 17 00:00:00 2001 From: tanvipenumudy <46785609+tanvipenumudy@users.noreply.github.com> Date: Fri, 12 Jul 2024 12:18:41 +0530 Subject: [PATCH 13/13] Update hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java --- .../apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java | 2 -- 1 file changed, 2 deletions(-) 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 0d03d8880664..fe66cb4e79bd 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 @@ -130,8 +130,6 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn boolean deleteStatus = true; long startNanos = Time.monotonicNowNanos(); - String finalVolumeName = volumeName; - String finalBucketName = bucketName; try { long startNanosDeleteKeysResolveBucketLatency = Time.monotonicNowNanos(); ResolvedBucket bucket = ozoneManager.resolveBucketLink(Pair.of(volumeName, bucketName), this);