Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 1143674) +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -882,9 +882,15 @@ ServerName oldSn = this.regions.get(regionInfo); if (oldSn != null) LOG.warn("Overwriting " + regionInfo.getEncodedName() + " on " + oldSn + " with " + sn); - this.regions.put(regionInfo, sn); - addToServers(sn, regionInfo); - this.regions.notifyAll(); + + if (isServerOnline(sn)) { + this.regions.put(regionInfo, sn); + addToServers(sn, regionInfo); + this.regions.notifyAll(); + } else { + LOG.info("The server is not in online servers, ServerName=" + + sn.getServerName() + ", region=" + regionInfo.getEncodedName()); + } } // Remove plan if one. clearRegionPlan(regionInfo); @@ -2364,4 +2370,11 @@ public void stop() { this.timeoutMonitor.interrupt(); } + + /** + * Check whether the RegionServer is online. + */ + public boolean isServerOnline(ServerName serverName) { + return this.serverManager.isServerOnline(serverName); + } }