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 "Andrew Wang (JIRA)" <ji...@apache.org> on 2014/10/01 01:33:34 UTC

[jira] [Commented] (HADOOP-11156) DelegateToFileSystem should implement getFsStatus(final Path f).

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

Andrew Wang commented on HADOOP-11156:
--------------------------------------

Yea, I agree that testing this may be kind of hard. It looks like it matters most for RawLocalFileSystem, and you need multiple partitions configured.

+1 I'll commit this shortly, thanks for working on this Zhihai.

> 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)