Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 10400) +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -1588,8 +1588,14 @@ // Remove this server from map of servers to regions, and remove all regions // of this server from online map of regions. Set deadRegions = null; + List rits = new ArrayList(); synchronized (this.regions) { - deadRegions = new TreeSet(this.servers.remove(hsi)); + List assignedRegions = this.servers.remove(hsi); + if (assignedRegions == null || assignedRegions.isEmpty()) { + // No regions on this server, we are done, return empty list of RITs + return rits; + } + deadRegions = new TreeSet(assignedRegions); for (HRegionInfo region : deadRegions) { this.regions.remove(region); } @@ -1597,7 +1603,6 @@ // See if any of the regions that were online on this server were in RIT // If they are, normal timeouts will deal with them appropriately so // let's skip a manual re-assignment. - List rits = new ArrayList(); synchronized (regionsInTransition) { for (RegionState region : this.regionsInTransition.values()) { if (deadRegions.remove(region.getRegion())) {