Author: stack
Date: Wed Apr 3 23:16:44 2013
New Revision: 1464232
URL: http://svn.apache.org/r1464232
Log:
HBASE-7923 force unassign can confirm region online on any RS to get rid of
double assignments
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1464232&r1=1464231&r2=1464232&view=diff
==============================================================================
---
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
(original)
+++
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
Wed Apr 3 23:16:44 2013
@@ -2267,11 +2267,14 @@ Server {
return urr;
}
}
- if (force) {
- this.assignmentManager.regionOffline(hri);
+ LOG.debug("Close region " + hri.getRegionNameAsString()
+ + " on current location if it is online and reassign.force=" +
force);
+ this.assignmentManager.unassign(hri, force);
+ if (!this.assignmentManager.getRegionStates().isRegionInTransition(hri)
+ && !this.assignmentManager.getRegionStates().isRegionAssigned(hri)) {
+ LOG.debug("Region " + hri.getRegionNameAsString()
+ + " is not online on any region server, reassigning it.");
assignRegion(hri);
- } else {
- this.assignmentManager.unassign(hri, force);
}
if (cpHost != null) {
cpHost.postUnassign(hri, force);