HDFS-12610. Ozone: OzoneClient: RpcClient list calls throw NPE when iterating over empty list. Contributed by Nandakumar.

This commit is contained in:
Nandakumar 2017-10-07 10:29:57 +05:30 committed by Owen O'Malley
parent c3ef381011
commit 9630621be7
4 changed files with 36 additions and 6 deletions

View File

@ -174,7 +174,8 @@ public class ObjectStore {
public boolean hasNext() {
if(!currentIterator.hasNext()) {
currentIterator = getNextListOfVolumes(
currentValue.getName()).iterator();
currentValue != null ? currentValue.getName() : null)
.iterator();
}
return currentIterator.hasNext();
}

View File

@ -277,7 +277,8 @@ public class OzoneBucket {
public boolean hasNext() {
if(!currentIterator.hasNext()) {
currentIterator = getNextListOfKeys(
currentValue.getName()).iterator();
currentValue != null ? currentValue.getName() : null)
.iterator();
}
return currentIterator.hasNext();
}

View File

@ -247,7 +247,8 @@ public class OzoneVolume {
public boolean hasNext() {
if(!currentIterator.hasNext()) {
currentIterator = getNextListOfBuckets(
currentValue.getName()).iterator();
currentValue != null ? currentValue.getName() : null)
.iterator();
}
return currentIterator.hasNext();
}

View File

@ -409,7 +409,7 @@ public class TestOzoneRpcClient {
}
@Test
public void listVolumeTest() throws IOException, OzoneException {
public void testListVolume() throws IOException, OzoneException {
String volBase = "vol-" + RandomStringUtils.randomNumeric(3);
//Create 10 volume vol-<random>-a-0-<random> to vol-<random>-a-9-<random>
String volBaseNameA = volBase + "-a-";
@ -448,7 +448,7 @@ public class TestOzoneRpcClient {
}
@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 class TestOzoneRpcClient {
}
@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<OzoneBucket> 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 class TestOzoneRpcClient {
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<OzoneKey> keys = buc.listKeys("");
while(keys.hasNext()) {
Assert.fail();
}
}
/**
* Close OzoneClient and shutdown MiniOzoneCluster.
*/