You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by bh...@apache.org on 2020/12/04 05:11:02 UTC

[ozone] branch master updated: HDDS-4543. Failed to list keys when there are two bucket names with same prefix. (#1653)

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 e6007b1  HDDS-4543. Failed to list keys when there are two bucket names with same prefix. (#1653)
e6007b1 is described below

commit e6007b11d19801ef53099643237780ff2661f10d
Author: Sammi Chen <sa...@apache.org>
AuthorDate: Fri Dec 4 13:10:48 2020 +0800

    HDDS-4543. Failed to list keys when there are two bucket names with same prefix. (#1653)
---
 .../apache/hadoop/ozone/om/OmMetadataManagerImpl.java   |  3 ++-
 .../apache/hadoop/ozone/om/TestOmMetadataManager.java   | 17 ++++++++++++++---
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
index 27a3662..15b193d 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
@@ -765,7 +765,8 @@ public class OmMetadataManagerImpl implements OMMetadataManager {
       skipStartKey = true;
     } else {
       // This allows us to seek directly to the first key with the right prefix.
-      seekKey = getOzoneKey(volumeName, bucketName, keyPrefix);
+      seekKey = getOzoneKey(volumeName, bucketName,
+          StringUtil.isNotBlank(keyPrefix) ? keyPrefix : OM_KEY_PREFIX);
     }
 
     String seekPrefix;
diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
index 7c2d258..5cc048b 100644
--- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
+++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
@@ -324,19 +324,21 @@ public class TestOmMetadataManager {
     String volumeNameB = "volumeB";
     String ozoneBucket = "ozoneBucket";
     String hadoopBucket = "hadoopBucket";
-
+    String ozoneTestBucket = "ozoneBucket-Test";
 
     // Create volumes and buckets.
     TestOMRequestUtils.addVolumeToDB(volumeNameA, omMetadataManager);
     TestOMRequestUtils.addVolumeToDB(volumeNameB, omMetadataManager);
     addBucketsToCache(volumeNameA, ozoneBucket);
     addBucketsToCache(volumeNameB, hadoopBucket);
-
+    addBucketsToCache(volumeNameA, ozoneTestBucket);
 
     String prefixKeyA = "key-a";
     String prefixKeyB = "key-b";
+    String prefixKeyC = "key-c";
     TreeSet<String> keysASet = new TreeSet<>();
     TreeSet<String> keysBSet = new TreeSet<>();
+    TreeSet<String> keysCSet = new TreeSet<>();
     for (int i=1; i<= 100; i++) {
       if (i % 2 == 0) {
         keysASet.add(
@@ -348,7 +350,8 @@ public class TestOmMetadataManager {
         addKeysToOM(volumeNameA, hadoopBucket, prefixKeyB + i, i);
       }
     }
-
+    keysCSet.add(prefixKeyC + 1);
+    addKeysToOM(volumeNameA, ozoneTestBucket, prefixKeyC + 0, 0);
 
     TreeSet<String> keysAVolumeBSet = new TreeSet<>();
     TreeSet<String> keysBVolumeBSet = new TreeSet<>();
@@ -442,6 +445,14 @@ public class TestOmMetadataManager {
 
     Assert.assertEquals(omKeyInfoList.size(), 0);
 
+    // List all keys with empty prefix
+    omKeyInfoList = omMetadataManager.listKeys(volumeNameA, ozoneBucket,
+        null, null, 100);
+    Assert.assertEquals(50, omKeyInfoList.size());
+    for (OmKeyInfo omKeyInfo : omKeyInfoList) {
+      Assert.assertTrue(omKeyInfo.getKeyName().startsWith(
+          prefixKeyA));
+    }
   }
 
   @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org