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

haosdent commented on HDFS-6092:
--------------------------------

[~te...@apache.org] I think add this to HBase is well, but it maybe some trick 
if we add this to HDFS. Because I think we should fix this at the source of 
problem in HDFS.

{code}
   String str = uri.getScheme()+"://"+uri.getAuthority();
    this.uri = URI.create(str);
    if (uri.getPort() == -1) {
      String svcName = this.dfs.getCanonicalServiceName();
      int idx = svcName.indexOf(':');
      if (idx > 0) {
        str = str + svcName.substring(idx);
        this.uri = URI.create(str);
      }
    }
{code}

> DistributedFileSystem#getCanonicalServiceName() and 
> DistributedFileSystem#getUri() may return inconsistent results w.r.t. port
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-6092
>                 URL: https://issues.apache.org/jira/browse/HDFS-6092
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.3.0
>            Reporter: Ted Yu
>         Attachments: haosdent-HDFS-6092.patch, hdfs-6092-v1.txt, 
> hdfs-6092-v2.txt
>
>
> I discovered this when working on HBASE-10717
> Here is sample code to reproduce the problem:
> {code}
>     Path desPath = new Path("hdfs://127.0.0.1/");
>     FileSystem desFs = desPath.getFileSystem(conf);
>     
>     String s = desFs.getCanonicalServiceName();
>     URI uri = desFs.getUri();
> {code}
> Canonical name string contains the default port - 8020
> But uri doesn't contain port.
> This would result in the following exception:
> {code}
> testIsSameHdfs(org.apache.hadoop.hbase.util.TestFSHDFSUtils)  Time elapsed: 
> 0.001 sec  <<< ERROR!
> java.lang.IllegalArgumentException: port out of range:-1
>         at java.net.InetSocketAddress.checkPort(InetSocketAddress.java:143)
>         at java.net.InetSocketAddress.<init>(InetSocketAddress.java:224)
>         at 
> org.apache.hadoop.hbase.util.FSHDFSUtils.getNNAddresses(FSHDFSUtils.java:88)
> {code}
> Thanks to Brando Li who helped debug this.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to