HADOOP-16685: FileSystem#listStatusIterator does not check if given path exists (#1695)
This commit is contained in:
parent
52e9ee39a1
commit
3161813482
@ -2160,24 +2160,19 @@ protected class DirListingIterator<T extends FileStatus> implements
|
||||
private DirectoryEntries entries;
|
||||
private int i = 0;
|
||||
|
||||
DirListingIterator(Path path) {
|
||||
DirListingIterator(Path path) throws IOException {
|
||||
this.path = path;
|
||||
this.entries = listStatusBatch(path, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() throws IOException {
|
||||
if (entries == null) {
|
||||
fetchMore();
|
||||
}
|
||||
return i < entries.getEntries().length ||
|
||||
entries.hasMore();
|
||||
}
|
||||
|
||||
private void fetchMore() throws IOException {
|
||||
byte[] token = null;
|
||||
if (entries != null) {
|
||||
token = entries.getToken();
|
||||
}
|
||||
byte[] token = entries.getToken();
|
||||
entries = listStatusBatch(path, token);
|
||||
i = 0;
|
||||
}
|
||||
|
@ -279,6 +279,14 @@ public void testListFilesNoDir() throws Throwable {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListStatusIteratorNoDir() throws Throwable {
|
||||
describe("test the listStatusIterator call on a path which is not " +
|
||||
"present");
|
||||
intercept(FileNotFoundException.class,
|
||||
() -> getFileSystem().listStatusIterator(path("missing")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLocatedStatusNoDir() throws Throwable {
|
||||
describe("test the LocatedStatus call on a path which is not present");
|
||||
|
Loading…
Reference in New Issue
Block a user