You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jx...@apache.org on 2013/10/16 04:47:25 UTC
svn commit: r1532634 - in /hbase/branches/0.96/hbase-server/src:
main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
Author: jxiang
Date: Wed Oct 16 02:47:25 2013
New Revision: 1532634
URL: http://svn.apache.org/r1532634
Log:
HBASE-9773 Master aborted when hbck asked the master to assign a region that was already online
Modified:
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
Modified: hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1532634&r1=1532633&r2=1532634&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Wed Oct 16 02:47:25 2013
@@ -1684,6 +1684,9 @@ public class AssignmentManager extends Z
versionOfClosingNode, dest, transitionInZK)) {
LOG.debug("Sent CLOSE to " + server + " for region " +
region.getRegionNameAsString());
+ if (!transitionInZK && state != null) {
+ regionOffline(region);
+ }
return;
}
// This never happens. Currently regionserver close always return true.
Modified: hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java?rev=1532634&r1=1532633&r2=1532634&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java (original)
+++ hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java Wed Oct 16 02:47:25 2013
@@ -112,11 +112,21 @@ public class TestAssignmentManagerOnClus
HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
master.assignRegion(hri);
- master.getAssignmentManager().waitForAssignment(hri);
+ AssignmentManager am = master.getAssignmentManager();
+ am.waitForAssignment(hri);
- ServerName serverName = master.getAssignmentManager().
- getRegionStates().getRegionServerOfRegion(hri);
+ RegionStates regionStates = am.getRegionStates();
+ ServerName serverName = regionStates.getRegionServerOfRegion(hri);
TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+
+ // Region is assigned now. Let's assign it again.
+ // Master should not abort, and region should be assigned.
+ RegionState oldState = regionStates.getRegionState(hri);
+ TEST_UTIL.getHBaseAdmin().assign(hri.getRegionName());
+ master.getAssignmentManager().waitForAssignment(hri);
+ RegionState newState = regionStates.getRegionState(hri);
+ assertTrue(newState.isOpened()
+ && newState.getStamp() != oldState.getStamp());
} finally {
TEST_UTIL.deleteTable(Bytes.toBytes(table));
}