You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by fe...@apache.org on 2023/03/17 03:58:02 UTC
[ozone] branch master updated: HDDS-8183. Fix edge case where delimiter is empty string in BucketEndpoint#get (#4410)
This is an automated email from the ASF dual-hosted git repository.
ferhui 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 864ec707b7 HDDS-8183. Fix edge case where delimiter is empty string in BucketEndpoint#get (#4410)
864ec707b7 is described below
commit 864ec707b71ceac974d88127ec7faa0c09996b77
Author: Ivan Andika <36...@users.noreply.github.com>
AuthorDate: Fri Mar 17 11:57:54 2023 +0800
HDDS-8183. Fix edge case where delimiter is empty string in BucketEndpoint#get (#4410)
---
.../ozone/s3/commontypes/EncodingTypeObject.java | 4 ++-
.../hadoop/ozone/s3/endpoint/BucketEndpoint.java | 2 +-
.../hadoop/ozone/s3/endpoint/TestBucketList.java | 29 ++++++++++++++++++++++
3 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java
index 02540ff57c..e55eb37a38 100644
--- a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java
+++ b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java
@@ -17,6 +17,8 @@
*/
package org.apache.hadoop.ozone.s3.commontypes;
+import org.apache.commons.lang3.StringUtils;
+
import javax.annotation.Nullable;
/**
@@ -45,7 +47,7 @@ public final class EncodingTypeObject {
*/
@Nullable public static EncodingTypeObject createNullable(
@Nullable String name, @Nullable String encodingType) {
- if (name == null) {
+ if (StringUtils.isEmpty(name)) {
return null;
}
return new EncodingTypeObject(name, encodingType);
diff --git a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java
index bb1fb95275..81a1cea265 100644
--- a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java
+++ b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketEndpoint.java
@@ -196,7 +196,7 @@ public class BucketEndpoint extends EndpointBase {
String relativeKeyName = next.getName().substring(prefix.length());
int depth = StringUtils.countMatches(relativeKeyName, delimiter);
- if (delimiter != null) {
+ if (!StringUtils.isEmpty(delimiter)) {
if (depth > 0) {
// means key has multiple delimiters in its value.
// ex: dir/dir1/dir2, where delimiter is "/" and prefix is dir/
diff --git a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java
index a597233f2e..f77c970f5f 100644
--- a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java
+++ b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java
@@ -171,6 +171,35 @@ public class TestBucketList {
}
+ @Test
+ public void listWithPrefixAndEmptyStrDelimiter()
+ throws OS3Exception, IOException {
+ BucketEndpoint getBucket = new BucketEndpoint();
+
+ OzoneClient ozoneClient =
+ createClientWithKeys("dir1/", "dir1/dir2/", "dir1/dir2/file1",
+ "dir1/dir2/file2");
+
+ getBucket.setClient(ozoneClient);
+
+ // Should behave the same if delimiter is null
+ ListObjectResponse getBucketResponse =
+ (ListObjectResponse) getBucket.get("b1", "", null, null, 100, "dir1/",
+ null, null, null, null, null).getEntity();
+
+ Assert.assertEquals(0, getBucketResponse.getCommonPrefixes().size());
+ Assert.assertEquals(4, getBucketResponse.getContents().size());
+ Assert.assertEquals("dir1/",
+ getBucketResponse.getContents().get(0).getKey().getName());
+ Assert.assertEquals("dir1/dir2/",
+ getBucketResponse.getContents().get(1).getKey().getName());
+ Assert.assertEquals("dir1/dir2/file1",
+ getBucketResponse.getContents().get(2).getKey().getName());
+ Assert.assertEquals("dir1/dir2/file2",
+ getBucketResponse.getContents().get(3).getKey().getName());
+
+ }
+
@Test
public void listWithContinuationToken() throws OS3Exception, IOException {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org