You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2014/11/08 00:40:26 UTC
[1/2] hbase git commit: HBASE-12440 Region may remain offline on
clean startup under certain race condition (Virag Kothari)
Repository: hbase
Updated Branches:
refs/heads/0.98 2d9bb9d34 -> d2eb3cf3f
refs/heads/branch-1 df3ba6ea4 -> 87fb97476
HBASE-12440 Region may remain offline on clean startup under certain race condition (Virag Kothari)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/87fb9747
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/87fb9747
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/87fb9747
Branch: refs/heads/branch-1
Commit: 87fb974765f4241026ef23f2abf4622ba372ffa9
Parents: df3ba6e
Author: Andrew Purtell <ap...@apache.org>
Authored: Fri Nov 7 14:11:56 2014 -0800
Committer: Andrew Purtell <ap...@apache.org>
Committed: Fri Nov 7 14:11:56 2014 -0800
----------------------------------------------------------------------
.../hadoop/hbase/master/AssignmentManager.java | 10 ++-
.../master/handler/ServerShutdownHandler.java | 4 +-
.../master/TestAssignmentManagerOnCluster.java | 73 +++++++++++++++++---
3 files changed, 74 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/87fb9747/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
index 0880134..7ac3d58 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
@@ -1659,6 +1659,10 @@ public class AssignmentManager extends ZooKeeperListener {
getLong("hbase.regionserver.rpc.startup.waittime", 60000);
for (int i = 1; i <= maximumAttempts && !server.isStopped(); i++) {
try {
+ // regionOpenInfos is empty if all regions are in failedToOpenRegions list
+ if (regionOpenInfos.isEmpty()) {
+ break;
+ }
List<RegionOpeningState> regionOpeningStateList = serverManager
.sendRegionOpen(destination, regionOpenInfos);
if (regionOpeningStateList == null) {
@@ -1920,8 +1924,12 @@ public class AssignmentManager extends ZooKeeperListener {
if (useZKForAssignment
&& regionStates.isServerDeadAndNotProcessed(sn)
&& wasRegionOnDeadServerByMeta(region, sn)) {
+ if (!regionStates.isRegionInTransition(region)) {
+ LOG.info("Updating the state to " + State.OFFLINE + " to allow to be reassigned by SSH");
+ regionStates.updateRegionState(region, State.OFFLINE);
+ }
LOG.info("Skip assigning " + region.getRegionNameAsString()
- + ", it is on a dead but not processed yet server: " + sn);
+ + ", it is on a dead but not processed yet server: " + sn);
return null;
}
case CLOSED:
http://git-wip-us.apache.org/repos/asf/hbase/blob/87fb9747/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
index a9399b3..d882106 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
@@ -243,7 +243,7 @@ public class ServerShutdownHandler extends EventHandler {
Lock lock = am.acquireRegionLock(encodedName);
try {
RegionState rit = regionStates.getRegionTransitionState(hri);
- if (processDeadRegion(hri, am)) {
+ if (processDeadRegion(hri, am)) {
ServerName addressFromAM = regionStates.getRegionServerOfRegion(hri);
if (addressFromAM != null && !addressFromAM.equals(this.serverName)) {
// If this region is in transition on the dead server, it must be
@@ -273,7 +273,7 @@ public class ServerShutdownHandler extends EventHandler {
}
toAssignRegions.add(hri);
} else if (rit != null) {
- if (rit.isPendingCloseOrClosing()
+ if ((rit.isPendingCloseOrClosing() || rit.isOffline())
&& am.getTableStateManager().isTableState(hri.getTable(),
ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING)) {
// If the table was partially disabled and the RS went down, we should clear the RIT
http://git-wip-us.apache.org/repos/asf/hbase/blob/87fb9747/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
index 349ce90..1c538e2 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
@@ -81,6 +81,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+
/**
* This tests AssignmentManager with a testing cluster.
*/
@@ -188,7 +189,7 @@ public class TestAssignmentManagerOnCluster {
RegionStates regionStates = am.getRegionStates();
ServerName serverName = regionStates.getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
// Region is assigned now. Let's assign it again.
// Master should not abort, and region should be assigned.
@@ -203,6 +204,58 @@ public class TestAssignmentManagerOnCluster {
}
}
+ // Simulate a scenario where the AssignCallable and SSH are trying to assign a region
+ @Test (timeout=60000)
+ public void testAssignRegionBySSH() throws Exception {
+ if (!conf.getBoolean("hbase.assignment.usezk", true)) {
+ return;
+ }
+ String table = "testAssignRegionBySSH";
+ MyMaster master = (MyMaster) TEST_UTIL.getHBaseCluster().getMaster();
+ try {
+ HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(table));
+ desc.addFamily(new HColumnDescriptor(FAMILY));
+ admin.createTable(desc);
+
+ HTable meta = new HTable(conf, TableName.META_TABLE_NAME);
+ HRegionInfo hri = new HRegionInfo(
+ desc.getTableName(), Bytes.toBytes("A"), Bytes.toBytes("Z"));
+ MetaTableAccessor.addRegionToMeta(meta, hri);
+ // Add some dummy server for the region entry
+ MetaTableAccessor.updateRegionLocation(TEST_UTIL.getHBaseCluster().getMaster().getShortCircuitConnection(), hri,
+ ServerName.valueOf("example.org", 1234, System.currentTimeMillis()), 0);
+ RegionStates regionStates = master.getAssignmentManager().getRegionStates();
+ int i = TEST_UTIL.getHBaseCluster().getServerWithMeta();
+ HRegionServer rs = TEST_UTIL.getHBaseCluster().getRegionServer(i == 0 ? 1 : 0);
+ // Choose a server other than meta to kill
+ ServerName controlledServer = rs.getServerName();
+ master.enableSSH(false);
+ TEST_UTIL.getHBaseCluster().killRegionServer(controlledServer);
+ TEST_UTIL.getHBaseCluster().waitForRegionServerToStop(controlledServer, -1);
+ AssignmentManager am = master.getAssignmentManager();
+
+ // Simulate the AssignCallable trying to assign the region. Have the region in OFFLINE state,
+ // but not in transition and the server is the dead 'controlledServer'
+ regionStates.createRegionState(hri, State.OFFLINE, controlledServer, null);
+ am.assign(hri, true, true);
+ // Region should remain OFFLINE and go to transition
+ assertEquals(State.OFFLINE, regionStates.getRegionState(hri).getState());
+ assertTrue (regionStates.isRegionInTransition(hri));
+
+ master.enableSSH(true);
+ am.waitForAssignment(hri);
+ assertTrue (regionStates.getRegionState(hri).isOpened());
+ ServerName serverName = regionStates.getRegionServerOfRegion(hri);
+ TEST_UTIL.assertRegionOnlyOnServer(hri, serverName, 6000);
+ } finally {
+ if (master != null) {
+ master.enableSSH(true);
+ }
+ TEST_UTIL.deleteTable(Bytes.toBytes(table));
+ TEST_UTIL.getHBaseCluster().startRegionServer();
+ }
+ }
+
/**
* This tests region assignment on a simulated restarted server
*/
@@ -277,7 +330,7 @@ public class TestAssignmentManagerOnCluster {
RegionStates regionStates = TEST_UTIL.getHBaseCluster().
getMaster().getAssignmentManager().getRegionStates();
ServerName serverName = regionStates.getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
admin.offline(hri.getRegionName());
long timeoutTime = System.currentTimeMillis() + 800;
@@ -333,7 +386,7 @@ public class TestAssignmentManagerOnCluster {
while (true) {
ServerName sn = regionStates.getRegionServerOfRegion(hri);
if (sn != null && sn.equals(destServerName)) {
- TEST_UTIL.assertRegionOnServer(hri, sn, 200);
+ TEST_UTIL.assertRegionOnServer(hri, sn, 6000);
break;
}
long now = System.currentTimeMillis();
@@ -511,7 +564,7 @@ public class TestAssignmentManagerOnCluster {
assertTrue(am.waitForAssignment(hri));
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
MyRegionObserver.preCloseEnabled.set(false);
TEST_UTIL.deleteTable(Bytes.toBytes(table));
@@ -552,7 +605,7 @@ public class TestAssignmentManagerOnCluster {
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
MyLoadBalancer.controledRegion = null;
TEST_UTIL.deleteTable(Bytes.toBytes(table));
@@ -602,7 +655,7 @@ public class TestAssignmentManagerOnCluster {
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
TEST_UTIL.deleteTable(table);
}
@@ -634,7 +687,7 @@ public class TestAssignmentManagerOnCluster {
if (ConfigUtil.useZKForAssignment(conf)) {
ZKAssign.createNodeOffline(zkw, hri, destServerName);
ZKAssign.transitionNodeOpening(zkw, hri, destServerName);
-
+
// Wait till the event is processed and the region is in transition
long timeoutTime = System.currentTimeMillis() + 20000;
while (!am.getRegionStates().isRegionInTransition(hri)) {
@@ -705,7 +758,7 @@ public class TestAssignmentManagerOnCluster {
assertTrue(am.waitForAssignment(hri));
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
MyRegionObserver.postCloseEnabled.set(false);
TEST_UTIL.deleteTable(Bytes.toBytes(table));
@@ -1106,7 +1159,7 @@ public class TestAssignmentManagerOnCluster {
cluster.startRegionServer();
}
}
-
+
/**
* Test that region state transition call is idempotent
*/
@@ -1129,7 +1182,7 @@ public class TestAssignmentManagerOnCluster {
RegionStates regionStates = am.getRegionStates();
ServerName serverName = regionStates.getRegionServerOfRegion(hri);
// Assert the the region is actually open on the server
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
// Closing region should just work fine
admin.disableTable(TableName.valueOf(table));
assertTrue(regionStates.isRegionOffline(hri));
[2/2] hbase git commit: HBASE-12440 Region may remain offline on
clean startup under certain race condition (Virag Kothari)
Posted by ap...@apache.org.
HBASE-12440 Region may remain offline on clean startup under certain race condition (Virag Kothari)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d2eb3cf3
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d2eb3cf3
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d2eb3cf3
Branch: refs/heads/0.98
Commit: d2eb3cf3fa4897333f08dc87e6b830cca5d375ad
Parents: 2d9bb9d
Author: Andrew Purtell <ap...@apache.org>
Authored: Fri Nov 7 14:12:13 2014 -0800
Committer: Andrew Purtell <ap...@apache.org>
Committed: Fri Nov 7 14:12:13 2014 -0800
----------------------------------------------------------------------
.../hadoop/hbase/master/AssignmentManager.java | 10 ++-
.../master/handler/ServerShutdownHandler.java | 2 +-
.../master/TestAssignmentManagerOnCluster.java | 73 +++++++++++++++++---
3 files changed, 73 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/d2eb3cf3/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
index 4dff74e..c9ad041 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
@@ -1693,6 +1693,10 @@ public class AssignmentManager extends ZooKeeperListener {
getLong("hbase.regionserver.rpc.startup.waittime", 60000);
for (int i = 1; i <= maximumAttempts && !server.isStopped(); i++) {
try {
+ // regionOpenInfos is empty if all regions are in failedToOpenRegions list
+ if (regionOpenInfos.isEmpty()) {
+ break;
+ }
List<RegionOpeningState> regionOpeningStateList = serverManager
.sendRegionOpen(destination, regionOpenInfos);
if (regionOpeningStateList == null) {
@@ -1956,8 +1960,12 @@ public class AssignmentManager extends ZooKeeperListener {
if (useZKForAssignment
&& regionStates.isServerDeadAndNotProcessed(sn)
&& wasRegionOnDeadServerByMeta(region, sn)) {
+ if (!regionStates.isRegionInTransition(region)) {
+ LOG.info("Updating the state to " + State.OFFLINE + " to allow to be reassigned by SSH");
+ regionStates.updateRegionState(region, State.OFFLINE);
+ }
LOG.info("Skip assigning " + region.getRegionNameAsString()
- + ", it is on a dead but not processed yet server: " + sn);
+ + ", it is on a dead but not processed yet server: " + sn);
return null;
}
case CLOSED:
http://git-wip-us.apache.org/repos/asf/hbase/blob/d2eb3cf3/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
index 5df221c..f103f9e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java
@@ -263,7 +263,7 @@ public class ServerShutdownHandler extends EventHandler {
}
toAssignRegions.add(hri);
} else if (rit != null) {
- if (rit.isPendingCloseOrClosing()
+ if ((rit.isPendingCloseOrClosing() || rit.isOffline())
&& am.getZKTable().isDisablingOrDisabledTable(hri.getTable())) {
// If the table was partially disabled and the RS went down, we should clear the RIT
// and remove the node for the region.
http://git-wip-us.apache.org/repos/asf/hbase/blob/d2eb3cf3/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
index d83269d..a31f125 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManagerOnCluster.java
@@ -73,6 +73,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+
/**
* This tests AssignmentManager with a testing cluster.
*/
@@ -131,7 +132,7 @@ public class TestAssignmentManagerOnCluster {
RegionStates regionStates = am.getRegionStates();
ServerName serverName = regionStates.getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
// Region is assigned now. Let's assign it again.
// Master should not abort, and region should be assigned.
@@ -146,6 +147,58 @@ public class TestAssignmentManagerOnCluster {
}
}
+ // Simulate a scenario where the AssignCallable and SSH are trying to assign a region
+ @Test (timeout=60000)
+ public void testAssignRegionBySSH() throws Exception {
+ if (!conf.getBoolean("hbase.assignment.usezk", true)) {
+ return;
+ }
+ String table = "testAssignRegionBySSH";
+ MyMaster master = (MyMaster) TEST_UTIL.getHBaseCluster().getMaster();
+ try {
+ HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(table));
+ desc.addFamily(new HColumnDescriptor(FAMILY));
+ admin.createTable(desc);
+
+ HTable meta = new HTable(conf, TableName.META_TABLE_NAME);
+ HRegionInfo hri = new HRegionInfo(
+ desc.getTableName(), Bytes.toBytes("A"), Bytes.toBytes("Z"));
+ MetaEditor.addRegionToMeta(meta, hri);
+ // Add some dummy server for the region entry
+ MetaEditor.updateRegionLocation(TEST_UTIL.getHBaseCluster().getMaster().getCatalogTracker(), hri,
+ ServerName.valueOf("example.org", 1234, System.currentTimeMillis()), 0);
+ RegionStates regionStates = master.getAssignmentManager().getRegionStates();
+ int i = TEST_UTIL.getHBaseCluster().getServerWithMeta();
+ HRegionServer rs = TEST_UTIL.getHBaseCluster().getRegionServer(i == 0 ? 1 : 0);
+ // Choose a server other than meta to kill
+ ServerName controlledServer = rs.getServerName();
+ master.enableSSH(false);
+ TEST_UTIL.getHBaseCluster().killRegionServer(controlledServer);
+ TEST_UTIL.getHBaseCluster().waitForRegionServerToStop(controlledServer, -1);
+ AssignmentManager am = master.getAssignmentManager();
+
+ // Simulate the AssignCallable trying to assign the region. Have the region in OFFLINE state,
+ // but not in transition and the server is the dead 'controlledServer'
+ regionStates.createRegionState(hri, State.OFFLINE, controlledServer);
+ am.assign(hri, true, true);
+ // Region should remain in OFFLINE and go to transition
+ assertEquals(State.OFFLINE, regionStates.getRegionState(hri).getState());
+ assertTrue (regionStates.isRegionInTransition(hri));
+
+ master.enableSSH(true);
+ am.waitForAssignment(hri);
+ assertTrue (regionStates.getRegionState(hri).isOpened());
+ ServerName serverName = regionStates.getRegionServerOfRegion(hri);
+ TEST_UTIL.assertRegionOnlyOnServer(hri, serverName, 6000);
+ } finally {
+ if (master != null) {
+ master.enableSSH(true);
+ }
+ TEST_UTIL.deleteTable(Bytes.toBytes(table));
+ TEST_UTIL.getHBaseCluster().startRegionServer();
+ }
+ }
+
/**
* This tests region assignment on a simulated restarted server
*/
@@ -220,7 +273,7 @@ public class TestAssignmentManagerOnCluster {
RegionStates regionStates = TEST_UTIL.getHBaseCluster().
getMaster().getAssignmentManager().getRegionStates();
ServerName serverName = regionStates.getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
admin.offline(hri.getRegionName());
long timeoutTime = System.currentTimeMillis() + 800;
@@ -272,7 +325,7 @@ public class TestAssignmentManagerOnCluster {
while (true) {
ServerName sn = regionStates.getRegionServerOfRegion(hri);
if (sn != null && sn.equals(destServerName)) {
- TEST_UTIL.assertRegionOnServer(hri, sn, 200);
+ TEST_UTIL.assertRegionOnServer(hri, sn, 6000);
break;
}
long now = System.currentTimeMillis();
@@ -450,7 +503,7 @@ public class TestAssignmentManagerOnCluster {
assertTrue(am.waitForAssignment(hri));
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
MyRegionObserver.preCloseEnabled.set(false);
TEST_UTIL.deleteTable(Bytes.toBytes(table));
@@ -491,7 +544,7 @@ public class TestAssignmentManagerOnCluster {
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
MyLoadBalancer.controledRegion = null;
TEST_UTIL.deleteTable(Bytes.toBytes(table));
@@ -541,7 +594,7 @@ public class TestAssignmentManagerOnCluster {
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
TEST_UTIL.deleteTable(table);
}
@@ -573,7 +626,7 @@ public class TestAssignmentManagerOnCluster {
if (ConfigUtil.useZKForAssignment(conf)) {
ZKAssign.createNodeOffline(zkw, hri, destServerName);
ZKAssign.transitionNodeOpening(zkw, hri, destServerName);
-
+
// Wait till the event is processed and the region is in transition
long timeoutTime = System.currentTimeMillis() + 20000;
while (!am.getRegionStates().isRegionInTransition(hri)) {
@@ -644,7 +697,7 @@ public class TestAssignmentManagerOnCluster {
assertTrue(am.waitForAssignment(hri));
ServerName serverName = master.getAssignmentManager().
getRegionStates().getRegionServerOfRegion(hri);
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
} finally {
MyRegionObserver.postCloseEnabled.set(false);
TEST_UTIL.deleteTable(Bytes.toBytes(table));
@@ -836,7 +889,7 @@ public class TestAssignmentManagerOnCluster {
TEST_UTIL.deleteTable(Bytes.toBytes(table));
}
}
-
+
/**
* Test that region state transition call is idempotent
*/
@@ -859,7 +912,7 @@ public class TestAssignmentManagerOnCluster {
RegionStates regionStates = am.getRegionStates();
ServerName serverName = regionStates.getRegionServerOfRegion(hri);
// Assert the the region is actually open on the server
- TEST_UTIL.assertRegionOnServer(hri, serverName, 200);
+ TEST_UTIL.assertRegionOnServer(hri, serverName, 6000);
// Closing region should just work fine
admin.disableTable(TableName.valueOf(table));
assertTrue(regionStates.isRegionOffline(hri));