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