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 d4570c50a80 HDDS-14111. Make OmBucketInfo ACL list immutable (#9466)
d4570c50a80 is described below

commit d4570c50a807a25a07c2762473bd05db93c5cb90
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Wed Dec 10 15:26:38 2025 +0100

    HDDS-14111. Make OmBucketInfo ACL list immutable (#9466)
---
 .../apache/hadoop/ozone/client/rpc/RpcClient.java  |  2 +-
 .../hadoop/ozone/om/helpers/AclListBuilder.java    | 31 +++++---
 .../hadoop/ozone/om/helpers/OmBucketInfo.java      | 48 +++----------
 .../hadoop/ozone/om/helpers/OzoneAclUtil.java      | 18 ++++-
 .../ozone/om/helpers/TestAclListBuilder.java       | 84 +++++++++++-----------
 .../hadoop/ozone/om/helpers/TestOmBucketInfo.java  | 21 ------
 .../ozone/om/TestOzoneManagerHAWithAllRunning.java |  4 +-
 .../om/request/bucket/OMBucketCreateRequest.java   | 32 ++++-----
 .../om/request/bucket/acl/OMBucketAclRequest.java  | 13 ++--
 .../request/bucket/acl/OMBucketAddAclRequest.java  |  8 +--
 .../bucket/acl/OMBucketRemoveAclRequest.java       |  9 ++-
 .../request/bucket/acl/OMBucketSetAclRequest.java  | 10 +--
 .../apache/hadoop/ozone/om/request/util/AclOp.java | 30 ++++++++
 .../om/request/volume/acl/OMVolumeAclRequest.java  | 13 +---
 .../request/volume/acl/OMVolumeAddAclRequest.java  |  1 +
 .../volume/acl/OMVolumeRemoveAclRequest.java       |  1 +
 .../request/volume/acl/OMVolumeSetAclRequest.java  |  1 +
 .../apache/hadoop/ozone/om/TestKeyManagerUnit.java |  1 -
 .../ozone/om/response/TestCleanupTableInfo.java    |  2 -
 .../ozone/security/acl/OzoneNativeAclTestUtil.java | 14 ++--
 20 files changed, 165 insertions(+), 178 deletions(-)

diff --git 
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
 
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
index 254f686eb24..5fce2b83fd5 100644
--- 
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
+++ 
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
@@ -658,7 +658,7 @@ public void createBucket(
         .setOwner(owner);
 
     if (bucketArgs.getAcls() != null) {
-      builder.setAcls(bucketArgs.getAcls());
+      builder.acls().addAll(bucketArgs.getAcls());
     }
 
     // Link bucket default acl
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/AclListBuilder.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/AclListBuilder.java
index 436885a83a7..ae2ff885762 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/AclListBuilder.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/AclListBuilder.java
@@ -59,31 +59,39 @@ public ImmutableList<OzoneAcl> build() {
     return changed ? ImmutableList.copyOf(updatedList) : originalList;
   }
 
-  public void add(@Nonnull OzoneAcl acl) {
+  public boolean add(@Nonnull OzoneAcl acl) {
     Objects.requireNonNull(acl, "acl == null");
     ensureInitialized();
-    changed |= OzoneAclUtil.addAcl(updatedList, acl);
+    boolean added = OzoneAclUtil.addAcl(updatedList, acl);
+    changed |= added;
+    return added;
   }
 
-  public void addAll(@Nullable List<OzoneAcl> newAcls) {
+  public boolean addAll(@Nullable List<OzoneAcl> newAcls) {
     if (newAcls == null || newAcls.isEmpty()) {
-      return;
+      return false;
     }
     ensureInitialized();
-    changed |= OzoneAclUtil.addAllAcl(updatedList, newAcls);
+    boolean added = OzoneAclUtil.addAllAcl(updatedList, newAcls);
+    changed |= added;
+    return added;
   }
 
   /** Set the list being built to {@code acls}.  For further mutations to 
work, it must be modifiable. */
-  public void set(@Nonnull List<OzoneAcl> acls) {
+  public boolean set(@Nonnull List<OzoneAcl> acls) {
     Objects.requireNonNull(acls, "acls == null");
-    changed |= !acls.equals(updatedList != null ? updatedList : originalList);
+    boolean set = !acls.equals(updatedList != null ? updatedList : 
originalList);
+    changed |= set;
     updatedList = acls;
+    return set;
   }
 
-  public void remove(@Nonnull OzoneAcl acl) {
+  public boolean remove(@Nonnull OzoneAcl acl) {
     Objects.requireNonNull(acl, "acl == null");
     ensureInitialized();
-    changed |= OzoneAclUtil.removeAcl(updatedList, acl);
+    boolean removed = OzoneAclUtil.removeAcl(updatedList, acl);
+    changed |= removed;
+    return removed;
   }
 
   private void ensureInitialized() {
@@ -91,4 +99,9 @@ private void ensureInitialized() {
       updatedList = new ArrayList<>(originalList);
     }
   }
+
+  @Override
+  public String toString() {
+    return build().toString();
+  }
 }
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
index 8b91b55859d..b8d8f409894 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
@@ -18,12 +18,10 @@
 package org.apache.hadoop.ozone.om.helpers;
 
 import com.google.common.collect.ImmutableList;
-import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.stream.Collectors;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.protocol.StorageType;
@@ -56,9 +54,9 @@ public final class OmBucketInfo extends WithObjectID 
implements Auditable, CopyO
    */
   private final String bucketName;
   /**
-   * ACL Information (mutable).
+   * ACL Information.
    */
-  private final CopyOnWriteArrayList<OzoneAcl> acls;
+  private final ImmutableList<OzoneAcl> acls;
   /**
    * Bucket Version flag.
    */
@@ -113,7 +111,7 @@ private OmBucketInfo(Builder b) {
     super(b);
     this.volumeName = b.volumeName;
     this.bucketName = b.bucketName;
-    this.acls = new CopyOnWriteArrayList<>(b.acls);
+    this.acls = b.acls.build();
     this.isVersionEnabled = b.isVersionEnabled;
     this.storageType = b.storageType;
     this.creationTime = b.creationTime;
@@ -157,36 +155,7 @@ public String getBucketName() {
    * @return {@literal List<OzoneAcl>}
    */
   public List<OzoneAcl> getAcls() {
-    return ImmutableList.copyOf(acls);
-  }
-
-  /**
-   * Add an ozoneAcl to list of existing Acl set.
-   * @param ozoneAcl
-   * @return true - if successfully added, false if not added or acl is
-   * already existing in the acl list.
-   */
-  public boolean addAcl(OzoneAcl ozoneAcl) {
-    return OzoneAclUtil.addAcl(acls, ozoneAcl);
-  }
-
-  /**
-   * Remove acl from existing acl list.
-   * @param ozoneAcl
-   * @return true - if successfully removed, false if not able to remove due
-   * to that acl is not in the existing acl list.
-   */
-  public boolean removeAcl(OzoneAcl ozoneAcl) {
-    return OzoneAclUtil.removeAcl(acls, ozoneAcl);
-  }
-
-  /**
-   * Reset the existing acl list.
-   * @param ozoneAcls
-   * @return true - if successfully able to reset.
-   */
-  public boolean setAcls(List<OzoneAcl> ozoneAcls) {
-    return OzoneAclUtil.setAcl(acls, ozoneAcls);
+    return acls;
   }
 
   /**
@@ -411,7 +380,6 @@ public Builder toBuilder() {
         .setBucketEncryptionKey(bekInfo)
         .setSourceVolume(sourceVolume)
         .setSourceBucket(sourceBucket)
-        .setAcls(acls)
         .setUsedBytes(usedBytes)
         .setUsedNamespace(usedNamespace)
         .setQuotaInBytes(quotaInBytes)
@@ -429,7 +397,7 @@ public Builder toBuilder() {
   public static class Builder extends WithObjectID.Builder<OmBucketInfo> {
     private String volumeName;
     private String bucketName;
-    private final List<OzoneAcl> acls = new ArrayList<>();
+    private final AclListBuilder acls;
     private boolean isVersionEnabled;
     private StorageType storageType = StorageType.DISK;
     private long creationTime;
@@ -448,10 +416,12 @@ public static class Builder extends 
WithObjectID.Builder<OmBucketInfo> {
     private long snapshotUsedNamespace;
 
     public Builder() {
+      acls = AclListBuilder.empty();
     }
 
     private Builder(OmBucketInfo obj) {
       super(obj);
+      acls = AclListBuilder.of(obj.acls);
     }
 
     public Builder setVolumeName(String volume) {
@@ -466,12 +436,12 @@ public Builder setBucketName(String bucket) {
 
     public Builder setAcls(List<OzoneAcl> listOfAcls) {
       if (listOfAcls != null) {
-        this.acls.addAll(listOfAcls);
+        this.acls.set(listOfAcls);
       }
       return this;
     }
 
-    public List<OzoneAcl> getAcls() {
+    public AclListBuilder acls() {
       return acls;
     }
 
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OzoneAclUtil.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OzoneAclUtil.java
index e2b3cd04db2..3dae69f7110 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OzoneAclUtil.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OzoneAclUtil.java
@@ -26,6 +26,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import org.apache.hadoop.ozone.OzoneAcl;
@@ -150,6 +151,11 @@ public static boolean checkAclRights(List<OzoneAcl> acls,
     return false;
   }
 
+  public static boolean inheritDefaultAcls(AclListBuilder acls,
+      List<OzoneAcl> parentAcls, OzoneAcl.AclScope scope) {
+    return inheritDefaultAcls(acls::add, parentAcls, scope);
+  }
+
   /**
    * Helper function to inherit default ACL with given {@code scope} for child 
object.
    * @param acls child object ACL list
@@ -159,6 +165,11 @@ public static boolean checkAclRights(List<OzoneAcl> acls,
    */
   public static boolean inheritDefaultAcls(List<OzoneAcl> acls,
       List<OzoneAcl> parentAcls, OzoneAcl.AclScope scope) {
+    return inheritDefaultAcls(acl -> addAcl(acls, acl), parentAcls, scope);
+  }
+
+  private static boolean inheritDefaultAcls(Predicate<OzoneAcl> op,
+      List<OzoneAcl> parentAcls, OzoneAcl.AclScope scope) {
     if (parentAcls != null && !parentAcls.isEmpty()) {
       Stream<OzoneAcl> aclStream = parentAcls.stream()
           .filter(a -> a.getAclScope() == DEFAULT);
@@ -168,10 +179,11 @@ public static boolean inheritDefaultAcls(List<OzoneAcl> 
acls,
       }
 
       List<OzoneAcl> inheritedAcls = aclStream.collect(Collectors.toList());
-      if (!inheritedAcls.isEmpty()) {
-        inheritedAcls.forEach(acl -> addAcl(acls, acl));
-        return true;
+      boolean changed = false;
+      for (OzoneAcl acl : inheritedAcls) {
+        changed |= op.test(acl);
       }
+      return changed;
     }
 
     return false;
diff --git 
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestAclListBuilder.java
 
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestAclListBuilder.java
index d8f6cf41345..5e8ceff057b 100644
--- 
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestAclListBuilder.java
+++ 
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestAclListBuilder.java
@@ -18,7 +18,6 @@
 package org.apache.hadoop.ozone.om.helpers;
 
 import static java.util.Arrays.asList;
-import static java.util.Collections.emptyList;
 import static java.util.Collections.singletonList;
 import static org.apache.hadoop.ozone.OzoneAcl.AclScope.ACCESS;
 import static 
org.apache.hadoop.ozone.security.acl.IAccessAuthorizer.ACLIdentityType.USER;
@@ -29,7 +28,7 @@
 import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.function.Consumer;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 import org.apache.hadoop.ozone.OzoneAcl;
 import org.junit.jupiter.api.Test;
@@ -43,28 +42,21 @@ class TestAclListBuilder {
   private static final OzoneAcl ALICE_READ_WRITE = ALICE_READ.add(ALICE_WRITE);
   private static final OzoneAcl BOB_READ = OzoneAcl.of(USER, "bob", ACCESS, 
READ);
 
-  public static Stream<List<OzoneAcl>> initialLists() {
+  public static Stream<ImmutableList<OzoneAcl>> initialLists() {
     return Stream.of(
-        emptyList(),
-        singletonList(ALICE_READ),
-        asList(ALICE_READ, ALICE_WRITE)
+        ImmutableList.of(),
+        ImmutableList.of(ALICE_READ),
+        ImmutableList.of(ALICE_READ, ALICE_WRITE)
     );
   }
 
-  @Test
-  void returnsInitialListIfUnchanged() {
-    ImmutableList<OzoneAcl> list = ImmutableList.copyOf(asList(ALICE_READ, 
ALICE_WRITE));
-    AclListBuilder subject = AclListBuilder.of(list);
-
-    assertThat(subject.build())
-        .isSameAs(list);
-  }
-
   @Test
   void testAdd() {
     testAdd(subject -> {
-      subject.add(ALICE_WRITE);
-      subject.add(BOB_READ);
+      boolean added = false;
+      added |= subject.add(ALICE_WRITE);
+      added |= subject.add(BOB_READ);
+      return added;
     });
   }
 
@@ -74,13 +66,10 @@ void testAddAll() {
   }
 
   // op should be adding ALICE_WRITE and BOB_READ
-  private void testAdd(Consumer<AclListBuilder> op) {
+  private void testAdd(Predicate<AclListBuilder> op) {
     AclListBuilder subject = AclListBuilder.copyOf(singletonList(ALICE_READ));
 
-    op.accept(subject);
-
-    assertThat(subject.isChanged())
-        .isTrue();
+    assertChangedBy(subject, op);
     assertThat(subject.build())
         .contains(ALICE_READ_WRITE)
         .contains(BOB_READ)
@@ -89,28 +78,22 @@ private void testAdd(Consumer<AclListBuilder> op) {
 
   @ParameterizedTest
   @MethodSource("initialLists")
-  void testSetSame(List<OzoneAcl> initialList) {
-    AclListBuilder subject = AclListBuilder.copyOf(initialList);
-
-    subject.set(initialList);
+  void testSetSame(ImmutableList<OzoneAcl> initialList) {
+    AclListBuilder subject = AclListBuilder.of(initialList);
 
-    assertThat(subject.isChanged())
-        .isFalse();
+    assertUnchangedBy(subject, b -> b.set(initialList));
     assertThat(subject.build())
-        .isEqualTo(initialList);
+        .isSameAs(initialList);
   }
 
   @ParameterizedTest
   @MethodSource("initialLists")
-  void testSetEqual(List<OzoneAcl> initialList) {
-    AclListBuilder subject = AclListBuilder.copyOf(initialList);
-
-    subject.set(new ArrayList<>(initialList));
+  void testSetEqual(ImmutableList<OzoneAcl> initialList) {
+    AclListBuilder subject = AclListBuilder.of(initialList);
 
-    assertThat(subject.isChanged())
-        .isFalse();
+    assertUnchangedBy(subject, b -> b.set(new ArrayList<>(initialList)));
     assertThat(subject.build())
-        .isEqualTo(initialList);
+        .isSameAs(initialList);
   }
 
   @ParameterizedTest
@@ -120,10 +103,7 @@ void testSetDifferent(List<OzoneAcl> initialList) {
     List<OzoneAcl> differentList = new ArrayList<>(initialList);
     differentList.add(BOB_READ);
 
-    subject.set(differentList);
-
-    assertThat(subject.isChanged())
-        .isTrue();
+    assertChangedBy(subject, b -> b.set(differentList));
     assertThat(subject.build())
         .isEqualTo(differentList);
   }
@@ -132,12 +112,28 @@ void testSetDifferent(List<OzoneAcl> initialList) {
   void testRemove() {
     AclListBuilder subject = AclListBuilder.copyOf(asList(ALICE_READ_WRITE, 
BOB_READ));
 
-    subject.remove(ALICE_WRITE);
-    subject.remove(BOB_READ);
+    assertChangedBy(subject, b -> b.remove(ALICE_WRITE));
+    assertChangedBy(subject, b -> b.remove(BOB_READ));
+    assertThat(subject.build())
+        .isEqualTo(singletonList(ALICE_READ));
+  }
+
+  private static void assertUnchangedBy(AclListBuilder subject, 
Predicate<AclListBuilder> op) {
+    final boolean wasChanged = subject.isChanged();
+    assertThat(op.test(subject))
+        .isFalse();
+    assertThat(subject.isChanged())
+        .isEqualTo(wasChanged);
+  }
 
+  private static void assertChangedBy(AclListBuilder subject, 
Predicate<AclListBuilder> op) {
+    assertThat(op.test(subject)).isTrue();
+    assertThat(subject.isChanged()).isTrue();
+
+    // already made the same change
+    assertThat(op.test(subject)).isFalse();
     assertThat(subject.isChanged())
+        .describedAs("isChanged() should not be reset by no-op change")
         .isTrue();
-    assertThat(subject.build())
-        .isEqualTo(singletonList(ALICE_READ));
   }
 }
diff --git 
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
 
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
index 709c6fa17c4..857103a20c0 100644
--- 
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
+++ 
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
@@ -19,7 +19,6 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertNotSame;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -90,32 +89,12 @@ public void testClone() {
         "Expected " + omBucketInfo + " and " + cloneBucketInfo
             + " to be equal");
 
-    /* Reset acl & check not equal. */
-    omBucketInfo.setAcls(Collections.singletonList(OzoneAcl.of(
-        IAccessAuthorizer.ACLIdentityType.USER,
-        "newUser",
-        OzoneAcl.AclScope.ACCESS, IAccessAuthorizer.ACLType.WRITE_ACL
-    )));
-    assertNotEquals(
-        omBucketInfo.getAcls().get(0),
-        cloneBucketInfo.getAcls().get(0));
-
     /* Clone acl & check equal. */
     cloneBucketInfo = omBucketInfo.copyObject();
     assertEquals(omBucketInfo, cloneBucketInfo);
     assertEquals(
         omBucketInfo.getAcls().get(0),
         cloneBucketInfo.getAcls().get(0));
-
-    /* Remove acl & check. */
-    omBucketInfo.removeAcl(OzoneAcl.of(
-        IAccessAuthorizer.ACLIdentityType.USER,
-        "newUser",
-        OzoneAcl.AclScope.ACCESS, IAccessAuthorizer.ACLType.WRITE_ACL
-    ));
-    assertEquals(0, omBucketInfo.getAcls().size());
-    assertEquals(1, cloneBucketInfo.getAcls().size());
-
   }
 
   @Test
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
index ce4c778ddb6..5ba971d1967 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
@@ -743,8 +743,8 @@ void testLinkBucketRemoveBucketAcl() throws Exception {
     OzoneBucket linkedBucket = linkBucket(srcBucket);
     OzoneObj linkObj = buildBucketObj(linkedBucket);
     OzoneObj srcObj = buildBucketObj(srcBucket);
-    // As by default create will add some default acls in RpcClient.
-    List<OzoneAcl> acls = getObjectStore().getAcl(linkObj);
+    // choose from src's ACLs to avoid trying to remove 
OzoneAcl#LINK_BUCKET_DEFAULT_ACL
+    List<OzoneAcl> acls = getObjectStore().getAcl(srcObj);
     assertFalse(acls.isEmpty());
     // Remove an existing acl.
     boolean removeAcl = getObjectStore().removeAcl(linkObj, acls.get(0));
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
index 23cbac4704a..d66b5d37081 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketCreateRequest.java
@@ -26,9 +26,7 @@
 
 import java.io.IOException;
 import java.nio.file.InvalidPathException;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 import org.apache.hadoop.crypto.key.KeyProviderCryptoExtension;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
@@ -47,6 +45,7 @@
 import org.apache.hadoop.ozone.om.exceptions.OMException;
 import org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes;
 import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
+import org.apache.hadoop.ozone.om.helpers.AclListBuilder;
 import org.apache.hadoop.ozone.om.helpers.BucketLayout;
 import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
 import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
@@ -253,12 +252,13 @@ public OMClientResponse 
validateAndUpdateCache(OzoneManager ozoneManager, Execut
       }
 
       // Add objectID and updateID
-      omBucketInfo = omBucketInfo.toBuilder()
+      OmBucketInfo.Builder builder = omBucketInfo.toBuilder()
           .setObjectID(ozoneManager.getObjectIdFromTxId(transactionLogIndex))
-          .setUpdateID(transactionLogIndex)
-          .build();
+          .setUpdateID(transactionLogIndex);
+
+      addDefaultAcls(builder.acls(), omVolumeArgs, ozoneManager);
 
-      addDefaultAcls(omBucketInfo, omVolumeArgs, ozoneManager);
+      omBucketInfo = builder.build();
 
       // check namespace quota
       checkQuotaInNamespace(omVolumeArgs, 1L);
@@ -329,26 +329,20 @@ private boolean isECBucket(BucketInfo bucketInfo) {
   /**
    * Add default acls for bucket. These acls are inherited from volume
    * default acl list.
-   *
-   * @param omBucketInfo
-   * @param omVolumeArgs
    */
-  private void addDefaultAcls(OmBucketInfo omBucketInfo,
+  private void addDefaultAcls(AclListBuilder bucketAcls,
       OmVolumeArgs omVolumeArgs, OzoneManager ozoneManager) throws OMException 
{
-    List<OzoneAcl> acls = new ArrayList<>();
     // Add default acls
-    acls.addAll(getDefaultAclList(createUGIForApi(), 
ozoneManager.getConfig()));
-    if (omBucketInfo.getAcls() != null && 
!ozoneManager.getConfig().ignoreClientACLs()) {
-      // Add acls for bucket creator.
-      acls.addAll(omBucketInfo.getAcls());
+    List<OzoneAcl> defaultAclList = getDefaultAclList(createUGIForApi(), 
ozoneManager.getConfig());
+    if (ozoneManager.getConfig().ignoreClientACLs()) {
+      bucketAcls.set(defaultAclList);
+    } else {
+      bucketAcls.addAll(defaultAclList);
     }
 
     // Add default acls from volume.
     List<OzoneAcl> defaultVolumeAcls = omVolumeArgs.getDefaultAcls();
-    OzoneAclUtil.inheritDefaultAcls(acls, defaultVolumeAcls, ACCESS);
-    // Remove the duplicates
-    acls = acls.stream().distinct().collect(Collectors.toList());
-    omBucketInfo.setAcls(acls);
+    OzoneAclUtil.inheritDefaultAcls(bucketAcls, defaultVolumeAcls, ACCESS);
   }
 
   /**
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
index 8f6323aa86b..6faac1a24dc 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAclRequest.java
@@ -23,7 +23,6 @@
 import java.nio.file.InvalidPathException;
 import java.util.List;
 import java.util.Map;
-import java.util.function.BiPredicate;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
 import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
@@ -38,6 +37,7 @@
 import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
 import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
 import org.apache.hadoop.ozone.om.request.OMClientRequest;
+import org.apache.hadoop.ozone.om.request.util.AclOp;
 import org.apache.hadoop.ozone.om.request.util.ObjectParser;
 import org.apache.hadoop.ozone.om.response.OMClientResponse;
 import org.apache.hadoop.ozone.om.response.bucket.acl.OMBucketAclResponse;
@@ -52,10 +52,9 @@
  */
 public abstract class OMBucketAclRequest extends OMClientRequest {
 
-  private final BiPredicate<List<OzoneAcl>, OmBucketInfo> omBucketAclOp;
+  private final AclOp omBucketAclOp;
 
-  public OMBucketAclRequest(OMRequest omRequest,
-      BiPredicate<List<OzoneAcl>, OmBucketInfo> aclOp) {
+  public OMBucketAclRequest(OMRequest omRequest, AclOp aclOp) {
     super(omRequest);
     omBucketAclOp = aclOp;
   }
@@ -105,7 +104,9 @@ public OMClientResponse validateAndUpdateCache(OzoneManager 
ozoneManager, Execut
         throw new OMException(OMException.ResultCodes.BUCKET_NOT_FOUND);
       }
 
-      operationResult = omBucketAclOp.test(ozoneAcls, omBucketInfo);
+      OmBucketInfo.Builder builder = omBucketInfo.toBuilder();
+
+      operationResult = omBucketAclOp.test(ozoneAcls, builder.acls());
 
       if (operationResult) {
         // Update the modification time when updating ACLs of Bucket.
@@ -120,7 +121,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager 
ozoneManager, Execut
           modificationTime = getOmRequest().getRemoveAclRequest()
               .getModificationTime();
         }
-        omBucketInfo = omBucketInfo.toBuilder()
+        omBucketInfo = builder
             .setUpdateID(transactionLogIndex)
             .setModificationTime(modificationTime)
             .build();
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAddAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAddAclRequest.java
index dad5ef6efd3..1b3ce4e3f84 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAddAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketAddAclRequest.java
@@ -17,7 +17,8 @@
 
 package org.apache.hadoop.ozone.om.request.bucket.acl;
 
-import com.google.common.collect.Lists;
+import static java.util.Collections.singletonList;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -67,13 +68,12 @@ public OMRequest preExecute(OzoneManager ozoneManager) 
throws IOException {
   }
 
   public OMBucketAddAclRequest(OMRequest omRequest) {
-    super(omRequest, (acls, omBucketInfo) -> omBucketInfo.addAcl(acls.get(0)));
+    super(omRequest, (acls, builder) -> builder.add(acls.get(0)));
     OzoneManagerProtocolProtos.AddAclRequest addAclRequest =
         getOmRequest().getAddAclRequest();
     obj = OzoneObjInfo.fromProtobuf(addAclRequest.getObj());
     path = obj.getPath();
-    ozoneAcls = Lists.newArrayList(
-        OzoneAcl.fromProtobuf(addAclRequest.getAcl()));
+    ozoneAcls = singletonList(OzoneAcl.fromProtobuf(addAclRequest.getAcl()));
   }
 
   @Override
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketRemoveAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketRemoveAclRequest.java
index 6dd12babe24..13839ddb58a 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketRemoveAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketRemoveAclRequest.java
@@ -17,7 +17,8 @@
 
 package org.apache.hadoop.ozone.om.request.bucket.acl;
 
-import com.google.common.collect.Lists;
+import static java.util.Collections.singletonList;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -66,14 +67,12 @@ public OMRequest preExecute(OzoneManager ozoneManager) 
throws IOException {
   }
 
   public OMBucketRemoveAclRequest(OMRequest omRequest) {
-    super(omRequest,
-        (acls, omBucketInfo) -> omBucketInfo.removeAcl(acls.get(0)));
+    super(omRequest, (acls, builder) -> builder.remove(acls.get(0)));
     OzoneManagerProtocolProtos.RemoveAclRequest removeAclRequest =
         getOmRequest().getRemoveAclRequest();
     obj = OzoneObjInfo.fromProtobuf(removeAclRequest.getObj());
     path = obj.getPath();
-    ozoneAcls = Lists.newArrayList(
-        OzoneAcl.fromProtobuf(removeAclRequest.getAcl()));
+    ozoneAcls = 
singletonList(OzoneAcl.fromProtobuf(removeAclRequest.getAcl()));
   }
 
   @Override
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketSetAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketSetAclRequest.java
index 0b2b9102f4c..97dca83c197 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketSetAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/acl/OMBucketSetAclRequest.java
@@ -18,9 +18,9 @@
 package org.apache.hadoop.ozone.om.request.bucket.acl;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.hadoop.ozone.OzoneAcl;
 import org.apache.hadoop.ozone.audit.AuditLogger;
 import org.apache.hadoop.ozone.audit.OMAction;
@@ -66,14 +66,14 @@ public OMRequest preExecute(OzoneManager ozoneManager) 
throws IOException {
   }
 
   public OMBucketSetAclRequest(OMRequest omRequest) {
-    super(omRequest, (acls, omBucketInfo) -> omBucketInfo.setAcls(acls));
+    super(omRequest, (acls, builder) -> builder.set(acls));
     OzoneManagerProtocolProtos.SetAclRequest setAclRequest =
         getOmRequest().getSetAclRequest();
     obj = OzoneObjInfo.fromProtobuf(setAclRequest.getObj());
     path = obj.getPath();
-    ozoneAcls = new ArrayList<>();
-    setAclRequest.getAclList().forEach(aclInfo ->
-        ozoneAcls.add(OzoneAcl.fromProtobuf(aclInfo)));
+    ozoneAcls = setAclRequest.getAclList().stream()
+        .map(OzoneAcl::fromProtobuf)
+        .collect(Collectors.toList());
   }
 
   @Override
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/util/AclOp.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/util/AclOp.java
new file mode 100644
index 00000000000..034c38fbc77
--- /dev/null
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/util/AclOp.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.ozone.om.request.util;
+
+import java.util.List;
+import java.util.function.BiPredicate;
+import org.apache.hadoop.ozone.OzoneAcl;
+import org.apache.hadoop.ozone.om.helpers.AclListBuilder;
+
+/**
+ * ACL operation.
+ */
+public interface AclOp extends BiPredicate<List<OzoneAcl>, AclListBuilder> {
+  // just a shortcut to avoid having to repeat long list of generic parameters
+}
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
index 347fbefacd9..23b522ad77a 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAclRequest.java
@@ -23,7 +23,6 @@
 import java.nio.file.InvalidPathException;
 import java.util.List;
 import java.util.Map;
-import java.util.function.BiConsumer;
 import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
 import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
 import org.apache.hadoop.ozone.OzoneAcl;
@@ -33,8 +32,8 @@
 import org.apache.hadoop.ozone.om.OMMetrics;
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
-import org.apache.hadoop.ozone.om.helpers.AclListBuilder;
 import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
+import org.apache.hadoop.ozone.om.request.util.AclOp;
 import org.apache.hadoop.ozone.om.request.volume.OMVolumeRequest;
 import org.apache.hadoop.ozone.om.response.OMClientResponse;
 import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
@@ -85,8 +84,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager 
ozoneManager, Execut
       OmVolumeArgs.Builder builder = omVolumeArgs.toBuilder();
 
       // result is false upon add existing acl or remove non-existing acl
-      omVolumeAclOp.accept(ozoneAcls, builder.acls());
-      boolean applyAcl = builder.acls().isChanged();
+      boolean applyAcl = omVolumeAclOp.test(ozoneAcls, builder.acls());
 
       // Update only when
       if (applyAcl) {
@@ -186,11 +184,4 @@ abstract OMClientResponse onFailure(OMResponse.Builder 
omResponse,
   abstract void onComplete(Result result, Exception ex, long trxnLogIndex,
       AuditLogger auditLogger, Map<String, String> auditMap);
 
-  /**
-   * Volume ACL operation.
-   */
-  public interface AclOp extends
-      BiConsumer<List<OzoneAcl>, AclListBuilder> {
-    // just a shortcut to avoid having to repeat long list of generic 
parameters
-  }
 }
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAddAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAddAclRequest.java
index 95f42d8ae39..c0e87043ea3 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAddAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeAddAclRequest.java
@@ -29,6 +29,7 @@
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
 import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
+import org.apache.hadoop.ozone.om.request.util.AclOp;
 import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
 import org.apache.hadoop.ozone.om.response.OMClientResponse;
 import org.apache.hadoop.ozone.om.response.volume.OMVolumeAclOpResponse;
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeRemoveAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeRemoveAclRequest.java
index 92e5a529b9b..05f338957ee 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeRemoveAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeRemoveAclRequest.java
@@ -29,6 +29,7 @@
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
 import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
+import org.apache.hadoop.ozone.om.request.util.AclOp;
 import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
 import org.apache.hadoop.ozone.om.response.OMClientResponse;
 import org.apache.hadoop.ozone.om.response.volume.OMVolumeAclOpResponse;
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeSetAclRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeSetAclRequest.java
index ac4fcfe393d..6abffc2197f 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeSetAclRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/acl/OMVolumeSetAclRequest.java
@@ -28,6 +28,7 @@
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.execution.flowcontrol.ExecutionContext;
 import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
+import org.apache.hadoop.ozone.om.request.util.AclOp;
 import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
 import org.apache.hadoop.ozone.om.response.OMClientResponse;
 import org.apache.hadoop.ozone.om.response.volume.OMVolumeAclOpResponse;
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
index 8c0c936985f..9b184421207 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
@@ -437,7 +437,6 @@ private void createBucket(OMMetadataManager 
omMetadataManager,
         .setBucketName(bucket)
         .setStorageType(StorageType.DISK)
         .setIsVersionEnabled(false)
-        .setAcls(new ArrayList<>())
         .build();
     OMRequestTestUtils.addBucketToOM(omMetadataManager, omBucketInfo);
   }
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
index 3683110af1e..fd6e4206e0b 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
@@ -34,7 +34,6 @@
 import java.lang.reflect.Modifier;
 import java.nio.file.Path;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -303,7 +302,6 @@ private OmBucketInfo aBucketInfo() {
     return OmBucketInfo.newBuilder()
         .setVolumeName(TEST_VOLUME_NAME)
         .setBucketName(TEST_BUCKET_NAME)
-        .setAcls(Collections.emptyList())
         .setIsVersionEnabled(false)
         .setStorageType(StorageType.DEFAULT)
         .build();
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/security/acl/OzoneNativeAclTestUtil.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/security/acl/OzoneNativeAclTestUtil.java
index cf6ea4450c6..040871f58a8 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/security/acl/OzoneNativeAclTestUtil.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/security/acl/OzoneNativeAclTestUtil.java
@@ -56,9 +56,10 @@ public static void addBucketAcl(
       OzoneAcl ozoneAcl) throws IOException {
     final String bucketKey = metadataManager.getBucketKey(volume, bucket);
     final Table<String, OmBucketInfo> bucketTable = 
metadataManager.getBucketTable();
-    final OmBucketInfo omBucketInfo = bucketTable.get(bucketKey);
-
-    omBucketInfo.addAcl(ozoneAcl);
+    final OmBucketInfo omBucketInfo = bucketTable.get(bucketKey)
+        .toBuilder()
+        .addAcl(ozoneAcl)
+        .build();
 
     bucketTable.addCacheEntry(
         new CacheKey<>(bucketKey),
@@ -107,9 +108,10 @@ public static void setBucketAcl(
       List<OzoneAcl> ozoneAcls) throws IOException {
     final String bucketKey = metadataManager.getBucketKey(volume, bucket);
     final Table<String, OmBucketInfo> bucketTable = 
metadataManager.getBucketTable();
-    final OmBucketInfo omBucketInfo = bucketTable.get(bucketKey);
-
-    omBucketInfo.setAcls(ozoneAcls);
+    final OmBucketInfo omBucketInfo = bucketTable.get(bucketKey)
+        .toBuilder()
+        .setAcls(ozoneAcls)
+        .build();
 
     bucketTable.addCacheEntry(
         new CacheKey<>(bucketKey),


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


Reply via email to