sarvekshayr commented on code in PR #9653:
URL: https://github.com/apache/ozone/pull/9653#discussion_r3264156986


##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java:
##########
@@ -88,6 +88,64 @@ public OMKeysDeleteRequest(OMRequest omRequest, BucketLayout 
bucketLayout) {
     super(omRequest, bucketLayout);
   }
 
+  @Override
+  public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
+    super.preExecute(ozoneManager);
+
+    DeleteKeysRequest deleteKeysRequest = 
getOmRequest().getDeleteKeysRequest();
+    DeleteKeyArgs deleteKeyArgs = deleteKeysRequest.getDeleteKeys();
+
+    String volumeName = deleteKeyArgs.getVolumeName();
+    String bucketName = deleteKeyArgs.getBucketName();
+    List<String> keys = deleteKeyArgs.getKeysList();
+
+    // Resolve bucket link
+    ResolvedBucket resolvedBucketObj = ozoneManager.resolveBucketLink(
+        Pair.of(volumeName, bucketName));
+    String resolvedVolume = resolvedBucketObj.realVolume();
+    String resolvedBucket = resolvedBucketObj.realBucket();
+
+    // ACL check during preExecute - filter out keys that fail ACL check
+    List<String> keysPassingAcl = new ArrayList<>();
+    if (ozoneManager.getAclsEnabled()) {
+      for (String keyName : keys) {
+        try {
+          checkKeyAcls(ozoneManager, resolvedVolume, resolvedBucket, keyName,
+              IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY);
+          keysPassingAcl.add(keyName);

Review Comment:
   Clients that rely solely on OM delete-keys response fields may no longer see 
per-key ACL denials, which weakens observable failure semantics even though 
audit may still capture them. This needs to be addressed.



##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java:
##########
@@ -166,25 +224,11 @@ public OMClientResponse 
validateAndUpdateCache(OzoneManager ozoneManager, Execut
           continue;
         }
 
-        try {
-          // check Acl
-          long startNanosDeleteKeysAclCheckLatency = Time.monotonicNowNanos();
-          checkKeyAcls(ozoneManager, volumeName, bucketName, keyName,
-              IAccessAuthorizer.ACLType.DELETE, OzoneObj.ResourceType.KEY,
-              volumeOwner);
-          perfMetrics.setDeleteKeysAclCheckLatencyNs(Time.monotonicNowNanos() 
- startNanosDeleteKeysAclCheckLatency);

Review Comment:
   `deleteKeysAclCheckLatencyNs` metric is no longer updated after moving out 
the ACL check from `validateAndUpdateCache()`. Let's restore the metric in 
`OMKeysDeleteRequest.preExecute()`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to