From f1bada1feb5aad0b5982f30cff1433c884b03a2f Mon Sep 17 00:00:00 2001 From: saketa Date: Tue, 29 Nov 2022 14:59:05 -0800 Subject: [PATCH 1/5] HDDS-7526: Avoid overwriting replication config on existing bucket when quota is set --- .../hadoop/ozone/om/helpers/OmBucketArgs.java | 24 ++++- .../ozone/om/helpers/TestOmBucketArgs.java | 35 +++++++ .../bucket/OMBucketSetPropertyRequest.java | 6 ++ .../TestOMBucketSetPropertyRequest.java | 92 ++++++++++++++++++- 4 files changed, 148 insertions(+), 9 deletions(-) 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 b038f894adc2..5ce7f3a14fee 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 @@ -55,6 +55,7 @@ public final class OmBucketArgs extends WithMetadata implements Auditable { private boolean quotaInBytesSet = false; private boolean quotaInNamespaceSet = false; private DefaultReplicationConfig defaultReplicationConfig = null; + private boolean defaultReplicationConfigSet = false; /** * Bucket Owner Name. */ @@ -150,11 +151,19 @@ public DefaultReplicationConfig getDefaultReplicationConfig() { return defaultReplicationConfig; } + /** + * Returns true if defaultReplicationConfig has been set to a non default value. + */ + public boolean hasDefaultReplicationConfig() { + return defaultReplicationConfigSet; + } + /** * Sets the Bucket default replication config. */ private void setDefaultReplicationConfig( DefaultReplicationConfig defaultReplicationConfig) { + this.defaultReplicationConfigSet = true; this.defaultReplicationConfig = defaultReplicationConfig; } @@ -217,6 +226,7 @@ public static class Builder { private boolean quotaInNamespaceSet = false; private long quotaInNamespace; private DefaultReplicationConfig defaultReplicationConfig; + private boolean defaultReplicationConfigSet = false; private String ownerName; /** * Constructs a builder. @@ -265,6 +275,7 @@ public Builder setQuotaInNamespace(long quota) { public Builder setDefaultReplicationConfig( DefaultReplicationConfig defaultRepConfig) { + this.defaultReplicationConfigSet = true; this.defaultReplicationConfig = defaultRepConfig; return this; } @@ -284,7 +295,9 @@ public OmBucketArgs build() { OmBucketArgs omBucketArgs = new OmBucketArgs(volumeName, bucketName, isVersionEnabled, storageType, metadata, ownerName); - omBucketArgs.setDefaultReplicationConfig(defaultReplicationConfig); + if(defaultReplicationConfigSet) { + omBucketArgs.setDefaultReplicationConfig(defaultReplicationConfig); + } if (quotaInBytesSet) { omBucketArgs.setQuotaInBytes(quotaInBytes); } @@ -316,7 +329,7 @@ public BucketArgs getProtobuf() { quotaInNamespace > 0 || quotaInNamespace == OzoneConsts.QUOTA_RESET)) { builder.setQuotaInNamespace(quotaInNamespace); } - if (defaultReplicationConfig != null) { + if (defaultReplicationConfigSet && defaultReplicationConfig != null) { builder.setDefaultReplicationConfig(defaultReplicationConfig.toProto()); } if (ownerName != null) { @@ -343,9 +356,10 @@ public static OmBucketArgs getFromProtobuf(BucketArgs bucketArgs) { bucketArgs.getOwnerName() : null); // OmBucketArgs ctor already has more arguments, so setting the default // replication config separately. - omBucketArgs.setDefaultReplicationConfig( - new DefaultReplicationConfig(bucketArgs.getDefaultReplicationConfig())); - + if (bucketArgs.hasDefaultReplicationConfig()) { + omBucketArgs.setDefaultReplicationConfig( + new DefaultReplicationConfig(bucketArgs.getDefaultReplicationConfig())); + } if (bucketArgs.hasQuotaInBytes()) { omBucketArgs.setQuotaInBytes(bucketArgs.getQuotaInBytes()); } 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 2e843f84b2df..f8d014d24619 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 @@ -18,9 +18,13 @@ package org.apache.hadoop.ozone.om.helpers; +import org.apache.hadoop.hdds.client.DefaultReplicationConfig; +import org.apache.hadoop.hdds.client.ECReplicationConfig; import org.junit.Assert; import org.junit.Test; +import static org.apache.hadoop.hdds.client.ReplicationType.EC; + /** * Tests for the OmBucketArgs class. */ @@ -58,4 +62,35 @@ public void testQuotaIsSetFlagsAreCorrectlySet() { Assert.assertEquals(true, argsFromProto.hasQuotaInBytes()); Assert.assertEquals(true, argsFromProto.hasQuotaInNamespace()); } + + @Test + public void testDefaultReplicationConfigIsSetCorrectly() { + OmBucketArgs bucketArgs = OmBucketArgs.newBuilder() + .setBucketName("bucket") + .setVolumeName("volume") + .build(); + + Assert.assertEquals(false, bucketArgs.hasDefaultReplicationConfig()); + + OmBucketArgs argsFromProto = OmBucketArgs.getFromProtobuf( + bucketArgs.getProtobuf()); + + Assert.assertEquals(false, argsFromProto.hasDefaultReplicationConfig()); + Assert.assertEquals(null, argsFromProto.getDefaultReplicationConfig()); + + bucketArgs = OmBucketArgs.newBuilder() + .setBucketName("bucket") + .setVolumeName("volume") + .setDefaultReplicationConfig(new DefaultReplicationConfig( + EC, new ECReplicationConfig(3, 2))) + .build(); + + Assert.assertEquals(true, bucketArgs.hasDefaultReplicationConfig()); + + argsFromProto = OmBucketArgs.getFromProtobuf( + bucketArgs.getProtobuf()); + + Assert.assertEquals(true, argsFromProto.hasDefaultReplicationConfig()); + Assert.assertEquals(EC, argsFromProto.getDefaultReplicationConfig().getType()); + } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java index f3fd3fc71e02..8a7ab742724f 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java @@ -202,6 +202,12 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, if (defaultReplicationConfig != null) { // Resetting the default replication config. bucketInfoBuilder.setDefaultReplicationConfig(defaultReplicationConfig); + } else { + // Retaining existing default replication config + if (dbBucketInfo.getDefaultReplicationConfig() != null ) { + bucketInfoBuilder.setDefaultReplicationConfig( + dbBucketInfo.getDefaultReplicationConfig()); + } } bucketInfoBuilder.setCreationTime(dbBucketInfo.getCreationTime()); 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 95d05c4ace51..75755595ce89 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 @@ -23,12 +23,9 @@ import org.apache.hadoop.hdds.client.DefaultReplicationConfig; import org.apache.hadoop.hdds.client.ECReplicationConfig; -import org.apache.hadoop.ozone.om.helpers.BucketEncryptionKeyInfo; +import org.apache.hadoop.ozone.om.helpers.*; import org.apache.hadoop.hdds.utils.db.cache.CacheKey; import org.apache.hadoop.hdds.utils.db.cache.CacheValue; -import org.apache.hadoop.ozone.om.helpers.OmBucketArgs; -import org.apache.hadoop.ozone.om.helpers.BucketLayout; -import org.apache.hadoop.ozone.om.helpers.OmBucketInfo; import org.apache.hadoop.ozone.om.request.OMRequestTestUtils; import org.apache.ozone.test.GenericTestUtils; @@ -444,4 +441,91 @@ public void testValidateAndUpdateCacheWithQuotaNamespaceUsed() contains("Cannot update bucket quota. NamespaceQuota requested " + "is less than used namespaceQuota")); } + + @Test + public void testSettingQuotaRetainsReplication() throws Exception { + String volumeName1 = UUID.randomUUID().toString(); + String bucketName1 = UUID.randomUUID().toString(); + String volumeName2 = UUID.randomUUID().toString(); + String bucketName2 = UUID.randomUUID().toString(); + + /* Bucket with default replication */ + OMRequestTestUtils.addVolumeAndBucketToDB( + volumeName1,bucketName1,omMetadataManager); + + String bucketKey = omMetadataManager + .getBucketKey(volumeName1, bucketName1); + + OmBucketInfo dbBucketInfoBefore = + omMetadataManager.getBucketTable().get(bucketKey); + + /* Setting quota on a bucket with default replication */ + OMRequest omRequest = createSetBucketPropertyRequest(volumeName1, + bucketName1, true, 20 * GB); + + OMBucketSetPropertyRequest omBucketSetPropertyRequest = + new OMBucketSetPropertyRequest(omRequest); + + OMClientResponse omClientResponse = omBucketSetPropertyRequest + .validateAndUpdateCache(ozoneManager, 1, + ozoneManagerDoubleBufferHelper); + + Assert.assertEquals(true, omClientResponse.getOMResponse().getSuccess()); + + OmBucketInfo dbBucketInfoAfter = + omMetadataManager.getBucketTable().get(bucketKey); + + Assert.assertEquals(null,dbBucketInfoAfter.getDefaultReplicationConfig()); + Assert.assertEquals( + dbBucketInfoBefore.getDefaultReplicationConfig(), + dbBucketInfoAfter.getDefaultReplicationConfig()); + Assert.assertEquals(20 * GB, + dbBucketInfoAfter.getQuotaInBytes()); + Assert.assertEquals(1000L, + dbBucketInfoAfter.getQuotaInNamespace()); + + /* Bucket with EC replication */ + OmBucketInfo.Builder bucketInfo = new OmBucketInfo.Builder() + .setVolumeName(volumeName2) + .setBucketName(bucketName2) + .setDefaultReplicationConfig(new DefaultReplicationConfig( + EC, new ECReplicationConfig(3, 2))); + + OMRequestTestUtils.addVolumeToDB(volumeName2,omMetadataManager); + OMRequestTestUtils.addBucketToDB(omMetadataManager, bucketInfo); + + bucketKey = omMetadataManager + .getBucketKey(volumeName2, bucketName2); + dbBucketInfoBefore = + omMetadataManager.getBucketTable().get(bucketKey); + + /* Setting quota on a bucket with non-default EC replication */ + omRequest = createSetBucketPropertyRequest(volumeName2, + bucketName2, true, 20 * GB); + + omBucketSetPropertyRequest = + new OMBucketSetPropertyRequest(omRequest); + + omClientResponse = omBucketSetPropertyRequest + .validateAndUpdateCache(ozoneManager, 1, + ozoneManagerDoubleBufferHelper); + + Assert.assertEquals(true, omClientResponse.getOMResponse().getSuccess()); + + dbBucketInfoAfter = + omMetadataManager.getBucketTable().get(bucketKey); + + Assert.assertEquals(EC, + dbBucketInfoAfter.getDefaultReplicationConfig().getType()); + Assert.assertEquals( + dbBucketInfoBefore.getDefaultReplicationConfig().getType(), + dbBucketInfoAfter.getDefaultReplicationConfig().getType()); + Assert.assertEquals( + dbBucketInfoBefore.getDefaultReplicationConfig().getFactor(), + dbBucketInfoAfter.getDefaultReplicationConfig().getFactor()); + Assert.assertEquals(20 * GB, + dbBucketInfoAfter.getQuotaInBytes()); + Assert.assertEquals(1000L, + dbBucketInfoAfter.getQuotaInNamespace()); + } } From 0cbf5adee70ad00f1efe69c14088ab9b79ef4ee0 Mon Sep 17 00:00:00 2001 From: saketa Date: Tue, 29 Nov 2022 16:31:22 -0800 Subject: [PATCH 2/5] HDDS-7526. Avoid overwriting replication config on existing bucket when quota is set. Fixed checkstyle error. --- .../om/request/bucket/TestOMBucketSetPropertyRequest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 75755595ce89..823d4c947c8e 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 @@ -23,9 +23,12 @@ import org.apache.hadoop.hdds.client.DefaultReplicationConfig; import org.apache.hadoop.hdds.client.ECReplicationConfig; -import org.apache.hadoop.ozone.om.helpers.*; +import org.apache.hadoop.ozone.om.helpers.BucketEncryptionKeyInfo; import org.apache.hadoop.hdds.utils.db.cache.CacheKey; import org.apache.hadoop.hdds.utils.db.cache.CacheValue; +import org.apache.hadoop.ozone.om.helpers.OmBucketArgs; +import org.apache.hadoop.ozone.om.helpers.BucketLayout; +import org.apache.hadoop.ozone.om.helpers.OmBucketInfo; import org.apache.hadoop.ozone.om.request.OMRequestTestUtils; import org.apache.ozone.test.GenericTestUtils; From 91d8fde52e2e9e55c6d8316905273c1657c9bea5 Mon Sep 17 00:00:00 2001 From: saketa Date: Tue, 29 Nov 2022 16:31:22 -0800 Subject: [PATCH 3/5] HDDS-7526. Avoid overwriting replication config on existing bucket when quota is set. Fixed checkstyle error. --- .../org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java | 9 +++++---- .../apache/hadoop/ozone/om/helpers/TestOmBucketArgs.java | 3 ++- .../om/request/bucket/OMBucketSetPropertyRequest.java | 2 +- .../request/bucket/TestOMBucketSetPropertyRequest.java | 7 ++++--- 4 files changed, 12 insertions(+), 9 deletions(-) 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 5ce7f3a14fee..c05b1ffa15d4 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 @@ -152,7 +152,8 @@ public DefaultReplicationConfig getDefaultReplicationConfig() { } /** - * Returns true if defaultReplicationConfig has been set to a non default value. + * Returns true if defaultReplicationConfig has been set + * to a non default value. */ public boolean hasDefaultReplicationConfig() { return defaultReplicationConfigSet; @@ -295,7 +296,7 @@ public OmBucketArgs build() { OmBucketArgs omBucketArgs = new OmBucketArgs(volumeName, bucketName, isVersionEnabled, storageType, metadata, ownerName); - if(defaultReplicationConfigSet) { + if (defaultReplicationConfigSet) { omBucketArgs.setDefaultReplicationConfig(defaultReplicationConfig); } if (quotaInBytesSet) { @@ -357,8 +358,8 @@ public static OmBucketArgs getFromProtobuf(BucketArgs bucketArgs) { // OmBucketArgs ctor already has more arguments, so setting the default // replication config separately. if (bucketArgs.hasDefaultReplicationConfig()) { - omBucketArgs.setDefaultReplicationConfig( - new DefaultReplicationConfig(bucketArgs.getDefaultReplicationConfig())); + omBucketArgs.setDefaultReplicationConfig(new DefaultReplicationConfig( + bucketArgs.getDefaultReplicationConfig())); } if (bucketArgs.hasQuotaInBytes()) { omBucketArgs.setQuotaInBytes(bucketArgs.getQuotaInBytes()); 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 f8d014d24619..e402ce70256f 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 @@ -91,6 +91,7 @@ EC, new ECReplicationConfig(3, 2))) bucketArgs.getProtobuf()); Assert.assertEquals(true, argsFromProto.hasDefaultReplicationConfig()); - Assert.assertEquals(EC, argsFromProto.getDefaultReplicationConfig().getType()); + Assert.assertEquals(EC, + argsFromProto.getDefaultReplicationConfig().getType()); } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java index 8a7ab742724f..277f32e64c48 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java @@ -204,7 +204,7 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, bucketInfoBuilder.setDefaultReplicationConfig(defaultReplicationConfig); } else { // Retaining existing default replication config - if (dbBucketInfo.getDefaultReplicationConfig() != null ) { + if (dbBucketInfo.getDefaultReplicationConfig() != null) { bucketInfoBuilder.setDefaultReplicationConfig( dbBucketInfo.getDefaultReplicationConfig()); } 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 823d4c947c8e..2d96aa9571e4 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 @@ -454,7 +454,7 @@ public void testSettingQuotaRetainsReplication() throws Exception { /* Bucket with default replication */ OMRequestTestUtils.addVolumeAndBucketToDB( - volumeName1,bucketName1,omMetadataManager); + volumeName1, bucketName1, omMetadataManager); String bucketKey = omMetadataManager .getBucketKey(volumeName1, bucketName1); @@ -478,7 +478,8 @@ public void testSettingQuotaRetainsReplication() throws Exception { OmBucketInfo dbBucketInfoAfter = omMetadataManager.getBucketTable().get(bucketKey); - Assert.assertEquals(null,dbBucketInfoAfter.getDefaultReplicationConfig()); + Assert.assertEquals(null, + dbBucketInfoAfter.getDefaultReplicationConfig()); Assert.assertEquals( dbBucketInfoBefore.getDefaultReplicationConfig(), dbBucketInfoAfter.getDefaultReplicationConfig()); @@ -494,7 +495,7 @@ public void testSettingQuotaRetainsReplication() throws Exception { .setDefaultReplicationConfig(new DefaultReplicationConfig( EC, new ECReplicationConfig(3, 2))); - OMRequestTestUtils.addVolumeToDB(volumeName2,omMetadataManager); + OMRequestTestUtils.addVolumeToDB(volumeName2, omMetadataManager); OMRequestTestUtils.addBucketToDB(omMetadataManager, bucketInfo); bucketKey = omMetadataManager From 1495d3e8cd4d2fbd345180cfb096ac15e4cfbb2d Mon Sep 17 00:00:00 2001 From: saketa Date: Wed, 30 Nov 2022 19:29:30 -0800 Subject: [PATCH 4/5] HDDS-7526. Updated else if in OMBucketSetPropertyRequest.java --- .../ozone/om/request/bucket/OMBucketSetPropertyRequest.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java index 277f32e64c48..a780f9f8edb2 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java @@ -202,12 +202,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, if (defaultReplicationConfig != null) { // Resetting the default replication config. bucketInfoBuilder.setDefaultReplicationConfig(defaultReplicationConfig); - } else { + } else if (dbBucketInfo.getDefaultReplicationConfig() != null) { // Retaining existing default replication config - if (dbBucketInfo.getDefaultReplicationConfig() != null) { - bucketInfoBuilder.setDefaultReplicationConfig( + bucketInfoBuilder.setDefaultReplicationConfig( dbBucketInfo.getDefaultReplicationConfig()); - } } bucketInfoBuilder.setCreationTime(dbBucketInfo.getCreationTime()); From 4193b4b203e0634c7c4618b425c47196f95fd8cf Mon Sep 17 00:00:00 2001 From: saketa Date: Mon, 5 Dec 2022 13:56:06 -0800 Subject: [PATCH 5/5] HDDS-7526. Removed unnecessary changes in OmBucketArgs.java --- .../hadoop/ozone/om/helpers/OmBucketArgs.java | 18 ++---------------- .../ozone/om/helpers/TestOmBucketArgs.java | 6 ------ 2 files changed, 2 insertions(+), 22 deletions(-) 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 c05b1ffa15d4..f5a4c1930c42 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 @@ -55,7 +55,6 @@ public final class OmBucketArgs extends WithMetadata implements Auditable { private boolean quotaInBytesSet = false; private boolean quotaInNamespaceSet = false; private DefaultReplicationConfig defaultReplicationConfig = null; - private boolean defaultReplicationConfigSet = false; /** * Bucket Owner Name. */ @@ -151,20 +150,11 @@ public DefaultReplicationConfig getDefaultReplicationConfig() { return defaultReplicationConfig; } - /** - * Returns true if defaultReplicationConfig has been set - * to a non default value. - */ - public boolean hasDefaultReplicationConfig() { - return defaultReplicationConfigSet; - } - /** * Sets the Bucket default replication config. */ private void setDefaultReplicationConfig( DefaultReplicationConfig defaultReplicationConfig) { - this.defaultReplicationConfigSet = true; this.defaultReplicationConfig = defaultReplicationConfig; } @@ -227,7 +217,6 @@ public static class Builder { private boolean quotaInNamespaceSet = false; private long quotaInNamespace; private DefaultReplicationConfig defaultReplicationConfig; - private boolean defaultReplicationConfigSet = false; private String ownerName; /** * Constructs a builder. @@ -276,7 +265,6 @@ public Builder setQuotaInNamespace(long quota) { public Builder setDefaultReplicationConfig( DefaultReplicationConfig defaultRepConfig) { - this.defaultReplicationConfigSet = true; this.defaultReplicationConfig = defaultRepConfig; return this; } @@ -296,9 +284,7 @@ public OmBucketArgs build() { OmBucketArgs omBucketArgs = new OmBucketArgs(volumeName, bucketName, isVersionEnabled, storageType, metadata, ownerName); - if (defaultReplicationConfigSet) { - omBucketArgs.setDefaultReplicationConfig(defaultReplicationConfig); - } + omBucketArgs.setDefaultReplicationConfig(defaultReplicationConfig); if (quotaInBytesSet) { omBucketArgs.setQuotaInBytes(quotaInBytes); } @@ -330,7 +316,7 @@ public BucketArgs getProtobuf() { quotaInNamespace > 0 || quotaInNamespace == OzoneConsts.QUOTA_RESET)) { builder.setQuotaInNamespace(quotaInNamespace); } - if (defaultReplicationConfigSet && defaultReplicationConfig != null) { + if (defaultReplicationConfig != null) { builder.setDefaultReplicationConfig(defaultReplicationConfig.toProto()); } if (ownerName != 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 e402ce70256f..251033ac2727 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 @@ -70,12 +70,9 @@ public void testDefaultReplicationConfigIsSetCorrectly() { .setVolumeName("volume") .build(); - Assert.assertEquals(false, bucketArgs.hasDefaultReplicationConfig()); - OmBucketArgs argsFromProto = OmBucketArgs.getFromProtobuf( bucketArgs.getProtobuf()); - Assert.assertEquals(false, argsFromProto.hasDefaultReplicationConfig()); Assert.assertEquals(null, argsFromProto.getDefaultReplicationConfig()); bucketArgs = OmBucketArgs.newBuilder() @@ -85,12 +82,9 @@ public void testDefaultReplicationConfigIsSetCorrectly() { EC, new ECReplicationConfig(3, 2))) .build(); - Assert.assertEquals(true, bucketArgs.hasDefaultReplicationConfig()); - argsFromProto = OmBucketArgs.getFromProtobuf( bucketArgs.getProtobuf()); - Assert.assertEquals(true, argsFromProto.hasDefaultReplicationConfig()); Assert.assertEquals(EC, argsFromProto.getDefaultReplicationConfig().getType()); }