[ https://issues.apache.org/jira/browse/HADOOP-9652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13723225#comment-13723225 ]
Colin Patrick McCabe commented on HADOOP-9652: ---------------------------------------------- I have managed to isolate the problem we had with {{TestMRApps}}. The old code stripped the fragment in {{FileSystem#resolvePath}}; the new code does not. Here's a unit test which only passes on the previous code: {code} @Test (timeout = 120000) public void testResolvePath() throws Exception { FileSystem fs = FileSystem.get(URI.create("file:///tmp/"), new Configuration()); URI preUri = new URI("file:///tmp#fragment"); Path pre = new Path(preUri); Path post = fs.resolvePath(pre); Assert.assertEquals("resolvePath did not strip the fragment", "file:/tmp", post.toString()); } {code} Ultimately this comes down to {{FileSystem#getFileStatus}}, since that's what {{resolvePath}} calls. Andrew, in your new {{getFileLinkStatusInternal}}, you currently just put the path passed by the user directly into the {{FileStatus}} object. In contrast, the old code returned {{new Path(new File(originalPath.toUri().getPath())).getPath()).makeQualified(fs.getUri(), fs.getWorkingDirectory())}}. After all those conversions back and forth, I think: * everything is lost except the "path string" -- i.e. "{{/tmp}}" * we fully qualify it For compatibility reasons, I think we probably need to do the same-- strip off everything but the "path string" and fully qualify. I took a quick look at the HDFS (as opposed to LocalFileSystem) code, and it goes through a very different path. As far as I can see, however, {{DistributedFileSystem#getFileInfo}} will also strip the "fragment." So at least we are consistent. > RawLocalFs#getFileLinkStatus does not fill in the link owner and mode > --------------------------------------------------------------------- > > Key: HADOOP-9652 > URL: https://issues.apache.org/jira/browse/HADOOP-9652 > Project: Hadoop Common > Issue Type: Bug > Reporter: Colin Patrick McCabe > Assignee: Andrew Wang > Fix For: 2.3.0 > > Attachments: hadoop-9452-1.patch, hadoop-9652-2.patch, > hadoop-9652-3.patch > > > {{RawLocalFs#getFileLinkStatus}} does not actually get the owner and mode of > the symlink, but instead uses the owner and mode of the symlink target. If > the target can't be found, it fills in bogus values (the empty string and > FsPermission.getDefault) for these. > Symlinks have an owner distinct from the owner of the target they point to, > and getFileLinkStatus ought to expose this. > In some operating systems, symlinks can have a permission other than 0777. > We ought to expose this in RawLocalFilesystem and other places, although we > don't necessarily have to support this behavior in HDFS. -- 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