Index: src/java/org/apache/hadoop/hbase/client/HConnectionManager.java =================================================================== --- src/java/org/apache/hadoop/hbase/client/HConnectionManager.java (revision 908628) +++ src/java/org/apache/hadoop/hbase/client/HConnectionManager.java (working copy) @@ -44,6 +44,8 @@ import org.apache.hadoop.hbase.MasterNotRunningException; import org.apache.hadoop.hbase.RemoteExceptionHandler; import org.apache.hadoop.hbase.TableNotFoundException; +import org.apache.hadoop.hbase.NotServingRegionException; +import org.apache.hadoop.hbase.regionserver.WrongRegionException; import org.apache.hadoop.hbase.client.MetaScanner.MetaScannerVisitor; import org.apache.hadoop.hbase.ipc.HBaseRPC; import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion; @@ -735,12 +737,15 @@ this.numRetries + " failed; retrying after sleep of " + getPauseTime(tries) + " because: " + e.getMessage()); } - relocateRegion(parentTable, metaKey); } else { throw e; } + // Only relocate the parent region if necessary + if(!(e instanceof RegionOfflineException || + e instanceof NoServerForRegionException)) { + relocateRegion(parentTable, metaKey); + } } - try{ Thread.sleep(getPauseTime(tries)); } catch (InterruptedException e){