smengcl commented on code in PR #3971:
URL: https://github.com/apache/ozone/pull/3971#discussion_r1098105396


##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java:
##########
@@ -2665,6 +2665,12 @@ public List<OmVolumeArgs> listVolumeByUser(String 
userName, String prefix,
     try {
       metrics.incNumVolumeLists();
       if (isAclEnabled) {
+        String remoteUserName = remoteUserUgi.getShortUserName();
+        // if not admin nor list my own volumes, check ACL.
+        if (!remoteUserName.equals(userName) && !isAdmin(remoteUserUgi)) {

Review Comment:
   Something like this:
   
   ```diff
   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 67803786df..3a9308ef3f 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
   @@ -2592,8 +2592,13 @@ public List<OmVolumeArgs> listVolumeByUser(String 
userName, String prefix,
          metrics.incNumVolumeLists();
          if (isAclEnabled) {
            String remoteUserName = remoteUserUgi.getShortUserName();
   +        // Convert userName to short username
   +        final UserGroupInformation ugiUserParam =
   +            UserGroupInformation.createRemoteUser(userName);
   +        final String userParamShortName = ugiUserParam.getShortUserName();
            // if not admin nor list my own volumes, check ACL.
   -        if (!remoteUserName.equals(userName) && !isAdmin(remoteUserUgi)) {
   +        if (!remoteUserName.equals(userParamShortName)
   +            && !isAdmin(remoteUserUgi)) {
              omMetadataReader.checkAcls(ResourceType.VOLUME,
                  StoreType.OZONE, ACLType.LIST,
                  OzoneConsts.OZONE_ROOT, null, null);
   diff --git 
a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneClientAdapterImpl.java
 
b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneClientAdapterImpl.java
   index c1d882b2e4..20e9f58f81 100644
   --- 
a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneClientAdapterImpl.java
   +++ 
b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneClientAdapterImpl.java
   @@ -538,7 +538,17 @@ public boolean deleteObject(String path, boolean 
recursive)
        }
        try {
          OzoneBucket bucket = getBucket(ofsPath, false);
   -      bucket.deleteDirectory(keyName, recursive);
   +      if (bucket.isLink()) {
   +        final String bucketName = bucket.getName();
   +        final String volumeName = bucket.getVolumeName();
   +        LOG.debug("removing linked bucket '{}' from volume '{}'",
   +            bucketName, volumeName);
   +        // Delete the bucket from volume
   +        OzoneVolume vol = objectStore.getVolume(volumeName);
   +        vol.deleteBucket(bucketName);
   +      } else {
   +        bucket.deleteDirectory(keyName, recursive);
   +      }
          return true;
        } catch (OMException ome) {
          LOG.error("delete key failed {}", ome.getMessage());
   ```



-- 
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