[ 
https://issues.apache.org/jira/browse/HADOOP-9761?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Wang updated HADOOP-9761:
--------------------------------

    Attachment: hadoop-9761-1.patch

Had to think this one over a bit. FileSystem isn't like FileContext, in that 
given an unqualified path, it doesn't try to qualify it against the default FS 
first. It's supposed to just treat the path as one of its own.

So, simply move the cross-FS check in DFS#rename. Also tweak 
FileSystemLinkResolver to match.

The existing test cases weren't picking this up because the DFS returned from 
the minicluster use the minicluster conf, rather than the viewfs client's conf 
like in a real environment. So, I make sure to set the DFS defaultFS to the 
viewfs. I tested "fail before/works after" with the testcase and tested with 
the shell.

Also took the opportunity to correct some javadoc in DFS.
                
> ViewFileSystem#rename fails when using DistributedFileSystem
> ------------------------------------------------------------
>
>                 Key: HADOOP-9761
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9761
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: viewfs
>    Affects Versions: 3.0.0, 2.1.0-beta
>            Reporter: Andrew Wang
>            Assignee: Andrew Wang
>         Attachments: hadoop-9761-1.patch
>
>
> ViewFileSystem currently passes unqualified paths (no scheme or authority) to 
> underlying FileSystems when doing a rename. DistributedFileSystem symlink 
> support added in HADOOP-9418 needs to qualify and check rename sources and 
> destinations since cross-filesystem renames aren't supported, so this breaks 
> in the following way
> - Default FS URI is configured to viewfs://<viewfs>
> - When doing a rename, ViewFileSystem checks to make sure both src and dst 
> FileSystems are the same (which they are, both in same DFS), and then calls 
> DistributedFileSystem#rename with unqualified "remainder" paths
> - Since these paths are unqualified, DFS qualifies them with the default FS 
> to check that it can do the rename. This turns it into 
> viewfs://<viewfs>/<path>
> - Since viewfs://<viewfs> is not the DFS's URI, DFS errors out the rename.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to