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

bharat 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 ffe53e7  HDDS-6019. Fix s3g create key error in cluster with 
replication one. (#2855)
ffe53e7 is described below

commit ffe53e72461d7f12283974650f9fbc9964e1808e
Author: Gui Hecheng <[email protected]>
AuthorDate: Thu Nov 25 09:31:58 2021 +0800

    HDDS-6019. Fix s3g create key error in cluster with replication one. (#2855)
---
 .../hadoop/ozone/s3/endpoint/ObjectEndpoint.java   |  9 +++++++--
 .../apache/hadoop/ozone/s3/util/S3StorageType.java | 22 ++++++++++++++++++++--
 .../s3/endpoint/TestAbortMultipartUpload.java      |  2 ++
 .../s3/endpoint/TestInitiateMultipartUpload.java   |  2 ++
 .../hadoop/ozone/s3/endpoint/TestListParts.java    |  2 ++
 .../s3/endpoint/TestMultipartUploadComplete.java   |  2 ++
 .../s3/endpoint/TestMultipartUploadWithCopy.java   |  2 ++
 .../hadoop/ozone/s3/endpoint/TestObjectDelete.java |  2 ++
 .../hadoop/ozone/s3/endpoint/TestObjectGet.java    |  2 ++
 .../hadoop/ozone/s3/endpoint/TestObjectHead.java   |  2 ++
 .../hadoop/ozone/s3/endpoint/TestObjectPut.java    |  2 ++
 .../hadoop/ozone/s3/endpoint/TestPartUpload.java   |  2 ++
 .../ozone/s3/endpoint/TestPermissionCheck.java     |  4 ++++
 13 files changed, 51 insertions(+), 4 deletions(-)

diff --git 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
index ad39658..52b9c49 100644
--- 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
+++ 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
@@ -171,7 +171,7 @@ public class ObjectEndpoint extends EndpointBase {
       S3StorageType s3StorageType;
       boolean storageTypeDefault;
       if (storageType == null || storageType.equals("")) {
-        s3StorageType = S3StorageType.getDefault();
+        s3StorageType = S3StorageType.getDefault(ozoneConfiguration);
         storageTypeDefault = true;
       } else {
         s3StorageType = toS3StorageType(storageType);
@@ -473,7 +473,7 @@ public class ObjectEndpoint extends EndpointBase {
 
       S3StorageType s3StorageType;
       if (storageType == null || storageType.equals("")) {
-        s3StorageType = S3StorageType.getDefault();
+        s3StorageType = S3StorageType.getDefault(ozoneConfiguration);
       } else {
         s3StorageType = toS3StorageType(storageType);
       }
@@ -900,4 +900,9 @@ public class ObjectEndpoint extends EndpointBase {
     return (copySourceIfModifiedSince <= lastModificationTime) &&
         (lastModificationTime <= copySourceIfUnmodifiedSince);
   }
+
+  @VisibleForTesting
+  public void setOzoneConfiguration(OzoneConfiguration config) {
+    this.ozoneConfiguration = config;
+  }
 }
diff --git 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/util/S3StorageType.java
 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/util/S3StorageType.java
index 7c0773b..21b3b8d 100644
--- 
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/util/S3StorageType.java
+++ 
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/util/S3StorageType.java
@@ -20,6 +20,8 @@ package org.apache.hadoop.ozone.s3.util;
 
 import org.apache.hadoop.hdds.client.ReplicationFactor;
 import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.conf.ConfigurationSource;
+import org.apache.hadoop.ozone.OzoneConfigKeys;
 
 /**
  * Maps S3 storage class values to Ozone replication values.
@@ -48,8 +50,24 @@ public enum S3StorageType {
     return type;
   }
 
-  public static S3StorageType getDefault() {
-    return STANDARD;
+  /**
+   * Get default S3StorageType for a new key to be uploaded.
+   * This should align to the ozone cluster configuration.
+   * @param config OzoneConfiguration
+   * @return S3StorageType which wraps ozone replication type and factor
+   */
+  public static S3StorageType getDefault(ConfigurationSource config) {
+    String replicationString = config.get(OzoneConfigKeys.OZONE_REPLICATION);
+    ReplicationFactor configFactor;
+    try {
+      configFactor = ReplicationFactor.valueOf(
+          Integer.parseInt(replicationString));
+    } catch (NumberFormatException ex) {
+      // conservatively defaults to STANDARD on wrong config value
+      return STANDARD;
+    }
+    return configFactor == ReplicationFactor.ONE
+        ? REDUCED_REDUNDANCY : STANDARD;
   }
 
   public static S3StorageType fromReplicationType(
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestAbortMultipartUpload.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestAbortMultipartUpload.java
index e23fa60..268adca 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestAbortMultipartUpload.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestAbortMultipartUpload.java
@@ -19,6 +19,7 @@
  */
 package org.apache.hadoop.ozone.s3.endpoint;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -57,6 +58,7 @@ public class TestAbortMultipartUpload {
     ObjectEndpoint rest = new ObjectEndpoint();
     rest.setHeaders(headers);
     rest.setClient(client);
+    rest.setOzoneConfiguration(new OzoneConfiguration());
 
     Response response = rest.initializeMultipartUpload(bucket, key);
 
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestInitiateMultipartUpload.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestInitiateMultipartUpload.java
index 02d0f36..2fa396f 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestInitiateMultipartUpload.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestInitiateMultipartUpload.java
@@ -20,6 +20,7 @@
 
 package org.apache.hadoop.ozone.s3.endpoint;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -55,6 +56,7 @@ public class TestInitiateMultipartUpload {
     ObjectEndpoint rest = new ObjectEndpoint();
     rest.setHeaders(headers);
     rest.setClient(client);
+    rest.setOzoneConfiguration(new OzoneConfiguration());
 
     Response response = rest.initializeMultipartUpload(bucket, key);
 
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestListParts.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestListParts.java
index dcec0df..26e5741 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestListParts.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestListParts.java
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.ozone.s3.endpoint;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -60,6 +61,7 @@ public class TestListParts {
 
     REST.setHeaders(headers);
     REST.setClient(client);
+    REST.setOzoneConfiguration(new OzoneConfiguration());
 
     Response response = REST.initializeMultipartUpload(OzoneConsts.S3_BUCKET,
         OzoneConsts.KEY);
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadComplete.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadComplete.java
index 7626cc1..f6e70ff 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadComplete.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadComplete.java
@@ -20,6 +20,7 @@
 
 package org.apache.hadoop.ozone.s3.endpoint;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -68,6 +69,7 @@ public class TestMultipartUploadComplete {
 
     REST.setHeaders(headers);
     REST.setClient(CLIENT);
+    REST.setOzoneConfiguration(new OzoneConfiguration());
   }
 
   private String initiateMultipartUpload(String key) throws IOException,
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java
index f015b63..96e73de 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestMultipartUploadWithCopy.java
@@ -34,6 +34,7 @@ import java.util.Scanner;
 
 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.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.OzoneBucket;
 import org.apache.hadoop.ozone.client.OzoneClient;
@@ -120,6 +121,7 @@ public class TestMultipartUploadWithCopy {
 
     REST.setHeaders(headers);
     REST.setClient(CLIENT);
+    REST.setOzoneConfiguration(new OzoneConfiguration());
   }
 
   @Test
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectDelete.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectDelete.java
index e85f598..2eb78f4 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectDelete.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectDelete.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.ozone.s3.endpoint;
 
 import java.io.IOException;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.client.OzoneBucket;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -47,6 +48,7 @@ public class TestObjectDelete {
 
     ObjectEndpoint rest = new ObjectEndpoint();
     rest.setClient(client);
+    rest.setOzoneConfiguration(new OzoneConfiguration());
 
     //WHEN
     rest.delete("b1", "key1", null);
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
index c807f10..a5e8dd0 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectGet.java
@@ -26,6 +26,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.time.format.DateTimeFormatter;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.client.OzoneBucket;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -60,6 +61,7 @@ public class TestObjectGet {
 
     ObjectEndpoint rest = new ObjectEndpoint();
     rest.setClient(client);
+    rest.setOzoneConfiguration(new OzoneConfiguration());
     HttpHeaders headers = Mockito.mock(HttpHeaders.class);
     rest.setHeaders(headers);
     ByteArrayInputStream body =
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectHead.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectHead.java
index a1b4fb1..66c7456 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectHead.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectHead.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 
 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.ozone.client.OzoneBucket;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -60,6 +61,7 @@ public class TestObjectHead {
     // Create HeadBucket and setClient to OzoneClientStub
     keyEndpoint = new ObjectEndpoint();
     keyEndpoint.setClient(clientStub);
+    keyEndpoint.setOzoneConfiguration(new OzoneConfiguration());
   }
 
   @Test
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectPut.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectPut.java
index 9684f9c..95b1244 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectPut.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestObjectPut.java
@@ -26,6 +26,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 
 import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
 import org.apache.hadoop.ozone.client.OzoneKeyDetails;
@@ -71,6 +72,7 @@ public class TestObjectPut {
     // Create PutObject and setClient to OzoneClientStub
     objectEndpoint = new ObjectEndpoint();
     objectEndpoint.setClient(clientStub);
+    objectEndpoint.setOzoneConfiguration(new OzoneConfiguration());
   }
 
   @Test
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPartUpload.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPartUpload.java
index 0369688..1b0e808 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPartUpload.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPartUpload.java
@@ -20,6 +20,7 @@
 
 package org.apache.hadoop.ozone.s3.endpoint;
 
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientStub;
@@ -62,6 +63,7 @@ public class TestPartUpload {
 
     REST.setHeaders(headers);
     REST.setClient(client);
+    REST.setOzoneConfiguration(new OzoneConfiguration());
   }
 
 
diff --git 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPermissionCheck.java
 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPermissionCheck.java
index 81b0718..237cc71 100644
--- 
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPermissionCheck.java
+++ 
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestPermissionCheck.java
@@ -251,6 +251,7 @@ public class TestPermissionCheck {
     ObjectEndpoint objectEndpoint = new ObjectEndpoint();
     objectEndpoint.setClient(client);
     objectEndpoint.setHeaders(headers);
+    objectEndpoint.setOzoneConfiguration(conf);
 
     try {
       objectEndpoint.get("bucketName", "keyPath", null, 1000, "marker",
@@ -271,6 +272,7 @@ public class TestPermissionCheck {
     ObjectEndpoint objectEndpoint = new ObjectEndpoint();
     objectEndpoint.setClient(client);
     objectEndpoint.setHeaders(headers);
+    objectEndpoint.setOzoneConfiguration(conf);
 
     try {
       objectEndpoint.put("bucketName", "keyPath", 1024, 0, null, null);
@@ -288,6 +290,7 @@ public class TestPermissionCheck {
     ObjectEndpoint objectEndpoint = new ObjectEndpoint();
     objectEndpoint.setClient(client);
     objectEndpoint.setHeaders(headers);
+    objectEndpoint.setOzoneConfiguration(conf);
 
     try {
       objectEndpoint.delete("bucketName", "keyPath", null);
@@ -306,6 +309,7 @@ public class TestPermissionCheck {
     ObjectEndpoint objectEndpoint = new ObjectEndpoint();
     objectEndpoint.setClient(client);
     objectEndpoint.setHeaders(headers);
+    objectEndpoint.setOzoneConfiguration(conf);
 
     try {
       objectEndpoint.initializeMultipartUpload("bucketName", "keyPath");

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

Reply via email to