Index: src/main/java/org/apache/hadoop/hbase/master/ServerManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (revision 1023172) +++ src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (working copy) @@ -614,6 +614,9 @@ return regionCount; } + /** + * @return A copy of the internal list of online servers. + */ public List getOnlineServersList() { // TODO: optimize the load balancer call so we don't need to make a new list return new ArrayList(onlineServers.values()); Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 1023172) +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -699,7 +699,7 @@ this.regionPlans.remove(state.getRegion().getEncodedName()); // Put in place a new plan and reassign. Calling getRegionPlan will add // a plan if none exists (We removed it in line above). - if (getRegionPlan(state) == null) return; + if (getRegionPlan(state, plan.getDestination()) == null) return; assign(state); } }