Index: src/java/org/apache/hadoop/hbase/client/HConnectionManager.java =================================================================== --- src/java/org/apache/hadoop/hbase/client/HConnectionManager.java (revision 931737) +++ src/java/org/apache/hadoop/hbase/client/HConnectionManager.java (working copy) @@ -1016,18 +1016,28 @@ HRegionInterface server = getHRegionConnection(rootRegionAddress); // if this works, then we're good, and we have an acceptable address, // so we can stop doing retries and return the result. - server.getRegionInfo(HRegionInfo.ROOT_REGIONINFO.getRegionName()); + HRegionInfo info = getRegionServerForWithoutRetries( + new ServerCallable(this, + ROOT_TABLE_NAME, EMPTY_START_ROW) { + + public HRegionInfo call() throws Exception { + return server.getRegionInfo( + HRegionInfo.ROOT_REGIONINFO.getRegionName()); + } + }); + if (info == null) { + throw new IOException("Can't get root region"); + } if (LOG.isDebugEnabled()) { LOG.debug("Found ROOT at " + rootRegionAddress); } break; } catch (IOException e) { + if (e instanceof DoNotRetryIOException) { + throw e; + } if (tries == numRetries - 1) { // Don't bother sleeping. We've run out of retries. - if (e instanceof RemoteException) { - e = RemoteExceptionHandler.decodeRemoteException( - (RemoteException) e); - } throw e; }