diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java index 11bddbb..27c72b7 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionStates.java @@ -514,8 +514,13 @@ public class RegionStates { // It could be in failed_close state too if tried several times // to open it while the server is not reachable. if (state.isPendingOpenOrOpening() || state.isFailedClose() || state.isOffline()) { - LOG.info("Found region in " + state + " to be reassigned by SSH for " + sn); + LOG.info("Found region in " + state + " to be reassigned by SSH for " + sn + + " and its last assignment info is cleared."); rits.add(hri); + // In SSH, we need to reset last assignment state because + // 1) Those RITs indeed aren't assigned anywhere + // 2) They'll be skipped by regionStates.wasRegionOnDeadServer in SSH region assignment + this.lastAssignments.remove(hri.getEncodedName()); } else { LOG.warn("THIS SHOULD NOT HAPPEN: unexpected " + state); }