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

Siyao Meng commented on HADOOP-16082:
-------------------------------------

[~ste...@apache.org] Thanks for the comment.
Yeah I'm also feeling that a new property in FileStatus could break (a bunch 
of) things.
I could override toString() in class HdfsLocatedFileStatus and insert 
HDFS-specific fields like this:
{code:java|title=HdfsLocatedFileStatus#toString()}
  @Override
  public String toString() {
    String res = super.toString();
    StringBuilder sb = new StringBuilder();
    sb.append(res.substring(0, res.length() - 1));
    sb.append("; fileId=" + fileId);
    sb.append(res.substring(res.length() - 1));
    return sb.toString();
  }
{code}
It works but this seems more like a hack.

[~ajisakaa] Thanks for the suggestion. but the point is it still won't allow me 
to easily access *fileId* property as long as FileStatus doesn't expose it, 
since *fileId* is internal to HdfsLocatedFileStatus:
{code:java|title=./hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Stat.java#processPath}
  @Override
  protected void processPath(PathData item) throws IOException {
    FileStatus stat = item.stat;
...
{code}

> FsShell ls: Add option -i to print inode id
> -------------------------------------------
>
>                 Key: HADOOP-16082
>                 URL: https://issues.apache.org/jira/browse/HADOOP-16082
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: common
>    Affects Versions: 3.2.0, 3.1.1
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>         Attachments: HADOOP-16082.001.patch
>
>
> When debugging the FSImage corruption issue, I often need to know a file's or 
> directory's inode id. At this moment, the only way to do that is to use OIV 
> tool to dump the FSImage and look up the filename, which is very inefficient.
> Here I propose adding option "-i" in FsShell that prints files' or 
> directories' inode id.
> h2. Implementation
> h3. For hdfs:// (HDFS)
> fileId exists in HdfsLocatedFileStatus, which is already returned to 
> hdfs-client. We just need to print it in Ls#processPath().
> h3. For file:// (Local FS)
> h4. Linux
> Use java.nio.
> h4. Windows
> Windows has the concept of "File ID" which is similar to inode id. It is 
> unique in NTFS and ReFS.
> h3. For other FS
> The fileId entry will be "0" in FileStatus if it is not set. We could either 
> ignore or throw an exception.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to