This is an automated email from the ASF dual-hosted git repository.

sodonnell 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 b405f84621 HDDS-7542. Refactor DefaultReplicationConfig (#4005)
b405f84621 is described below

commit b405f84621dc18a56ab2598ac2a00aea129f5f2e
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Tue Jan 17 15:30:31 2023 +0100

    HDDS-7542. Refactor DefaultReplicationConfig (#4005)
---
 .../hdds/client/DefaultReplicationConfig.java      | 94 +++++++---------------
 .../apache/hadoop/ozone/client/OzoneBucket.java    |  7 +-
 .../hadoop/ozone/client/MockOmTransport.java       | 22 ++---
 .../hadoop/ozone/client/TestOzoneECClient.java     | 11 ++-
 .../hadoop/ozone/om/helpers/OmBucketArgs.java      |  4 +-
 .../hadoop/ozone/om/helpers/OmBucketInfo.java      | 18 +----
 .../apache/hadoop/ozone/protocolPB/OMPBHelper.java | 54 -------------
 .../hadoop/ozone/om/helpers/TestOmBucketArgs.java  |  2 +-
 .../hadoop/ozone/om/helpers/TestOmBucketInfo.java  | 11 ++-
 .../hadoop/fs/ozone/TestOzoneFSInputStream.java    |  3 +-
 .../hadoop/fs/ozone/TestOzoneFileChecksum.java     |  2 +-
 .../hadoop/fs/ozone/TestRootedOzoneFileSystem.java |  8 +-
 .../ozone/client/rpc/TestECKeyOutputStream.java    |  5 +-
 .../rpc/TestOzoneClientMultipartUploadWithFSO.java |  2 +-
 .../client/rpc/TestOzoneRpcClientWithRatis.java    |  3 +-
 .../ozone/container/TestECContainerRecovery.java   |  3 +-
 .../apache/hadoop/ozone/om/OzoneConfigUtil.java    | 25 ++----
 .../hadoop/ozone/om/TestOzoneConfigUtil.java       | 14 ++--
 .../bucket/TestOMBucketSetPropertyRequest.java     | 13 ++-
 19 files changed, 81 insertions(+), 220 deletions(-)

diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/DefaultReplicationConfig.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/DefaultReplicationConfig.java
index 18d0326bbd..3e3990b8b4 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/DefaultReplicationConfig.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/DefaultReplicationConfig.java
@@ -26,88 +26,53 @@ import java.util.Objects;
  */
 public class DefaultReplicationConfig {
 
-  private ReplicationType type;
-  private ReplicationFactor factor;
-  private ECReplicationConfig ecReplicationConfig;
-
-  public DefaultReplicationConfig(ReplicationType type,
-      ReplicationFactor factor) {
-    this.type = type;
-    this.factor = factor;
-    this.ecReplicationConfig = null;
-  }
+  private final ECReplicationConfig ecReplicationConfig;
+  private final ReplicationConfig replicationConfig;
 
   public DefaultReplicationConfig(ReplicationConfig replicationConfig) {
-    this.type =
-        ReplicationType.fromProto(replicationConfig.getReplicationType());
+    this.replicationConfig = replicationConfig;
     if (replicationConfig instanceof ECReplicationConfig) {
-      this.ecReplicationConfig = (ECReplicationConfig) replicationConfig;
+      ecReplicationConfig = (ECReplicationConfig) replicationConfig;
     } else {
-      this.factor =
-          ReplicationFactor.valueOf(replicationConfig.getRequiredNodes());
+      ecReplicationConfig = null;
     }
   }
 
-  public DefaultReplicationConfig(ReplicationType type,
-      ECReplicationConfig ecReplicationConfig) {
-    this.type = type;
-    this.factor = null;
-    this.ecReplicationConfig = ecReplicationConfig;
-  }
-
-  public DefaultReplicationConfig(ReplicationType type,
-      ReplicationFactor factor, ECReplicationConfig ecReplicationConfig) {
-    this.type = type;
-    this.factor = factor;
-    this.ecReplicationConfig = ecReplicationConfig;
-  }
-
-  public DefaultReplicationConfig(
-      org.apache.hadoop.hdds.protocol.proto.HddsProtos.DefaultReplicationConfig
-          defaultReplicationConfig) {
-    this.type = ReplicationType.fromProto(defaultReplicationConfig.getType());
-    if (defaultReplicationConfig.hasEcReplicationConfig()) {
-      this.ecReplicationConfig = new ECReplicationConfig(
-          defaultReplicationConfig.getEcReplicationConfig());
-    } else {
-      this.factor =
-          ReplicationFactor.fromProto(defaultReplicationConfig.getFactor());
+  public static DefaultReplicationConfig fromProto(
+      HddsProtos.DefaultReplicationConfig proto) {
+    if (proto == null) {
+      throw new IllegalArgumentException(
+          "Invalid argument: default replication config is null");
     }
+    ReplicationConfig config = proto.hasEcReplicationConfig()
+        ? new ECReplicationConfig(proto.getEcReplicationConfig())
+        : ReplicationConfig.fromProtoTypeAndFactor(
+            proto.getType(), proto.getFactor());
+    return new DefaultReplicationConfig(config);
   }
 
   public ReplicationType getType() {
-    return this.type;
-  }
-
-  public ReplicationFactor getFactor() {
-    return this.factor;
+    return ReplicationType.fromProto(replicationConfig.getReplicationType());
   }
 
   public DefaultReplicationConfig copy() {
-    return new DefaultReplicationConfig(this.type, this.factor,
-        this.ecReplicationConfig);
+    return new DefaultReplicationConfig(replicationConfig);
   }
 
-  public ECReplicationConfig getEcReplicationConfig() {
-    return this.ecReplicationConfig;
-  }
-
-  public int getRequiredNodes() {
-    if (this.type == ReplicationType.EC) {
-      return ecReplicationConfig.getRequiredNodes();
-    }
-    return this.factor.getValue();
+  public ReplicationConfig getReplicationConfig() {
+    return replicationConfig;
   }
 
   public HddsProtos.DefaultReplicationConfig toProto() {
     final HddsProtos.DefaultReplicationConfig.Builder builder =
         HddsProtos.DefaultReplicationConfig.newBuilder()
-            .setType(ReplicationType.toProto(this.type));
-    if (this.factor != null) {
-      builder.setFactor(ReplicationFactor.toProto(this.factor));
-    }
+            .setType(replicationConfig.getReplicationType());
     if (this.ecReplicationConfig != null) {
       builder.setEcReplicationConfig(this.ecReplicationConfig.toProto());
+    } else {
+      ReplicationFactor factor =
+          ReplicationFactor.valueOf(replicationConfig.getRequiredNodes());
+      builder.setFactor(factor.toProto());
     }
     return builder.build();
   }
@@ -121,14 +86,17 @@ public class DefaultReplicationConfig {
       return false;
     }
     DefaultReplicationConfig that = (DefaultReplicationConfig) o;
-    return Objects.equals(type, that.type) && Objects
-        .equals(factor, that.factor) && Objects
-        .equals(ecReplicationConfig, that.ecReplicationConfig);
+    return Objects.equals(replicationConfig, that.replicationConfig);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(type, factor, ecReplicationConfig);
+    return Objects.hash(replicationConfig);
+  }
+
+  @Override
+  public String toString() {
+    return replicationConfig.toString();
   }
 }
 
diff --git 
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
 
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
index b0a8e965c4..35b7465565 100644
--- 
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
+++ 
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
@@ -247,12 +247,7 @@ public class OzoneBucket extends WithMetadata {
         quotaInNamespace, bucketLayout, owner);
     this.bucketLayout = bucketLayout;
     if (defaultReplicationConfig != null) {
-      this.defaultReplication =
-          defaultReplicationConfig.getType() == ReplicationType.EC ?
-              defaultReplicationConfig.getEcReplicationConfig() :
-              ReplicationConfig
-                  .fromTypeAndFactor(defaultReplicationConfig.getType(),
-                      defaultReplicationConfig.getFactor());
+      defaultReplication = defaultReplicationConfig.getReplicationConfig();
     } else {
       // Bucket level replication is not configured by default.
       this.defaultReplication = null;
diff --git 
a/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/MockOmTransport.java
 
b/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/MockOmTransport.java
index 3eae9d1d7d..e91a71a856 100644
--- 
a/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/MockOmTransport.java
+++ 
b/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/MockOmTransport.java
@@ -18,10 +18,7 @@
 package org.apache.hadoop.ozone.client;
 
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.client.ECReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationFactor;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.hdds.scm.container.common.helpers.ExcludeList;
@@ -285,20 +282,11 @@ public class MockOmTransport implements OmTransport {
     BucketInfo bucketInfo = buckets.get(infoBucketRequest.getVolumeName())
         .get(infoBucketRequest.getBucketName());
     if (!bucketInfo.hasDefaultReplicationConfig()) {
-      final ReplicationConfig replicationConfig = ReplicationConfig
-          .getDefault(new OzoneConfiguration());
-
-      bucketInfo = bucketInfo.toBuilder().setDefaultReplicationConfig(
-          new DefaultReplicationConfig(
-              
ReplicationType.fromProto(replicationConfig.getReplicationType()),
-              replicationConfig
-                  .getReplicationType() != HddsProtos.ReplicationType.EC ?
-                  ReplicationFactor
-                      .valueOf(replicationConfig.getRequiredNodes()) :
-                  null, replicationConfig
-              .getReplicationType() == HddsProtos.ReplicationType.EC ?
-              (ECReplicationConfig) replicationConfig :
-              null).toProto()).build();
+      bucketInfo = bucketInfo.toBuilder()
+          .setDefaultReplicationConfig(new DefaultReplicationConfig(
+              ReplicationConfig.getDefault(new OzoneConfiguration())).toProto()
+          )
+          .build();
     }
     return InfoBucketResponse.newBuilder()
         .setBucketInfo(bucketInfo)
diff --git 
a/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestOzoneECClient.java
 
b/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestOzoneECClient.java
index 237ed34e5b..e86e70d70e 100644
--- 
a/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestOzoneECClient.java
+++ 
b/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestOzoneECClient.java
@@ -22,7 +22,6 @@ import org.apache.hadoop.conf.StorageUnit;
 import org.apache.hadoop.hdds.client.BlockID;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.ConfigurationSource;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
@@ -217,7 +216,7 @@ public class TestOzoneECClient {
   public void testCreateBucketWithDefaultReplicationConfig()
       throws IOException {
     final OzoneBucket bucket = writeIntoECKey(inputChunks, keyName,
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(dataBlocks, parityBlocks,
                 ECReplicationConfig.EcCodec.RS, chunkSize)));
 
@@ -286,7 +285,7 @@ public class TestOzoneECClient {
           String.valueOf(i % 9).getBytes(UTF_8)[0]);
     }
     final OzoneBucket bucket = writeIntoECKey(offset, numChunks * chunkSize,
-            inputData, keyName, new 
DefaultReplicationConfig(ReplicationType.EC,
+            inputData, keyName, new DefaultReplicationConfig(
                     new ECReplicationConfig(dataBlocks, parityBlocks,
                             ECReplicationConfig.EcCodec.RS, chunkSize)));
     OzoneKey key = bucket.getKey(keyName);
@@ -320,7 +319,7 @@ public class TestOzoneECClient {
         Byte.parseByte("1"));
 
     writeIntoECKey(firstSmallChunk, keyName,
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(dataBlocks, parityBlocks,
                 ECReplicationConfig.EcCodec.RS, chunkSize)));
     OzoneManagerProtocolProtos.KeyLocationList blockList =
@@ -447,7 +446,7 @@ public class TestOzoneECClient {
     Arrays.fill(inputData, (numFullChunks * chunkSize),
         ((numFullChunks * chunkSize)) + partialChunkLen - 1, (byte) 1);
     final OzoneBucket bucket = writeIntoECKey(inputData, keyName,
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(dataBlocks, parityBlocks,
                 ECReplicationConfig.EcCodec.RS, chunkSize)));
     OzoneKey key = bucket.getKey(keyName);
@@ -458,7 +457,7 @@ public class TestOzoneECClient {
   public void testCommitKeyInfo()
       throws IOException {
     final OzoneBucket bucket = writeIntoECKey(inputChunks, keyName,
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(dataBlocks, parityBlocks,
                 ECReplicationConfig.EcCodec.RS, chunkSize)));
 
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
index f5a4c1930c..f8c752aab2 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
@@ -344,9 +344,11 @@ public final class OmBucketArgs extends WithMetadata 
implements Auditable {
     // OmBucketArgs ctor already has more arguments, so setting the default
     // replication config separately.
     if (bucketArgs.hasDefaultReplicationConfig()) {
-      omBucketArgs.setDefaultReplicationConfig(new DefaultReplicationConfig(
+      omBucketArgs.setDefaultReplicationConfig(
+          DefaultReplicationConfig.fromProto(
               bucketArgs.getDefaultReplicationConfig()));
     }
+
     if (bucketArgs.hasQuotaInBytes()) {
       omBucketArgs.setQuotaInBytes(bucketArgs.getQuotaInBytes());
     }
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 846b71cc33..1b6b007ae7 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
@@ -28,12 +28,8 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.client.ECReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationFactor;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.protocol.StorageType;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.ozone.OzoneAcl;
 import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.audit.Auditable;
@@ -415,16 +411,7 @@ public final class OmBucketInfo extends WithObjectID 
implements Auditable {
   }
 
   public void setDefaultReplicationConfig(ReplicationConfig replicationConfig) 
{
-    this.defaultReplicationConfig = new DefaultReplicationConfig(
-        ReplicationType.fromProto(replicationConfig.getReplicationType()),
-        replicationConfig
-            .getReplicationType() == HddsProtos.ReplicationType.EC ?
-            null :
-            ReplicationFactor.valueOf(replicationConfig.getRequiredNodes()),
-        replicationConfig
-            .getReplicationType() == HddsProtos.ReplicationType.EC ?
-            ((ECReplicationConfig) replicationConfig) :
-            null);
+    defaultReplicationConfig = new DefaultReplicationConfig(replicationConfig);
   }
 
   /**
@@ -681,7 +668,8 @@ public final class OmBucketInfo extends WithObjectID 
implements Auditable {
     }
     if (bucketInfo.hasDefaultReplicationConfig()) {
       obib.setDefaultReplicationConfig(
-          OMPBHelper.convert(bucketInfo.getDefaultReplicationConfig()));
+          DefaultReplicationConfig.fromProto(
+              bucketInfo.getDefaultReplicationConfig()));
     }
     if (bucketInfo.hasObjectID()) {
       obib.setObjectID(bucketInfo.getObjectID());
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
index 78d3d46782..2b6a897cd4 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/protocolPB/OMPBHelper.java
@@ -27,11 +27,6 @@ import 
org.apache.hadoop.fs.MD5MD5CRC32CastagnoliFileChecksum;
 import org.apache.hadoop.fs.MD5MD5CRC32FileChecksum;
 import org.apache.hadoop.fs.MD5MD5CRC32GzipFileChecksum;
 import org.apache.hadoop.fs.Options;
-import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.client.ECReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationFactor;
-import org.apache.hadoop.hdds.client.ReplicationType;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.io.DataInputBuffer;
 import org.apache.hadoop.io.DataOutputBuffer;
 import org.apache.hadoop.io.MD5Hash;
@@ -169,55 +164,6 @@ public final class OMPBHelper {
         ezKeyVersionName);
   }
 
-  public static DefaultReplicationConfig convert(
-      HddsProtos.DefaultReplicationConfig defaultReplicationConfig) {
-    if (defaultReplicationConfig == null) {
-      throw new IllegalArgumentException(
-          "Invalid argument: default replication config" + " is null");
-    }
-
-    final ReplicationType type =
-        ReplicationType.fromProto(defaultReplicationConfig.getType());
-    DefaultReplicationConfig defaultReplicationConfigObj = null;
-    switch (type) {
-    case EC:
-      defaultReplicationConfigObj = new DefaultReplicationConfig(type,
-          new ECReplicationConfig(
-              defaultReplicationConfig.getEcReplicationConfig()));
-      break;
-    default:
-      final ReplicationFactor factor =
-          ReplicationFactor.fromProto(defaultReplicationConfig.getFactor());
-      defaultReplicationConfigObj = new DefaultReplicationConfig(type, factor);
-    }
-    return defaultReplicationConfigObj;
-  }
-
-  public static HddsProtos.DefaultReplicationConfig convert(
-      DefaultReplicationConfig defaultReplicationConfig) {
-    if (defaultReplicationConfig == null) {
-      throw new IllegalArgumentException(
-          "Invalid argument: default replication config" + " is null");
-    }
-
-    final HddsProtos.DefaultReplicationConfig.Builder builder =
-        HddsProtos.DefaultReplicationConfig.newBuilder();
-    builder.setType(ReplicationType.toProto(
-        defaultReplicationConfig.getType()));
-
-    if (defaultReplicationConfig.getFactor() != null) {
-      builder.setFactor(ReplicationFactor.toProto(
-          defaultReplicationConfig.getFactor()));
-    }
-
-    if (defaultReplicationConfig.getEcReplicationConfig() != null) {
-      builder.setEcReplicationConfig(
-          defaultReplicationConfig.getEcReplicationConfig().toProto());
-    }
-
-    return builder.build();
-  }
-
   public static FileChecksum convert(FileChecksumProto proto)
       throws IOException {
     if (proto == null) {
diff --git 
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketArgs.java
 
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketArgs.java
index 251033ac27..509714aaf0 100644
--- 
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketArgs.java
+++ 
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketArgs.java
@@ -79,7 +79,7 @@ public class TestOmBucketArgs {
             .setBucketName("bucket")
             .setVolumeName("volume")
             .setDefaultReplicationConfig(new DefaultReplicationConfig(
-                    EC, new ECReplicationConfig(3, 2)))
+                    new ECReplicationConfig(3, 2)))
             .build();
 
     argsFromProto = OmBucketArgs.getFromProtobuf(
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 aa64fd2278..17dc6eb9e7 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,6 +19,7 @@ package org.apache.hadoop.ozone.om.helpers;
 
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
+import org.apache.hadoop.hdds.client.ReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.protocol.StorageType;
 
@@ -145,7 +146,7 @@ public class TestOmBucketInfo {
             "defaultUser", IAccessAuthorizer.ACLType.WRITE_ACL,
             OzoneAcl.AclScope.ACCESS)))
         .setDefaultReplicationConfig(
-            new DefaultReplicationConfig(ReplicationType.EC,
+            new DefaultReplicationConfig(
                 new ECReplicationConfig(3, 2))).build();
     protobuf = omBucketInfo.getProtobuf();
 
@@ -161,10 +162,8 @@ public class TestOmBucketInfo {
     recovered = OmBucketInfo.getFromProtobuf(protobuf);
     Assert.assertEquals(ReplicationType.EC,
         recovered.getDefaultReplicationConfig().getType());
-    ECReplicationConfig config =
-        recovered.getDefaultReplicationConfig().getEcReplicationConfig();
-    Assert.assertNotNull(config);
-    Assert.assertEquals(3, config.getData());
-    Assert.assertEquals(2, config.getParity());
+    ReplicationConfig config =
+        recovered.getDefaultReplicationConfig().getReplicationConfig();
+    Assert.assertEquals(new ECReplicationConfig(3, 2), config);
   }
 }
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
index df699aff6e..46c14bd9de 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
@@ -34,7 +34,6 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.StorageType;
 import org.apache.hadoop.io.IOUtils;
@@ -115,7 +114,7 @@ public class TestOzoneFSInputStream {
     builder.setStorageType(StorageType.DISK);
     builder.setBucketLayout(BucketLayout.FILE_SYSTEM_OPTIMIZED);
     builder.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(3, 2, ECReplicationConfig.EcCodec.RS,
                 1024)));
     BucketArgs omBucketArgs = builder.build();
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
index 25d0529c78..67d3684e84 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
@@ -132,7 +132,7 @@ public class TestOzoneFileChecksum {
         .setStorageType(StorageType.DISK)
         .setBucketLayout(BucketLayout.LEGACY)
         .setDefaultReplicationConfig(
-            new DefaultReplicationConfig(ReplicationType.EC,
+            new DefaultReplicationConfig(
                 new ECReplicationConfig("RS-3-2-1024k")))
         .build();
 
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
index 9f34eb89ac..4aefd48fb2 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
@@ -39,8 +39,8 @@ import org.apache.hadoop.fs.permission.FsPermission;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
 import org.apache.hadoop.hdds.client.RatisReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationFactor;
 import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.client.StandaloneReplicationConfig;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.StorageType;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -2022,8 +2022,8 @@ public class TestRootedOzoneFileSystem {
     builder.setStorageType(StorageType.DISK);
     builder.setBucketLayout(BucketLayout.LEGACY);
     builder.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.STAND_ALONE,
-            ReplicationFactor.ONE));
+        new DefaultReplicationConfig(StandaloneReplicationConfig.getInstance(
+            HddsProtos.ReplicationFactor.ONE)));
     BucketArgs omBucketArgs = builder.build();
     String vol = UUID.randomUUID().toString();
     String buck = UUID.randomUUID().toString();
@@ -2053,7 +2053,7 @@ public class TestRootedOzoneFileSystem {
     builder.setStorageType(StorageType.DISK);
     builder.setBucketLayout(BucketLayout.LEGACY);
     builder.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig("RS-3-2-1024")));
     BucketArgs omBucketArgs = builder.build();
     String vol = UUID.randomUUID().toString();
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestECKeyOutputStream.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestECKeyOutputStream.java
index 068bdc7212..2766871be6 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestECKeyOutputStream.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestECKeyOutputStream.java
@@ -22,7 +22,6 @@ import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
 import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
@@ -169,7 +168,7 @@ public class TestECKeyOutputStream {
     OzoneVolume volume = objectStore.getVolume(volumeName);
     final BucketArgs.Builder bucketArgs = BucketArgs.newBuilder();
     bucketArgs.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(3, 2, ECReplicationConfig.EcCodec.RS,
                 chunkSize)));
 
@@ -366,7 +365,7 @@ public class TestECKeyOutputStream {
     OzoneVolume volume = objectStore.getVolume(volumeName);
     final BucketArgs.Builder bucketArgs = BucketArgs.newBuilder();
     bucketArgs.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(3, 2, ECReplicationConfig.EcCodec.RS,
                 chunkSize)));
 
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java
index d268024971..2a34d5c5bb 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java
@@ -330,7 +330,7 @@ public class TestOzoneClientMultipartUploadWithFSO {
       throws IOException {
     final BucketArgs.Builder bucketArgs = BucketArgs.newBuilder();
     bucketArgs.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(3, 2, ECReplicationConfig.EcCodec.RS,
                 1024)));
 
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientWithRatis.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientWithRatis.java
index ca26ca177c..c84f6f3141 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientWithRatis.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientWithRatis.java
@@ -244,7 +244,8 @@ public class TestOzoneRpcClientWithRatis extends 
TestOzoneRpcClientAbstract {
     final String bucketName = "buck-" + UUID.randomUUID();
     final BucketArgs bucketArgs = BucketArgs.newBuilder()
         .setDefaultReplicationConfig(
-            new DefaultReplicationConfig(ReplicationType.RATIS, THREE))
+            new DefaultReplicationConfig(ReplicationConfig.fromTypeAndFactor(
+                ReplicationType.RATIS, THREE)))
         .build();
     volume.createBucket(bucketName, bucketArgs);
     final OzoneBucket bucket = volume.getBucket(bucketName);
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestECContainerRecovery.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestECContainerRecovery.java
index 1f08d0e101..75b426fec3 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestECContainerRecovery.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/TestECContainerRecovery.java
@@ -20,7 +20,6 @@ import org.apache.hadoop.conf.StorageUnit;
 import org.apache.hadoop.hdds.HddsConfigKeys;
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -169,7 +168,7 @@ public class TestECContainerRecovery {
     OzoneVolume volume = objectStore.getVolume(volumeName);
     final BucketArgs.Builder bucketArgs = BucketArgs.newBuilder();
     bucketArgs.setDefaultReplicationConfig(
-        new DefaultReplicationConfig(ReplicationType.EC,
+        new DefaultReplicationConfig(
             new ECReplicationConfig(3, 2, ECReplicationConfig.EcCodec.RS,
                 chunkSize)));
 
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneConfigUtil.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneConfigUtil.java
index ab24303e9e..b73a3b7173 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneConfigUtil.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneConfigUtil.java
@@ -19,8 +19,6 @@ package org.apache.hadoop.ozone.om;
 
 import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationFactor;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.security.UserGroupInformation;
@@ -106,25 +104,12 @@ public final class OzoneConfigUtil {
       // Client passed the replication config, so let's use it.
       replicationConfig = ReplicationConfig
           .fromProto(clientType, clientFactor, clientECReplicationConfig);
-    } else {
+    } else if (bucketDefaultReplicationConfig != null) {
       // type is NONE, so, let's look for the bucket defaults.
-      if (bucketDefaultReplicationConfig != null) {
-        boolean hasECReplicationConfig = bucketDefaultReplicationConfig
-            .getType() == ReplicationType.EC && bucketDefaultReplicationConfig
-            .getEcReplicationConfig() != null;
-        // Since Bucket defaults are available, let's inherit
-        replicationConfig = ReplicationConfig.fromProto(
-            ReplicationType.toProto(bucketDefaultReplicationConfig.getType()),
-            ReplicationFactor
-                .toProto(bucketDefaultReplicationConfig.getFactor()),
-            hasECReplicationConfig ?
-                bucketDefaultReplicationConfig.getEcReplicationConfig()
-                    .toProto() :
-                null);
-      } else {
-        // if bucket defaults also not available, then use server defaults.
-        replicationConfig = omDefaultReplicationConfig;
-      }
+      replicationConfig = 
bucketDefaultReplicationConfig.getReplicationConfig();
+    } else {
+      // if bucket defaults also not available, then use server defaults.
+      replicationConfig = omDefaultReplicationConfig;
     }
     return replicationConfig;
   }
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOzoneConfigUtil.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOzoneConfigUtil.java
index 697041cc58..48a6f69676 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOzoneConfigUtil.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOzoneConfigUtil.java
@@ -20,8 +20,6 @@ import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
 import org.apache.hadoop.hdds.client.ECReplicationConfig;
 import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.client.ReplicationFactor;
-import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
@@ -55,7 +53,7 @@ public class TestOzoneConfigUtil {
         .resolveReplicationConfigPreference(noneType, zeroFactor,
             clientECReplicationConfig, bucketECConfig, 
ratis3ReplicationConfig);
     // Client has no preference, so we should bucket defaults as we passed.
-    Assert.assertEquals(bucketECConfig.getEcReplicationConfig(),
+    Assert.assertEquals(bucketECConfig.getReplicationConfig(),
         replicationConfig);
   }
 
@@ -92,19 +90,17 @@ public class TestOzoneConfigUtil {
    */
   @Test
   public void testResolveClientSideRepConfigWhenBucketHasEC3() {
+    ReplicationConfig ratisReplicationConfig =
+        RatisReplicationConfig.getInstance(HddsProtos.ReplicationFactor.THREE);
     DefaultReplicationConfig ratisBucketDefaults =
-        new DefaultReplicationConfig(ReplicationType.RATIS,
-            ReplicationFactor.THREE);
+        new DefaultReplicationConfig(ratisReplicationConfig);
     ReplicationConfig replicationConfig = OzoneConfigUtil
         .resolveReplicationConfigPreference(noneType, zeroFactor,
             clientECReplicationConfig, ratisBucketDefaults,
             ratis3ReplicationConfig);
     // Client has no preference of type and bucket has ratis defaults, so it
     // should return ratis.
-    Assert.assertEquals(ratisBucketDefaults.getType().name(),
-        replicationConfig.getReplicationType().name());
-    Assert.assertEquals(ratisBucketDefaults.getFactor(),
-        ReplicationFactor.valueOf(replicationConfig.getRequiredNodes()));
+    Assert.assertEquals(ratisReplicationConfig, replicationConfig);
   }
 
   @Test
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
index 2d96aa9571..a96b92a7b4 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
@@ -261,7 +261,7 @@ public class TestOMBucketSetPropertyRequest extends 
TestBucketRequest {
 
     BucketArgs bucketArgs = OmBucketArgs.newBuilder()
         .setDefaultReplicationConfig(new DefaultReplicationConfig(
-            EC, new ECReplicationConfig(3, 2)))
+            new ECReplicationConfig(3, 2)))
         .setBucketName(bucketName)
         .setVolumeName(volumeName)
         .setIsVersionEnabled(true)
@@ -309,7 +309,7 @@ public class TestOMBucketSetPropertyRequest extends 
TestBucketRequest {
 
     BucketArgs bucketArgs = OmBucketArgs.newBuilder()
             .setDefaultReplicationConfig(new DefaultReplicationConfig(
-                    EC, new ECReplicationConfig(3, 2)))
+                    new ECReplicationConfig(3, 2)))
             .setBucketName(bucketName)
             .setVolumeName(volumeName)
             .setIsVersionEnabled(true)
@@ -493,7 +493,7 @@ public class TestOMBucketSetPropertyRequest extends 
TestBucketRequest {
             .setVolumeName(volumeName2)
             .setBucketName(bucketName2)
             .setDefaultReplicationConfig(new DefaultReplicationConfig(
-                    EC, new ECReplicationConfig(3, 2)));
+                    new ECReplicationConfig(3, 2)));
 
     OMRequestTestUtils.addVolumeToDB(volumeName2, omMetadataManager);
     OMRequestTestUtils.addBucketToDB(omMetadataManager, bucketInfo);
@@ -522,11 +522,8 @@ public class TestOMBucketSetPropertyRequest extends 
TestBucketRequest {
     Assert.assertEquals(EC,
             dbBucketInfoAfter.getDefaultReplicationConfig().getType());
     Assert.assertEquals(
-            dbBucketInfoBefore.getDefaultReplicationConfig().getType(),
-            dbBucketInfoAfter.getDefaultReplicationConfig().getType());
-    Assert.assertEquals(
-            dbBucketInfoBefore.getDefaultReplicationConfig().getFactor(),
-            dbBucketInfoAfter.getDefaultReplicationConfig().getFactor());
+            dbBucketInfoBefore.getDefaultReplicationConfig(),
+            dbBucketInfoAfter.getDefaultReplicationConfig());
     Assert.assertEquals(20 * GB,
             dbBucketInfoAfter.getQuotaInBytes());
     Assert.assertEquals(1000L,


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


Reply via email to