Index: CatalogTracker.java =================================================================== --- hbase-0.90.2/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java (revision 65673) +++ hbase-0.90.2/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java (working copy) @@ -24,15 +24,19 @@ import java.net.ConnectException; import java.net.SocketTimeoutException; import java.net.SocketException; +import java.util.Collection; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hbase.Abortable; +import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HServerAddress; +import org.apache.hadoop.hbase.HServerInfo; import org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException; import org.apache.hadoop.hbase.NotServingRegionException; +import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HConnection; import org.apache.hadoop.hbase.client.RetriesExhaustedException; import org.apache.hadoop.hbase.ipc.HRegionInterface; @@ -282,7 +286,22 @@ if (newLocation == null) { return null; } - HRegionInterface newConnection = getCachedConnection(newLocation); + + HRegionInterface newConnection = null; + try { + newConnection = getCachedConnection(newLocation); + } catch (IOException e) + { + HBaseAdmin admin = new HBaseAdmin(HBaseConfiguration.create()); + Collection servers = admin.getMaster() + .getClusterStatus().getServerInfo(); + for (HServerInfo info : servers) { + newConnection = connection.getHRegionConnection( + info.getServerAddress(), false); + break; + } + } + // HRegionInterface newConnection = getCachedConnection(newLocation); if (verifyRegionLocation(newConnection, this.metaLocation, META_REGION)) { setMetaLocation(newLocation); return newConnection;