Arpit Agarwal created HDFS-5275:
-----------------------------------

             Summary: Target port chosen by Hftp/Hsftp for getting delegation 
token may be incorrect
                 Key: HDFS-5275
                 URL: https://issues.apache.org/jira/browse/HDFS-5275
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: security
    Affects Versions: 3.0.0
            Reporter: Arpit Agarwal


The port selection to get the delegation token is confusing. Also the code 
documentation and tests appear to conflict.

The comment in {{HftpFileSystem#getCanonicalServiceName}} seems to indicate 
that the configured secure port should be chosen, ignoring the port from the 
URI.
{code}
  public String getCanonicalServiceName() {
    // unlike other filesystems, hftp's service is the secure port, not the
    // actual port in the uri
    return SecurityUtil.buildTokenService(nnSecureUri).toString();
  }
{code}

However {{TestHftpFileSystem#testHsftpCustomUriPortWithCustomDefaultPorts}} 
tests that the returned port is the one from the URI.
{code}
@Test
public void testHsftpCustomUriPortWithCustomDefaultPorts() throws IOException {
  conf.setInt(DFSConfigKeys.DFS_NAMENODE_HTTPS_PORT_KEY, 456);

  URI uri = URI.create("hsftp://localhost:789";);
  HsftpFileSystem fs = (HsftpFileSystem) FileSystem.get(uri, conf);

  assertEquals(456, fs.getDefaultPort());
  assertEquals(456, fs.getDefaultSecurePort());

  assertEquals(uri, fs.getUri());
  assertEquals(
      "127.0.0.1:789",
      fs.getCanonicalServiceName()
  );
}
{code}

The test still passes because of a confusing overload of getNamenodeSecureAddr 
by HsftpFileSystem.


Either the code needs to be fixed or we should document the behavior.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to