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

Colin Patrick McCabe commented on HDFS-5513:
--------------------------------------------

bq. This was caused by the attempt to deep-copy in the PBCD Builder. Paths 
normalize the URI upon creation, so the single . simply gets thrown away. There 
doesn't seem to be a way to deep-copy a Path, but at the same time it doesn't 
look like you can mutate a Path either.

I took another look and you are right.  Although the Path does make its URI 
accessible to the outside world, the URI has no methods that could be used to 
mutate it.

Can we merge {{testSingleDotPath}} into another junit test?  It just seems kind 
of like overkill to set up a whole DFSCluster just to see if a PBCE with "." as 
the path can be added and then removed.  It would be nice to keep test 
execution time down.

+1 once that's addressed

> CacheAdmin commands fail when using . as the path
> -------------------------------------------------
>
>                 Key: HDFS-5513
>                 URL: https://issues.apache.org/jira/browse/HDFS-5513
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: caching, tools
>    Affects Versions: 3.0.0
>            Reporter: Stephen Chu
>            Assignee: Andrew Wang
>            Priority: Minor
>         Attachments: hdfs-5513-1.patch, hdfs-5513-2.patch
>
>
> The hdfs CLI commands generally accept "." as a path argument.
> e.g.
> {code}
> hdfs dfs -rm .
> hdfs dfsadmin -allowSnapshot .
> {code}
> I don't think it's very common to use the path "." but the CacheAdmin 
> commands will fail saying that it cannot create a Path from an empty string.
> {code}
> [schu@hdfs-c5-nfs ~]$ hdfs cacheadmin -removeDirectives -path .
> Exception in thread "main" java.lang.IllegalArgumentException: Can not create 
> a Path from an empty string
>       at org.apache.hadoop.fs.Path.checkPathArg(Path.java:127)
>       at org.apache.hadoop.fs.Path.<init>(Path.java:184)
>       at 
> org.apache.hadoop.hdfs.protocol.PathBasedCacheDirective$Builder.<init>(PathBasedCacheDirective.java:66)
>       at 
> org.apache.hadoop.hdfs.DistributedFileSystem.listPathBasedCacheDirectives(DistributedFileSystem.java:1639)
>       at 
> org.apache.hadoop.hdfs.tools.CacheAdmin$RemovePathBasedCacheDirectivesCommand.run(CacheAdmin.java:365)
>       at org.apache.hadoop.hdfs.tools.CacheAdmin.run(CacheAdmin.java:82)
>       at org.apache.hadoop.hdfs.tools.CacheAdmin.main(CacheAdmin.java:87)
> [schu@hdfs-c5-nfs ~]$ hdfs cacheadmin -addDirective -path . -pool schu
> Exception in thread "main" java.lang.IllegalArgumentException: Can not create 
> a Path from an empty string
>       at org.apache.hadoop.fs.Path.checkPathArg(Path.java:127)
>       at org.apache.hadoop.fs.Path.<init>(Path.java:184)
>       at 
> org.apache.hadoop.hdfs.protocol.PathBasedCacheDirective$Builder.<init>(PathBasedCacheDirective.java:66)
>       at 
> org.apache.hadoop.hdfs.DistributedFileSystem.addPathBasedCacheDirective(DistributedFileSystem.java:1598)
>       at 
> org.apache.hadoop.hdfs.tools.CacheAdmin$AddPathBasedCacheDirectiveCommand.run(CacheAdmin.java:180)
>       at org.apache.hadoop.hdfs.tools.CacheAdmin.run(CacheAdmin.java:82)
>       at org.apache.hadoop.hdfs.tools.CacheAdmin.main(CacheAdmin.java:87)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to