You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "John Zhuge (JIRA)" <ji...@apache.org> on 2016/05/21 06:03:12 UTC
[jira] [Created] (HADOOP-13191) FileSystem#listStatus should not
return null
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-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org