While testing client timeouts when the HBase is not available we found that even with aggressive settings, it takes the client 10 minutes or more to finally receive an exception.
Part of this is due to nested nested retry loops in locateRegion.

locateRegion will first try to locate the table in meta (which is retried), then it will try to locate the meta table is root (which is also retried).
So for each retry of the meta lookup we retry the root lookup as well.

I have have that avoids locateRegion retrying if it is called from code that already has a retry loop

https://issues.apache.org/jira/browse/HBASE-6326