[ 
https://issues.apache.org/jira/browse/HADOOP-11156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14153775#comment-14153775
 ] 

zhihai xu commented on HADOOP-11156:
------------------------------------

It will be very hard to do unit test for this patch. Because the free disk 
space can be changed by other process and the test environment will affect the 
test result.
Also DelegateToFileSystem.getFsStatus is matching to FileSystem.getStatus, the 
change is very straightforward.
  public FsStatus getFsStatus() throws IOException {
    return fsImpl.getStatus();
  }
public FsStatus getFsStatus(final Path f) throws IOException {
    return fsImpl.getStatus(f);
}


> DelegateToFileSystem should implement getFsStatus(final Path f).
> ----------------------------------------------------------------
>
>                 Key: HADOOP-11156
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11156
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>            Reporter: zhihai xu
>            Assignee: zhihai xu
>         Attachments: HADOOP-11156.000.patch
>
>
> DelegateToFileSystem only implemented getFsStatus() and didn't implement 
> getFsStatus(final Path f). So if you call getFsStatus(final Path f), it will 
> call  AbstractFileSystem.getFsStatus(final Path f) which will also call 
> DelegateToFileSystem.getFsStatus(). It should implement getFsStatus(final 
> Path f) to call fsImpl.getStatus(f) instead of calling fsImpl.getStatus() 
> from getFsStatus().
> Also based on the following description for FileContext.getFsStatus:
> {code} 
> /**
>    * Returns a status object describing the use and capacity of the
>    * file system denoted by the Parh argument p.
>    * If the file system has multiple partitions, the
>    * use and capacity of the partition pointed to by the specified
>    * path is reflected.
>    * 
>    * @param f Path for which status should be obtained. null means the
>    * root partition of the default file system. 
>    *
>    * @return a FsStatus object
>    *
>    * @throws AccessControlException If access is denied
>    * @throws FileNotFoundException If <code>f</code> does not exist
>    * @throws UnsupportedFileSystemException If file system for <code>f</code> 
> is
>    *           not supported
>    * @throws IOException If an I/O error occurred
>    * 
>    * Exceptions applicable to file systems accessed over RPC:
>    * @throws RpcClientException If an exception occurred in the RPC client
>    * @throws RpcServerException If an exception occurred in the RPC server
>    * @throws UnexpectedServerException If server implementation throws 
>    *           undeclared exception to RPC server
>    */
>   public FsStatus getFsStatus(final Path f) throws AccessControlException,
>       FileNotFoundException, UnsupportedFileSystemException, IOException {
>     if (f == null) {
>       return defaultFS.getFsStatus();
>     }
>     final Path absF = fixRelativePart(f);
>     return new FSLinkResolver<FsStatus>() {
>       @Override
>       public FsStatus next(final AbstractFileSystem fs, final Path p) 
>         throws IOException, UnresolvedLinkException {
>         return fs.getFsStatus(p);
>       }
>     }.resolve(this, absF);
>   }
> {code}
> we should differentiate getFsStatus(final Path f) from getFsStatus() in 
> DelegateToFileSystem.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to