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 e34f491a87 HDDS-9447. Redundant ACL checks in getKeyInfo for S3 use
case (#5440)
e34f491a87 is described below
commit e34f491a87c6e8533a2d60d54f89343e4cac8eeb
Author: Duong Nguyen <[email protected]>
AuthorDate: Thu Oct 19 08:38:39 2023 -0700
HDDS-9447. Redundant ACL checks in getKeyInfo for S3 use case (#5440)
---
.../org/apache/hadoop/ozone/om/OmMetadataReader.java | 2 +-
.../java/org/apache/hadoop/ozone/om/OzoneManager.java | 18 ++++++++++++++++--
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataReader.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataReader.java
index 467b23df52..d63eea81f6 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataReader.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataReader.java
@@ -159,7 +159,7 @@ public class OmMetadataReader implements IOmMetadataReader,
Auditor {
final OmKeyArgs resolvedVolumeArgs;
if (assumeS3Context) {
- S3VolumeContext context = ozoneManager.getS3VolumeContext();
+ S3VolumeContext context = ozoneManager.getS3VolumeContext(true);
s3VolumeContext = java.util.Optional.of(context);
resolvedVolumeArgs = args.toBuilder()
.setVolumeName(context.getOmVolumeArgs().getVolume())
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index 01364e158a..27dcd689ee 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -3440,6 +3440,10 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
@Override
public S3VolumeContext getS3VolumeContext() throws IOException {
+ return getS3VolumeContext(false);
+ }
+
+ S3VolumeContext getS3VolumeContext(boolean skipChecks) throws IOException {
long start = Time.monotonicNowNanos();
// Unless the OM request contains S3 authentication info with an access
// ID that corresponds to a tenant volume, the request will be directed
@@ -3519,9 +3523,19 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
}
}
- // getVolumeInfo() performs acl checks and checks volume existence.
+
+ final OmVolumeArgs volumeInfo;
+ if (skipChecks) {
+ // for internal usages, skip acl checks and metrics.
+ volumeInfo = volumeManager.getVolumeInfo(s3Volume);
+ } else {
+ // for external usages, getVolumeInfo() performs acl checks
+ // and metric updates.
+ volumeInfo = getVolumeInfo(s3Volume);
+ }
+
final S3VolumeContext.Builder s3VolumeContext =
S3VolumeContext.newBuilder()
- .setOmVolumeArgs(getVolumeInfo(s3Volume))
+ .setOmVolumeArgs(volumeInfo)
.setUserPrincipal(userPrincipal);
perfMetrics.addS3VolumeContextLatencyNs(Time.monotonicNowNanos() - start);
return s3VolumeContext.build();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]