You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2013/04/04 01:17:16 UTC

svn commit: r1464233 - /hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java

Author: stack
Date: Wed Apr  3 23:17:16 2013
New Revision: 1464233

URL: http://svn.apache.org/r1464233
Log:
HBASE-7923 force unassign can confirm region online on any RS to get rid of double assignments

Modified:
    hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java

Modified: hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1464233&r1=1464232&r2=1464233&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Wed Apr  3 23:17:16 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);