DNS#getHosts() fallback leads to mix of network-interface addresse in case 
reverse lookup fails
-----------------------------------------------------------------------------------------------

                 Key: HADOOP-6797
                 URL: https://issues.apache.org/jira/browse/HADOOP-6797
             Project: Hadoop Common
          Issue Type: Bug
    Affects Versions: 0.20.2
            Reporter: Johannes Zillmann


org.apache.hadoop.net.DNS#getHosts():
{noformat}
public static String[] getHosts(String strInterface, String nameserver)
    throws UnknownHostException {
    String[] ips = getIPs(strInterface);
    Vector<String> hosts = new Vector<String>();
    for (int ctr = 0; ctr < ips.length; ctr++)
      try {
        hosts.add(reverseDns(InetAddress.getByName(ips[ctr]),
                             nameserver));
      } catch (Exception e) {
      }

    if (hosts.size() == 0)
      return new String[] { InetAddress.getLocalHost().getCanonicalHostName() };
    else
      return hosts.toArray(new String[] {});
  }
{noformat}

I have the situation where i choosing eth1 as network interface 
(fs.datanode.dns.interface and mapred.tasktracker.dns.interface) which is the 
internal interface.
The reverse lookup fails for eth1 so the fallback:
{noformat}
    if (hosts.size() == 0)
      return new String[] { InetAddress.getLocalHost().getCanonicalHostName() };
{noformat}
comes to action. The dns of eth0 is returned which is the external interface.

This leads in my case to a combination of internal ip and external dns as the 
default ip/host.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to