Per Shrijeet on
If you are using an interface anything other than 'default' (literally that keyword) DNS.java's getDefaultHost will return a string which will have a trailing period at the end. It seems javadoc of reverseDns in DNS.java (see below) is conflicting with what that function is actually doing.
It is returning a PTR record while claims it returns a hostname. The PTR record always has period at the end , RFC: http://irbs.net/bog-4.9.5/bog47.html
We make call to DNS.getDefaultHost at more than one places and treat that as actual hostname.
Quoting HRegionServer for example
String machineName = DNS.getDefaultHost(conf.get(
"hbase.regionserver.dns.interface", "default"), conf.get(
We may want to sanitize the string returned from DNS class. Or better we can take a path of overhauling the way we do DNS name matching all over.
While HBase has worked around the issue, we should fix the methods that aren't doing what they've intended.
1. We fix the method. This may be an 'incompatible change'. But I do not know who outside of us uses DNS classes.
2. We fix HDFS's DN at the calling end, cause that is affected by the trailing period in its reporting back to the NN as well (Just affects NN->DN weblinks, non critical).
For 2, we can close this and open a HDFS JIRA.