Author: tedyu
Date: Thu Sep 15 03:18:47 2011
New Revision: 1170940

URL: http://svn.apache.org/viewvc?rev=1170940&view=rev
Log:
HBASE-4351  If from Admin we try to unassign a region forcefully, though a
               valid region name is given the master is not able to identify 
the region
               to unassign (Ramkrishna)

Modified:
    hbase/branches/0.90/CHANGES.txt
    
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
    
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java
    
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    hbase/branches/0.90/src/main/ruby/shell/commands/unassign.rb

Modified: hbase/branches/0.90/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1170940&r1=1170939&r2=1170940&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Thu Sep 15 03:18:47 2011
@@ -37,6 +37,9 @@ Release 0.90.5 - Unreleased
    HBASE-4270  IOE ignored during flush-on-close causes dataloss
    HBASE-4180  HBase should check the isSecurityEnabled flag before login
    HBASE-4238  CatalogJanitor can clear a daughter that split before 
processing its parent
+   HBASE-4351  If from Admin we try to unassign a region forcefully, though a
+               valid region name is given the master is not able to identify 
the region
+               to unassign (Ramkrishna)
 
   IMPROVEMENT
    HBASE-4205  Enhance HTable javadoc (Eric Charles)

Modified: 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1170940&r1=1170939&r2=1170940&view=diff
==============================================================================
--- 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
 (original)
+++ 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
 Thu Sep 15 03:18:47 2011
@@ -1039,7 +1039,8 @@ public class HBaseAdmin implements Abort
    * @param regionName Region to unassign. Will clear any existing RegionPlan
    * if one found.
    * @param force If true, force unassign (Will remove region from
-   * regions-in-transition too if present).
+   * regions-in-transition too if present. If results in double assignment
+   * use hbck -fix to resolve. To be used by experts).
    * @throws MasterNotRunningException
    * @throws ZooKeeperConnectionException
    * @throws IOException

Modified: 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java?rev=1170940&r1=1170939&r2=1170940&view=diff
==============================================================================
--- 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java
 (original)
+++ 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java
 Thu Sep 15 03:18:47 2011
@@ -167,7 +167,8 @@ public interface HMasterInterface extend
    * @param regionName Region to unassign. Will clear any existing RegionPlan
    * if one found.
    * @param force If true, force unassign (Will remove region from
-   * regions-in-transition too if present).
+   * regions-in-transition too if present) - radical! If results in double
+   * assignment use hbck -fix to resolve.
    * @throws IOException
    */
   public void unassign(final byte [] regionName, final boolean force)
@@ -189,4 +190,4 @@ public interface HMasterInterface extend
    * @return Previous balancer value
    */
   public boolean balanceSwitch(final boolean b);
-}
\ No newline at end of file
+}

Modified: 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1170940&r1=1170939&r2=1170940&view=diff
==============================================================================
--- 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java 
(original)
+++ 
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java 
Thu Sep 15 03:18:47 2011
@@ -1041,8 +1041,12 @@ implements HMasterInterface, HMasterRegi
       MetaReader.getRegion(this.catalogTracker, regionName);
     if (pair == null) throw new 
UnknownRegionException(Bytes.toStringBinary(regionName));
     HRegionInfo hri = pair.getFirst();
-    if (force) this.assignmentManager.clearRegionFromTransition(hri);
-    this.assignmentManager.unassign(hri, force);
+    if (force) {
+      this.assignmentManager.clearRegionFromTransition(hri);
+      assignRegion(hri);
+    } else {
+      this.assignmentManager.unassign(hri, force);
+    }
   }
 
   /**

Modified: hbase/branches/0.90/src/main/ruby/shell/commands/unassign.rb
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/ruby/shell/commands/unassign.rb?rev=1170940&r1=1170939&r2=1170940&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/ruby/shell/commands/unassign.rb (original)
+++ hbase/branches/0.90/src/main/ruby/shell/commands/unassign.rb Thu Sep 15 
03:18:47 2011
@@ -25,8 +25,9 @@ module Shell
         return <<-EOF
 Unassign a region. Unassign will close region in current location and then
 reopen it again.  Pass 'true' to force the unassignment ('force' will clear
-all in-memory state in master before the reassign).  Use with caution.  For
-expert use only.  Examples:
+all in-memory state in master before the reassign. If results in
+double assignment use hbck -fix to resolve. To be used by experts).
+Use with caution.  For expert use only.  Examples:
 
   hbase> unassign 'REGIONNAME'
   hbase> unassign 'REGIONNAME', true


Reply via email to