Index: src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 1554334) +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -3977,7 +3977,8 @@ @Override public boolean removeFromRegionsInTransition(final HRegionInfo hri) { - return this.regionsInTransitionInRS.remove(hri.getEncodedNameAsBytes()); + Boolean res = this.regionsInTransitionInRS.remove(hri.getEncodedNameAsBytes()); + return res != null && res.booleanValue(); } @Override Index: src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java (revision 1554334) +++ src/main/java/org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.java (working copy) @@ -100,6 +100,7 @@ // processing needs to do a close as part of cleanup. region = openRegion(); if (region == null) { + this.rsServices.removeFromRegionsInTransition(this.regionInfo); tryTransitionToFailedOpen(regionInfo); transitionToFailedOpen = true; return; @@ -112,6 +113,7 @@ } if (failed || this.server.isStopped() || this.rsServices.isStopping()) { + this.rsServices.removeFromRegionsInTransition(this.regionInfo); cleanupFailedOpen(region); tryTransitionToFailedOpen(regionInfo); transitionToFailedOpen = true;