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 "Eli Collins (JIRA)" <ji...@apache.org> on 2009/12/16 00:01:19 UTC
[jira] Created: (HADOOP-6442) Better FileContext getFSoPath comment
Better FileContext getFSoPath comment
-------------------------------------
Key: HADOOP-6442
URL: https://issues.apache.org/jira/browse/HADOOP-6442
Project: Hadoop Common
Issue Type: Bug
Reporter: Eli Collins
The getFSofPath method in FileContext returns a subclass of AbstractFileSystem that matches the scheme of the given path (eg maps "hdfs" -> class Hdfs). However the "file" scheme (eg "file:///xxx") maps to multiple classes:
{noformat}
AbstractFileSystem
-> DelegateToFileSystem -> RawLocalFs
-> RawLocalFileSystem
-> FilterFs -> ChecksumFs -> LocalFs
{noformat}
eg "file:/f" may have been created using RawLocalFileSystem but getFSofPath returns an instance of LocalFs because core-default.xml maps
"fs.AbstractFileSystem.*file*.impl" to "LocalFs". The current API can lead to surprises, eg trying to delete (using FileContext) a file created using RawLocalFs doesn't use the appropriate delete method because getFSoPath returns a LocalFs and so the delete method in ChecksumFs is used. The latter doesn't delete dangling symlinks like the former which is how I noticed. There could be other bugs, eg looking for checksums for a file that wasn't created with ChecksumFs. Is there any reason to not unify local file systems under a single path in the class hierarchy? Either way we should doc this behavior in a comment in getFSofPath.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.