You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2011/12/07 23:57:36 UTC
svn commit: r1211694 - in /hbase/branches/0.92: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java
Author: tedyu
Date: Wed Dec 7 22:57:35 2011
New Revision: 1211694
URL: http://svn.apache.org/viewvc?rev=1211694&view=rev
Log:
HBASE-4610 Port HBASE-3380 (Master failover can split logs of live servers) to 92/trunk
Modified:
hbase/branches/0.92/CHANGES.txt
hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java
Modified: hbase/branches/0.92/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/CHANGES.txt?rev=1211694&r1=1211693&r2=1211694&view=diff
==============================================================================
--- hbase/branches/0.92/CHANGES.txt (original)
+++ hbase/branches/0.92/CHANGES.txt Wed Dec 7 22:57:35 2011
@@ -460,6 +460,7 @@ Release 0.92.0 - Unreleased
HBASE-4945 NPE in HRegion.bulkLoadHFiles (Andrew P and Lars H)
HBASE-4942 HMaster is unable to start of HFile V1 is used (honghua Zhu)
HBASE-4860 RegionSplitter Should Allow NSFRE during logical split verification
+ HBASE-4610 Port HBASE-3380 (Master failover can split logs of live servers) to 92/trunk
TESTS
HBASE-4492 TestRollingRestart fails intermittently
Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=1211694&r1=1211693&r2=1211694&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java Wed Dec 7 22:57:35 2011
@@ -503,16 +503,34 @@ public class ServerManager {
public void waitForRegionServers(MonitoredTask status)
throws InterruptedException {
long interval = this.master.getConfiguration().
- getLong("hbase.master.wait.on.regionservers.interval", 3000);
+ getLong("hbase.master.wait.on.regionservers.interval", 1500);
+ long timeout = this.master.getConfiguration().
+ getLong("hbase.master.wait.on.regionservers.timeout", 4500);
+ int minToStart = this.master.getConfiguration().
+ getInt("hbase.master.wait.on.regionservers.mintostart", 1);
+ int maxToStart = this.master.getConfiguration().
+ getInt("hbase.master.wait.on.regionservers.maxtostart", Integer.MAX_VALUE);
// So, number of regionservers > 0 and its been n since last check in, break,
// else just stall here
int count = 0;
+ long slept = 0;
for (int oldcount = countOfRegionServers(); !this.master.isStopped();) {
Thread.sleep(interval);
+ slept += interval;
count = countOfRegionServers();
if (count == oldcount && count > 0) break;
String msg;
+ if (count == oldcount && count >= minToStart && slept >= timeout) {
+ LOG.info("Finished waiting for regionserver count to settle; " +
+ "count=" + count + ", sleptFor=" + slept);
+ break;
+ }
+ if (count >= maxToStart) {
+ LOG.info("At least the max configured number of regionserver(s) have " +
+ "checked in: " + count);
+ break;
+ }
if (count == 0) {
msg = "Waiting on regionserver(s) to checkin";
} else {
Modified: hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java?rev=1211694&r1=1211693&r2=1211694&view=diff
==============================================================================
--- hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java (original)
+++ hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestMasterFailover.java Wed Dec 7 22:57:35 2011
@@ -75,8 +75,13 @@ public class TestMasterFailover {
final int NUM_MASTERS = 3;
final int NUM_RS = 3;
+ // Create config to use for this cluster
+ Configuration conf = HBaseConfiguration.create();
+ conf.setInt("hbase.master.wait.on.regionservers.mintostart", 3);
+ conf.setInt("hbase.master.wait.on.regionservers.maxtostart", 3);
+
// Start the cluster
- HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
+ HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(conf);
TEST_UTIL.startMiniCluster(NUM_MASTERS, NUM_RS);
MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
@@ -304,6 +309,8 @@ public class TestMasterFailover {
// Need to drop the timeout much lower
conf.setInt("hbase.master.assignment.timeoutmonitor.period", 2000);
conf.setInt("hbase.master.assignment.timeoutmonitor.timeout", 4000);
+ conf.setInt("hbase.master.wait.on.regionservers.mintostart", 3);
+ conf.setInt("hbase.master.wait.on.regionservers.maxtostart", 3);
// Start the cluster
HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(conf);
@@ -602,6 +609,8 @@ public class TestMasterFailover {
// Need to drop the timeout much lower
conf.setInt("hbase.master.assignment.timeoutmonitor.period", 2000);
conf.setInt("hbase.master.assignment.timeoutmonitor.timeout", 4000);
+ conf.setInt("hbase.master.wait.on.regionservers.mintostart", 1);
+ conf.setInt("hbase.master.wait.on.regionservers.maxtostart", 2);
// Create and start the cluster
HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(conf);