John Zhuge created HADOOP-13191: ----------------------------------- Summary: FileSystem#listStatus should not return null Key: HADOOP-13191 URL: https://issues.apache.org/jira/browse/HADOOP-13191 Project: Hadoop Common Issue Type: Bug Components: fs Affects Versions: 2.6.0 Reporter: John Zhuge Assignee: John Zhuge Priority: Minor
This came out of discussion in HADOOP-12718. The {{FileSystem#listStatus}} contract does not indicate {{null}} is a valid return and some callers do not test {{null}} before use: AbstractContractGetFileStatusTest#testListStatusEmptyDirectory: {code} assertEquals("ls on an empty directory not of length 0", 0, fs.listStatus(subfolder).length); {code} ChecksumFileSystem#copyToLocalFile: {code} FileStatus[] srcs = listStatus(src); for (FileStatus srcFile : srcs) { {code} SimpleCopyLIsting#getFileStatus: {code} FileStatus[] fileStatuses = fileSystem.listStatus(path); if (excludeList != null && excludeList.size() > 0) { ArrayList<FileStatus> fileStatusList = new ArrayList<>(); for(FileStatus status : fileStatuses) { {code} IMHO, there is no good reason for {{listStatus}} to return {{null}}. It should return empty list instead. To enforce the contract that null is an invalid return, update javadoc and consider Intellij IDEA's @Nullable and @NotNull annotations. So far, I am only aware of the following functions that can return null: * RawLocalFileSystem#listStatus -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: common-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-dev-h...@hadoop.apache.org