diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/ObjectStore.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/ObjectStore.java index 2e661dba1c..1ed41f5c8f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/ObjectStore.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/ObjectStore.java @@ -174,7 +174,8 @@ private class VolumeIterator implements Iterator { public boolean hasNext() { if(!currentIterator.hasNext()) { currentIterator = getNextListOfVolumes( - currentValue.getName()).iterator(); + currentValue != null ? currentValue.getName() : null) + .iterator(); } return currentIterator.hasNext(); } diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java index e46fe1cfd9..a5dd1d093f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java @@ -277,7 +277,8 @@ private class KeyIterator implements Iterator { public boolean hasNext() { if(!currentIterator.hasNext()) { currentIterator = getNextListOfKeys( - currentValue.getName()).iterator(); + currentValue != null ? currentValue.getName() : null) + .iterator(); } return currentIterator.hasNext(); } diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneVolume.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneVolume.java index f074fb20df..bf50057662 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneVolume.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/ozone/client/OzoneVolume.java @@ -247,7 +247,8 @@ private class BucketIterator implements Iterator { public boolean hasNext() { if(!currentIterator.hasNext()) { currentIterator = getNextListOfBuckets( - currentValue.getName()).iterator(); + currentValue != null ? currentValue.getName() : null) + .iterator(); } return currentIterator.hasNext(); } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClient.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClient.java index e56014233f..0d8864ede5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClient.java @@ -409,7 +409,7 @@ public void testDeleteKey() } @Test - public void listVolumeTest() throws IOException, OzoneException { + public void testListVolume() throws IOException, OzoneException { String volBase = "vol-" + RandomStringUtils.randomNumeric(3); //Create 10 volume vol--a-0- to vol--a-9- String volBaseNameA = volBase + "-a-"; @@ -448,7 +448,7 @@ public void listVolumeTest() throws IOException, OzoneException { } @Test - public void listBucketTest() + public void testListBucket() throws IOException, OzoneException { String volumeA = "vol-a-" + RandomStringUtils.randomNumeric(5); String volumeB = "vol-b-" + RandomStringUtils.randomNumeric(5); @@ -522,7 +522,19 @@ public void listBucketTest() } @Test - public void listKeyTest() + public void testListBucketsOnEmptyVolume() + throws IOException, OzoneException { + String volume = "vol-" + RandomStringUtils.randomNumeric(5); + store.createVolume(volume); + OzoneVolume vol = store.getVolume(volume); + Iterator buckets = vol.listBuckets(""); + while(buckets.hasNext()) { + Assert.fail(); + } + } + + @Test + public void testListKey() throws IOException, OzoneException { String volumeA = "vol-a-" + RandomStringUtils.randomNumeric(5); String volumeB = "vol-b-" + RandomStringUtils.randomNumeric(5); @@ -656,6 +668,21 @@ public void listKeyTest() Assert.assertFalse(volABucketBIter.hasNext()); } + @Test + public void testListKeyOnEmptyBucket() + throws IOException, OzoneException { + String volume = "vol-" + RandomStringUtils.randomNumeric(5); + String bucket = "buc-" + RandomStringUtils.randomNumeric(5); + store.createVolume(volume); + OzoneVolume vol = store.getVolume(volume); + vol.createBucket(bucket); + OzoneBucket buc = vol.getBucket(bucket); + Iterator keys = buc.listKeys(""); + while(keys.hasNext()) { + Assert.fail(); + } + } + /** * Close OzoneClient and shutdown MiniOzoneCluster. */