[ https://issues.apache.org/jira/browse/HADOOP-12258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14640149#comment-14640149 ]
zhihai xu commented on HADOOP-12258: ------------------------------------ Hi [~ste...@apache.org], [~cnauroth], thanks for the comment! Yes, it makes sense to add contract tests for setTimes and getFileStatus. I just read the document [Testing the Filesystem Contract|https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/site/markdown/filesystem/testing.md], It is an excellent guide. I figured out how to add the contract tests based on the document. > Need translate java.nio.file.NoSuchFileException to FileNotFoundException in > DeprecatedRawLocalFileStatus constructor > --------------------------------------------------------------------------------------------------------------------- > > Key: HADOOP-12258 > URL: https://issues.apache.org/jira/browse/HADOOP-12258 > Project: Hadoop Common > Issue Type: Bug > Components: fs > Reporter: zhihai xu > Assignee: zhihai xu > Priority: Critical > Attachments: HADOOP-12258.000.patch > > > need translate java.nio.file.NoSuchFileException to FileNotFoundException in > DeprecatedRawLocalFileStatus constructor. > HADOOP-12045 adds nio to support access time, but nio will create > java.nio.file.NoSuchFileException instead of FileNotFoundException. > many hadoop codes depend on FileNotFoundException to decide whether a file > exists. for example {{FileContext.util().exists()}}. > {code} > public boolean exists(final Path f) throws AccessControlException, > UnsupportedFileSystemException, IOException { > try { > FileStatus fs = FileContext.this.getFileStatus(f); > assert fs != null; > return true; > } catch (FileNotFoundException e) { > return false; > } > } > {code} > same for {{FileSystem#exists}} > {code} > public boolean exists(Path f) throws IOException { > try { > return getFileStatus(f) != null; > } catch (FileNotFoundException e) { > return false; > } > } > {code} > NoSuchFileException will break these functions. > Since {{exists}} is one of the most used API in FileSystem, this issue is > very critical. > Several test failures for TestDeletionService are caused by this issue: > https://builds.apache.org/job/PreCommit-YARN-Build/8630/testReport/org.apache.hadoop.yarn.server.nodemanager/TestDeletionService/testRelativeDelete/ > https://builds.apache.org/job/PreCommit-YARN-Build/8632/testReport/org.apache.hadoop.yarn.server.nodemanager/TestDeletionService/testAbsDelete/ -- This message was sent by Atlassian JIRA (v6.3.4#6332)