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

Craig Macdonald updated HADOOP-4368:
------------------------------------

    Attachment: hadoop4368.fsstatus.v4.patch

@Doug: Brian, the original poster, was concerned about lookups from fuse_dfs. 
In actual fact the problem is with libhdfs and also the provision of an 
adequate Java API. In this case, fixing libhdfs as well as the Java API should 
resolve the entire issue.

Attached work-in-progress patch. This attempts to add libhdfs support for 
FsStatus API. If anyone knows JNI, perhaps they can explain why it is calling 
append(Path f, int bufferSize) instead of getStatus()?? I'm mystified.

{noformat}
$  ant -Dcompile.c++=true -Dlibhdfs=true clean compile test-c++-libhdfs
<snip>
     [exec] Exception in thread "main" java.lang.NullPointerException
     [exec]     at 
org.apache.hadoop.hdfs.DistributedFileSystem.checkPath(DistributedFileSystem.java:89)
     [exec]     at 
org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:154)
     [exec]     at 
org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:185)
     [exec]     at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:531)
     [exec] Call to org.apache.hadoop.fs.FsStatus::getCapacity failed!
     [exec] hdfsGetCapacity: -1
     [exec] Exception in thread "main" java.lang.NullPointerException
     [exec]     at 
org.apache.hadoop.hdfs.DistributedFileSystem.checkPath(DistributedFileSystem.java:89)
     [exec]     at 
org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:154)
     [exec]     at 
org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:185)
     [exec]     at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:531)
     [exec] Call to org.apache.hadoop.fs.FsStatus::getUsed failed!
<snip>
{noformat}

> Superuser privileges required to do "df"
> ----------------------------------------
>
>                 Key: HADOOP-4368
>                 URL: https://issues.apache.org/jira/browse/HADOOP-4368
>             Project: Hadoop Core
>          Issue Type: Wish
>          Components: dfs, libhdfs
>    Affects Versions: 0.18.1
>            Reporter: Brian Bockelman
>            Assignee: Craig Macdonald
>            Priority: Minor
>         Attachments: fuse_statfs.patch, fuse_statfs_trunk.patch, 
> hadoop4368.fsstatus.patch, hadoop4368.fsstatus.v2.patch, 
> hadoop4368.fsstatus.v3.patch, hadoop4368.fsstatus.v4.patch
>
>   Original Estimate: 0.17h
>  Remaining Estimate: 0.17h
>
> super user privileges are required in DFS in order to get the file system 
> statistics (FSNamesystem.java, getStats method).  This means that when HDFS 
> is mounted via fuse-dfs as a non-root user, "df" is going to return 
> 16exabytes total and 0 free instead of the correct amount.
> As far as I can tell, there's no need to require super user privileges to see 
> the file system size (and historically in Unix, this is not required).
> To fix this, simply comment out the privilege check in the getStats method.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to