Hadoop DNS.reverseDns() doesn't canonicalize host names, leading to possible
discrepancy in RS hostname vs. Master seen hostname for RS
---------------------------------------------------------------------------------------------------------------------------------------
Key: HBASE-3772
URL: https://issues.apache.org/jira/browse/HBASE-3772
Project: HBase
Issue Type: Bug
Reporter: Gary Helmling
I ran across this issue on a 0.20 based branch, so I'm not sure if this is
still an issue for 0.90+. However, 0.90 and current trunk do still make use of
DNS.getDefaultHost(), so I wanted to open this for discussion.
In 0.20, the problem was:
1. configure hbase-site.xml with hbase.regionserver.dns.interface=xxx
2. IP bound on interface xxx has reverse DNS correctly configured
3. DNS.getDefaultHost() calls DNS.reverseDns() for this IP, which does a JNDI
bind to the DNS provider, returning the *absolute* hostname: host1.my.domain.
4. RS reports startup to master as host1.my.domain.,60020,1234...
5. BaseScanner when scanning .META. sees region assignments as not valid
because the resolved hostname from IP goes through
InetSocketAddress.getHostName() which returns the canonicalized form
(host1.my.domain != host1.my.domain. though they are equivalent)
I know the master <-> RS negotiated hostname has completely changed for 0.90.
So hopefully this is no longer an issue and we can close as invalid and go have
a beer. But given the underlying problem in DNS.getDefaultHost(), I wanted to
confirm this.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira