From 3724c6aebbb34dfd3c0f2bb32ca4c0a9cf30f60a Mon Sep 17 00:00:00 2001 From: Bharat Viswanadham Date: Fri, 11 Sep 2020 16:30:16 -0700 Subject: [PATCH 1/3] HDDS-4209. S3A Filesystem does not work with Ozone S3. --- .../hadoop/ozone/s3/endpoint/ObjectEndpoint.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 1eac008365c7..d901bc1a34ba 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 @@ -184,6 +184,18 @@ public Response put( // Normal put object OzoneBucket bucket = getBucket(bucketName); + // As S3A when create directory creates a put object with 0 bytes. + // So, we can safely call create directory. + // And also in S3 world, there is no such an API to create a directory. + // If some one is passing key with trailing "/" and length 0, Ozone S3 + // can create directory. + + if (length == 0 && keyPath.endsWith("/")) { + bucket.createDirectory(keyPath); + return Response.ok().status(HttpStatus.SC_OK) + .build(); + } + output = bucket.createKey(keyPath, length, replicationType, replicationFactor, new HashMap<>()); From 18c86431e85d43eba9dcb92446f3b92ba23d9ee0 Mon Sep 17 00:00:00 2001 From: Bharat Viswanadham Date: Fri, 11 Sep 2020 16:36:02 -0700 Subject: [PATCH 2/3] minor edit --- .../org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d901bc1a34ba..68195db549dc 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 @@ -184,7 +184,7 @@ public Response put( // Normal put object OzoneBucket bucket = getBucket(bucketName); - // As S3A when create directory creates a put object with 0 bytes. + // S3A Filesystem when create directory creates a put object with 0 bytes. // So, we can safely call create directory. // And also in S3 world, there is no such an API to create a directory. // If some one is passing key with trailing "/" and length 0, Ozone S3 From fe506398a2dd27bd41e8068f2645fd53c2be3c33 Mon Sep 17 00:00:00 2001 From: Bharat Viswanadham Date: Fri, 11 Sep 2020 16:39:39 -0700 Subject: [PATCH 3/3] minor edit --- .../org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 68195db549dc..7b0085c7657b 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 @@ -186,7 +186,7 @@ public Response put( // S3A Filesystem when create directory creates a put object with 0 bytes. // So, we can safely call create directory. - // And also in S3 world, there is no such an API to create a directory. + // And also in S3 world, there is no such API to create a directory. // If some one is passing key with trailing "/" and length 0, Ozone S3 // can create directory.