[ https://issues.apache.org/jira/browse/HBASE-15856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15294566#comment-15294566 ]
Gary Helmling commented on HBASE-15856: --------------------------------------- Looks like this may have broken TestMasterFailover in branch-1 and older. I'm taking a look at it. If I can't come up with a solution tonight, I'll revert from those branches. > Cached Connection instances can wind up with addresses never resolved > --------------------------------------------------------------------- > > Key: HBASE-15856 > URL: https://issues.apache.org/jira/browse/HBASE-15856 > Project: HBase > Issue Type: Bug > Components: Client > Reporter: Gary Helmling > Assignee: Gary Helmling > Priority: Critical > Fix For: 2.0.0, 1.3.0, 1.2.2, 0.98.20, 1.1.6 > > Attachments: HBASE-15856.001.patch, HBASE-15856.002.patch, > HBASE-15856.003.patch > > > During periods where DNS is not working properly, we can wind up caching > connections to master or regionservers where the initial hostname resolution > and the resolution is never re-attempted. This means that clients will > forever get UnknownHostException for any calls. > When constructing a BlockingRpcChannelImplementation, we instantiate the > InetSocketAddress to use for the connection. This instance is then used in > the rpc client connection, where we check isUnresolved() and throw an > UnknownHostException if that returns true. However, at this point the rpc > channel is already cached in the HConnectionImplementation map of stubs. So > at this point it will never be resolved. > Setting the config for hbase.resolve.hostnames.on.failure masks this issue, > since the stub key used is modified to contain the address. However, even in > that case, if DNS fails, an rpc channel instance with unresolved ISA will > still be cached in the stubs under the hostname only key. -- This message was sent by Atlassian JIRA (v6.3.4#6332)