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

Daryn Sharp commented on HDFS-1788:
-----------------------------------

Very nice! First off, this isn't a HDFS change.  Maybe someone with admin 
powers can move the jira to HADOOP, or close this and repost on HADOOP-6424.  

In general, I'd really like to see {{statReal}} revert to {{stat}}.  That will 
greatly reduce the size of the patch.  Since I'm a unix stalwart, I'd "prefer" 
{{statLink}} be called {{lstat}}.  In either case, it should be a method to 
avoid increasing the load on the NN (see more below).

+FsShell+
* Make sure that renaming {{getFS()}} to {{getFC()}} didn't break {{DFSAdmin}}, 
or {{TestMRCLI}}, etc.
* I think the addition of {{FileContext.processDeleteOnExit()}} to {{close()}} 
may cause problems.  Ex.  What happens if I have temp files open before running 
a FsShell command?  Won't this change cause the files to unexpectedly go "poof"?

+Ls+
* The new {{\-L}} flag is really implementing part of {{\-l}}. {{\-L}} is 
supposed to replace the link with the name & attrs of its target.  It would be 
a nice option, but probably not strictly needed unless you are feeling 
ambitious.  Now might be a good time to make {{\-l}} generate output the way ls 
is REALLY supposed to look.  Otherwise altering the {{\-l}} output in the 
future will be deemed incompatible.  You might consider another jira...

+PathData+
* I'd recommend undoing as much as possible since there reasons why it is the 
way it is, plus it will cause a major merge conflict with my pending PathData 
changes.
* The String ctors need to be restored since Path can mangle the string it is 
given.
* The 3-arg ctor that takes FileStatus must be re-added.  I took great effort 
to reduce the RPC load on the NN, but this patch will undo some of that work 
and generate *2X the stats to the NN*.  
* Always doing the equivalent of stat/lstat on every object is causing *2X the 
stats to the NN*.  Combined with the previous point, this patch is causing *4X 
the stats to the NN* unless there's magic going on deep in the client
* {{lstat}} is used so infrequently it should probably be an on-demand 
{{item.lstat()}} method
* {{refreshStatus}} is expected to throw FNF, but this changes it to ignore it
* If {{FileSystem}} can't be completely eliminated, please remove 
{{fs(Configuration)}} and leave the {{fs}} member intact.  That will also 
greatly reduce the size of the patch, and remove errors that may be caused by 
providing a different config than the one used to originally create the object.

+Tail+
* Changing {{refreshStatus}} to not throw FNF will cause a NPE here.  This is 
one of the reasons {{refreshStatus}} needs to retain original behavior.

+CopyCommands+
* Are you sure {{copyCrcToLocal}} will work now?  The raw fs was needed since 
the actual fs obscures the crc file.  Does {{FileContext}} change that behavior?

+Ln+
* {{Ln}} Shouldn't be in {{CopyCommands}}.  Please move this class into it's 
own file.  
* Should require {{\-s}} to create symbolic links.  If {{\-s}} isn't given, it 
should throw that hardlinks aren't supported -- that way we leave the door open 
to the possibility of hardlinks someday.
* It can't be a {{CommandWithDestination}} or it forces the target of the 
symlink to exist at creation time.  It's completely legit to create a symlink 
that points to a non-existent path.  Also, it should take 1 or 2 args like the 
unix command.  {{processArguments}} is probably the best place to implement it.
* Might consider splitting this off to accelerate the rest being integrated.  
Up to you.

+LocalFileSystem+
* Why expose {{NAME}}?  It doesn't appear to be used.

+FileContext+
* Why add {{fsUri}}?  It doesn't appear to be used.

Overall, great work!  Don't let the length of the review be discouraging.  It's 
a great improvement to the shell!

> FsShell ls: Show symlinks properties
> ------------------------------------
>
>                 Key: HDFS-1788
>                 URL: https://issues.apache.org/jira/browse/HDFS-1788
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: tools
>            Reporter: Jonathan Eagles
>            Assignee: John George
>            Priority: Minor
>         Attachments: HDFS-1788.patch
>
>
> ls FsShell command implementation has been consistent with the linux 
> implementations of ls \-l. With the addition of symlinks, I would expect the 
> ability to show file type 'd' for directory, '\-' for file, and 'l' for 
> symlink. In addition, following the linkname entry for symlinks, I would 
> expect the ability to show "\-> <link target>". In linux, the default is to 
> the the properties of the link and not of the link target. In linux, '-L' 
> option allows for the dereferencing of symlinks to show link target 
> properties, but it is not the default. 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to