Index: src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (revision 98416) +++ src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (working copy) @@ -135,7 +135,16 @@ } // Carrying meta? - if (isCarryingMeta()) this.services.getAssignmentManager().assignMeta(); + if (isCarryingMeta()) { + long timeout = this.server.getConfiguration().getLong("hbase.catalog.verification.timeout", 1000); + try { + if(!this.server.getCatalogTracker().verifyMetaRegionLocation(timeout)) + this.services.getAssignmentManager().assignMeta(); + } catch (InterruptedException e1) { + LOG.warn("Interrupted while verifying meta region's location", e1); + throw new IOException(e1); + } + } // Wait on meta to come online; we need it to progress. // TODO: Best way to hold strictly here? We should build this retry logic