[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15471785#comment-15471785 ] John Zhuge commented on HADOOP-13191: - Went through 99 usages of {{globStatus(Path)}} in the following components: hadoop-common, hadoop-distcp, hadoop-rumen, hadoop-streaming, hadoop-yarn-*, hadoop-hdfs (test only). Most {{globStatus}} callers check both {{listFileStatus not null}} and {{listFileStatus.length > 0}}, or expect {{listFileStatus}} to be not {{null}}, except: {code:title=fs.shell.PathData} public static PathData[] expandAsGlob(String pattern, Configuration conf) throws IOException { Path globPath = new Path(pattern); FileSystem fs = globPath.getFileSystem(conf); FileStatus[] stats = fs.globStatus(globPath); PathData[] items = null; if (stats == null) { // remove any quoting in the glob pattern pattern = pattern.replaceAll("(.)", "$1"); // not a glob & file not found, so add the path with a null stat items = new PathData[]{ new PathData(fs, pattern, null) }; } else { {code} > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch, > HADOOP-13191.003.patch, HADOOP-13191.004.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15471696#comment-15471696 ] John Zhuge commented on HADOOP-13191: - Thanks [~ste...@apache.org] for the comments. I have dup this JIRA to HADOOP-7352 and posted patch 001 there. Patch 001 removed "@Nonnull". > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch, > HADOOP-13191.003.patch, HADOOP-13191.004.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15471684#comment-15471684 ] Steve Loughran commented on HADOOP-13191: - Be aware that the FS shell expects globStatus to return null in certain conditions: someone needs to look at all uses of this call and make sure that it isn't being used -1 to adding @NonNull, for the dependency reasons. > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch, > HADOOP-13191.003.patch, HADOOP-13191.004.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15455499#comment-15455499 ] John Zhuge commented on HADOOP-13191: - Thanks [~xiaochen] for the review. Great comments. > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch, > HADOOP-13191.003.patch, HADOOP-13191.004.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15440217#comment-15440217 ] Xiao Chen commented on HADOOP-13191: Thanks for working on this [~jzhuge]. Some review comments from me: - This duplicates HADOOP-7352, which predates this jira. Maybe we can move the patch and further discussions to there? The code changes are mostly in common too. - bq. (Steve L): I'm in favour of this, and returning an empty list. IMHO returning an empty list is less surprising, throwing an IOE will make the error more explicit. Although this jira maybe incompatible, I think returning an empty list maintains a more compatible behavior (Client code may not need any change if empty list), so personally inclined with empty list too. - I don't think throwing {{AccessControlException}} in {{RawLocalFileSystem#listStatus}} is correct. The javadoc of {{File#list}} mentions various of scenarios, {{AccessControlException}} is one of those scenarios. I think we could do sth similar to [FileUtil|https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java#L1147]. - Also I don't see much value in the comment before throwing. One can just check javadoc to see what a method returns. - Not sure about {{@Nonnull}}. Would this add a dependency to javax to common? It's currently in hdfs only. I wouldn't worry about this normally, but would like other people's thoughts since this is {{FileSystem.java}}. > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch, > HADOOP-13191.003.patch, HADOOP-13191.004.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15413106#comment-15413106 ] John Zhuge commented on HADOOP-13191: - Unit test timeout is unrelated to the patch. > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch, > HADOOP-13191.003.patch, HADOOP-13191.004.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15397234#comment-15397234 ] Hadoop QA commented on HADOOP-13191: | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 13s{color} | {color:blue} Docker mode activated. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 4 new or modified test files. {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 1m 35s{color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 8m 12s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 8m 39s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 41s{color} | {color:green} trunk passed {color} | | {color:red}-1{color} | {color:red} mvnsite {color} | {color:red} 5m 16s{color} | {color:red} hadoop-common in trunk failed. {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 1m 44s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 4m 8s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 33s{color} | {color:green} trunk passed {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 18s{color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 50s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 8m 11s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 8m 11s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 52s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 2m 27s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 4m 29s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 2m 3s{color} | {color:green} the patch passed {color} | | {color:red}-1{color} | {color:red} unit {color} | {color:red} 22m 8s{color} | {color:red} hadoop-common in the patch failed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 1m 3s{color} | {color:green} hadoop-hdfs-client in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 9m 50s{color} | {color:green} hadoop-distcp in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 28s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}113m 37s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Timed out junit tests | org.apache.hadoop.http.TestHttpServerLifecycle | \\ \\ || Subsystem || Report/Notes || | Docker | Image:yetus/hadoop:9560f25 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12820628/HADOOP-13191.004.patch | | JIRA Issue | HADOOP-13191 | | Optional Tests | asflicense compile javac javadoc mvninstall mvnsite unit findbugs checkstyle | | uname | Linux 5b730640303b 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/hadoop/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 8d06bda | | Default Java | 1.8.0_101 | | mvnsite | https://builds.apache.org/job/PreCommit-HADOOP-Build/10102/artifact/patchprocess/branch-mvnsite-hadoop-common-project_hadoop-common.txt | | findbugs | v3.0.0 | | unit | https://builds.apache.org/job/PreCommit-HADOOP-Build/10102/artifact/patchprocess/patch-unit-hadoop-common-project_hadoop-common.txt | | Test Results
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15396790#comment-15396790 ] Hadoop QA commented on HADOOP-13191: | (/) *{color:green}+1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 12s{color} | {color:blue} Docker mode activated. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 4 new or modified test files. {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 4m 16s{color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 7m 11s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 7m 40s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 32s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 58s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 2m 23s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 27s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 29s{color} | {color:green} trunk passed {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 17s{color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 37s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 7m 12s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 7m 12s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 1m 32s{color} | {color:orange} root: The patch generated 2 new + 295 unchanged - 0 fixed = 297 total (was 295) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 2m 1s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 49s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 55s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 36s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 8m 12s{color} | {color:green} hadoop-common in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 1m 4s{color} | {color:green} hadoop-hdfs-client in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 9m 21s{color} | {color:green} hadoop-distcp in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 27s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black} 91m 36s{color} | {color:black} {color} | \\ \\ || Subsystem || Report/Notes || | Docker | Image:yetus/hadoop:9560f25 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12820611/HADOOP-13191.003.patch | | JIRA Issue | HADOOP-13191 | | Optional Tests | asflicense compile javac javadoc mvninstall mvnsite unit findbugs checkstyle | | uname | Linux fbc437ce93f7 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/hadoop/patchprocess/precommit/personality/provided.sh | | git revision | trunk / b43de80 | | Default Java | 1.8.0_101 | | findbugs | v3.0.0 | | checkstyle | https://builds.apache.org/job/PreCommit-HADOOP-Build/10101/artifact/patchprocess/diff-checkstyle-root.txt | | Test Results | https://builds.apache.org/job/PreCommit-HADOOP-Build/10101/testReport/ | | modules | C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs-client hadoop-tools/hadoop-distcp U: . | |
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15395739#comment-15395739 ] John Zhuge commented on HADOOP-13191: - Fixing some unit test failures. Another patch coming. > 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 > Attachments: HADOOP-13191.001.patch, HADOOP-13191.002.patch > > > 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 fileStatusList = new ArrayList<>(); > for(FileStatus status : fileStatuses) { > {code} > IMHO, there is no good reason for {{listStatus}} to return {{null}}. It > should throw IOExceptions upon errors or return empty list. > To enforce the contract that null is an invalid return, update javadoc and > leverage @Nullable/@NotNull/@Nonnull 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15383815#comment-15383815 ] Hadoop QA commented on HADOOP-13191: | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 25s{color} | {color:blue} Docker mode activated. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 3 new or modified test files. {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 14s{color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 6m 50s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 7m 3s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 28s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 53s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 49s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 18s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 26s{color} | {color:green} trunk passed {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 17s{color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 34s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 7m 3s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 7m 3s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 32s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 59s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 54s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 56s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 36s{color} | {color:green} the patch passed {color} | | {color:red}-1{color} | {color:red} unit {color} | {color:red} 6m 49s{color} | {color:red} hadoop-common in the patch failed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 1m 1s{color} | {color:green} hadoop-hdfs-client in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 9m 26s{color} | {color:green} hadoop-distcp in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 29s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black} 83m 48s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.fs.viewfs.TestFSMainOperationsLocalFileSystem | | | hadoop.fs.TestFSMainOperationsLocalFileSystem | \\ \\ || Subsystem || Report/Notes || | Docker | Image:yetus/hadoop:9560f25 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12818764/HADOOP-13191.002.patch | | JIRA Issue | HADOOP-13191 | | Optional Tests | asflicense compile javac javadoc mvninstall mvnsite unit findbugs checkstyle | | uname | Linux 5bc424547b17 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/hadoop/patchprocess/precommit/personality/provided.sh | | git revision | trunk / 92fe2db | | Default Java | 1.8.0_91 | | findbugs | v3.0.0 | | unit | https://builds.apache.org/job/PreCommit-HADOOP-Build/10023/artifact/patchprocess/patch-unit-hadoop-common-project_hadoop-common.txt | | Test Results | https://builds.apache.org/job/PreCommit-HADOOP-Build/10023/testReport/ | | modules | C:
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15299415#comment-15299415 ] Hadoop QA commented on HADOOP-13191: | (/) *{color:green}+1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 11s {color} | {color:blue} Docker mode activated. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s {color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s {color} | {color:green} The patch appears to include 3 new or modified test files. {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 29s {color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 6m 56s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 7m 0s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 24s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 55s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 36s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 18s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 29s {color} | {color:green} trunk passed {color} | | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 11s {color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 38s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 7m 2s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 7m 2s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 1m 25s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 53s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green} 0m 35s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s {color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 48s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 32s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 8m 36s {color} | {color:green} hadoop-common in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 0m 56s {color} | {color:green} hadoop-hdfs-client in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 8m 28s {color} | {color:green} hadoop-distcp in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 0m 20s {color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black} 60m 38s {color} | {color:black} {color} | \\ \\ || Subsystem || Report/Notes || | Docker | Image:yetus/hadoop:2c91fd8 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12806046/HADOOP-13191.001.patch | | JIRA Issue | HADOOP-13191 | | Optional Tests | asflicense compile javac javadoc mvninstall mvnsite unit findbugs checkstyle | | uname | Linux eb9c16ede999 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT Wed Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/hadoop/patchprocess/precommit/personality/provided.sh | | git revision | trunk / ae353ea | | Default Java | 1.8.0_91 | | findbugs | v3.0.0 | | Test Results | https://builds.apache.org/job/PreCommit-HADOOP-Build/9574/testReport/ | | modules | C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs-client hadoop-tools/hadoop-distcp U: . | | Console output | https://builds.apache.org/job/PreCommit-HADOOP-Build/9574/console | | Powered by | Apache Yetus 0.4.0-SNAPSHOT http://yetus.apache.org | This message was automatically generated.
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15297965#comment-15297965 ] Steve Loughran commented on HADOOP-13191: - I'm in favour of this, and returning an empty list. Can you also update filesystem.md to highlight light that while versions of local FS have in the past returned null, it is considered erroneous > 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 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org
[jira] [Commented] (HADOOP-13191) FileSystem#listStatus should not return null
[ https://issues.apache.org/jira/browse/HADOOP-13191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15295274#comment-15295274 ] Andras Bokor commented on HADOOP-13191: --- I have met with the same. Please check HADOOP-7352. You can find a previous conversation about the same issue. > 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 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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org