You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jm...@apache.org on 2012/04/06 18:35:27 UTC
svn commit: r1310456 - in /hbase/branches/0.90: ./
src/main/java/org/apache/hadoop/hbase/master/
src/test/java/org/apache/hadoop/hbase/master/
Author: jmhsieh
Date: Fri Apr 6 16:35:26 2012
New Revision: 1310456
URL: http://svn.apache.org/viewvc?rev=1310456&view=rev
Log:
Revert 'HBASE-5213 "hbase master stop" does not bring down backup masters' due to hanging TestLogRolling
Removed:
hbase/branches/0.90/src/test/java/org/apache/hadoop/hbase/master/TestMasterShutdown.java
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
hbase/branches/0.90/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java
Modified: hbase/branches/0.90/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1310456&r1=1310455&r2=1310456&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Fri Apr 6 16:35:26 2012
@@ -12,7 +12,6 @@ Release 0.90.7 - Unreleased
HBASE-5615 The master never does balance because of balancing the parent region (Xufeng)
HBASE-5637 Fix failing 0.90 TestHMsg testcase introduced by HBASE-5563
HBASE-5638 Backport HBASE-5633: NPE reading ZK config in HBase (Matteo Bertozzi)
- HBASE-5213 "hbase master stop" does not bring down backup masters (Gregory)
HBASE-5724 Row cache of KeyValue should be cleared in readFields().
(Teruyoshi Zenmyo)
HBASE-5680 Improve compatibility warning about HBase with Hadoop 0.23.x
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java?rev=1310456&r1=1310455&r2=1310456&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java Fri Apr 6 16:35:26 2012
@@ -29,7 +29,6 @@ import org.apache.hadoop.hbase.zookeeper
import org.apache.hadoop.hbase.zookeeper.ZooKeeperListener;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
import org.apache.zookeeper.KeeperException;
-import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker;
/**
* Handles everything on master-side related to master election.
@@ -119,8 +118,7 @@ class ActiveMasterManager extends ZooKee
* master was running or if some other problem (zookeeper, stop flag has been
* set on this Master)
*/
- boolean blockUntilBecomingActiveMaster(
- ClusterStatusTracker clusterStatusTracker) {
+ boolean blockUntilBecomingActiveMaster() {
boolean cleanSetOfActiveMaster = true;
// Try to become the active master, watch if there is another master
try {
@@ -160,14 +158,11 @@ class ActiveMasterManager extends ZooKee
LOG.debug("Interrupted waiting for master to die", e);
}
}
- if (!clusterStatusTracker.isClusterUp()) {
- this.master.stop("Cluster went down before this master became active");
- }
if (this.master.isStopped()) {
return cleanSetOfActiveMaster;
}
// Try to become active master again now that there is no active master
- blockUntilBecomingActiveMaster(clusterStatusTracker);
+ blockUntilBecomingActiveMaster();
}
return cleanSetOfActiveMaster;
}
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=1310456&r1=1310455&r2=1310456&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 Fri Apr 6 16:35:26 2012
@@ -275,15 +275,7 @@ implements HMasterInterface, HMasterRegi
this.activeMasterManager = new ActiveMasterManager(zooKeeper, address, this);
this.zooKeeper.registerListener(activeMasterManager);
stallIfBackupMaster(this.conf, this.activeMasterManager);
-
- // The ClusterStatusTracker is setup before the other
- // ZKBasedSystemTrackers because it's needed by the activeMasterManager
- // to check if the cluster should be shutdown.
- this.clusterStatusTracker = new ClusterStatusTracker(getZooKeeper(), this);
- this.clusterStatusTracker.start();
- this.activeMasterManager.blockUntilBecomingActiveMaster(
- this.clusterStatusTracker);
-
+ this.activeMasterManager.blockUntilBecomingActiveMaster();
// We are either the active master or we were asked to shutdown
if (!this.stopped) {
finishInitialization();
@@ -379,6 +371,8 @@ implements HMasterInterface, HMasterRegi
// Set the cluster as up. If new RSs, they'll be waiting on this before
// going ahead with their startup.
+ this.clusterStatusTracker = new ClusterStatusTracker(getZooKeeper(), this);
+ this.clusterStatusTracker.start();
boolean wasUp = this.clusterStatusTracker.isClusterUp();
if (!wasUp) this.clusterStatusTracker.setClusterUp();
Modified: hbase/branches/0.90/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java?rev=1310456&r1=1310455&r2=1310456&view=diff
==============================================================================
--- hbase/branches/0.90/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java (original)
+++ hbase/branches/0.90/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java Fri Apr 6 16:35:26 2012
@@ -36,7 +36,6 @@ import org.apache.hadoop.hbase.catalog.C
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperListener;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
-import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker;
import org.apache.zookeeper.KeeperException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -65,32 +64,29 @@ public class TestActiveMasterManager {
ZKUtil.createAndFailSilent(zk, zk.baseZNode);
try {
ZKUtil.deleteNode(zk, zk.masterAddressZNode);
- ZKUtil.deleteNode(zk, zk.clusterStateZNode);
} catch(KeeperException.NoNodeException nne) {}
// Create the master node with a dummy address
HServerAddress master = new HServerAddress("localhost", 1);
// Should not have a master yet
- DummyMaster dummyMaster = new DummyMaster(zk,master);
- ClusterStatusTracker clusterStatusTracker =
- dummyMaster.getClusterStatusTracker();
- ActiveMasterManager activeMasterManager =
- dummyMaster.getActiveMasterManager();
+ DummyMaster dummyMaster = new DummyMaster();
+ ActiveMasterManager activeMasterManager = new ActiveMasterManager(zk,
+ master, dummyMaster);
+ zk.registerListener(activeMasterManager);
assertFalse(activeMasterManager.clusterHasActiveMaster.get());
// First test becoming the active master uninterrupted
- clusterStatusTracker.setClusterUp();
-
- activeMasterManager.blockUntilBecomingActiveMaster(clusterStatusTracker);
+ activeMasterManager.blockUntilBecomingActiveMaster();
assertTrue(activeMasterManager.clusterHasActiveMaster.get());
assertMaster(zk, master);
// Now pretend master restart
- DummyMaster secondDummyMaster = new DummyMaster(zk,master);
- ActiveMasterManager secondActiveMasterManager =
- secondDummyMaster.getActiveMasterManager();
+ DummyMaster secondDummyMaster = new DummyMaster();
+ ActiveMasterManager secondActiveMasterManager = new ActiveMasterManager(zk,
+ master, secondDummyMaster);
+ zk.registerListener(secondActiveMasterManager);
assertFalse(secondActiveMasterManager.clusterHasActiveMaster.get());
- activeMasterManager.blockUntilBecomingActiveMaster(clusterStatusTracker);
+ activeMasterManager.blockUntilBecomingActiveMaster();
assertTrue(activeMasterManager.clusterHasActiveMaster.get());
assertMaster(zk, master);
}
@@ -107,7 +103,6 @@ public class TestActiveMasterManager {
ZKUtil.createAndFailSilent(zk, zk.baseZNode);
try {
ZKUtil.deleteNode(zk, zk.masterAddressZNode);
- ZKUtil.deleteNode(zk, zk.clusterStateZNode);
} catch(KeeperException.NoNodeException nne) {}
// Create the master node with a dummy address
@@ -115,21 +110,20 @@ public class TestActiveMasterManager {
HServerAddress secondMasterAddress = new HServerAddress("localhost", 2);
// Should not have a master yet
- DummyMaster ms1 = new DummyMaster(zk,firstMasterAddress);
- ActiveMasterManager activeMasterManager =
- ms1.getActiveMasterManager();
+ DummyMaster ms1 = new DummyMaster();
+ ActiveMasterManager activeMasterManager = new ActiveMasterManager(zk,
+ firstMasterAddress, ms1);
+ zk.registerListener(activeMasterManager);
assertFalse(activeMasterManager.clusterHasActiveMaster.get());
// First test becoming the active master uninterrupted
- ClusterStatusTracker clusterStatusTracker =
- ms1.getClusterStatusTracker();
- clusterStatusTracker.setClusterUp();
- activeMasterManager.blockUntilBecomingActiveMaster(clusterStatusTracker);
+ activeMasterManager.blockUntilBecomingActiveMaster();
assertTrue(activeMasterManager.clusterHasActiveMaster.get());
assertMaster(zk, firstMasterAddress);
// New manager will now try to become the active master in another thread
WaitToBeMasterThread t = new WaitToBeMasterThread(zk, secondMasterAddress);
+ zk.registerListener(t.manager);
t.start();
// Wait for this guy to figure out there is another active master
// Wait for 1 second at most
@@ -192,20 +186,18 @@ public class TestActiveMasterManager {
public static class WaitToBeMasterThread extends Thread {
ActiveMasterManager manager;
- DummyMaster dummyMaster;
boolean isActiveMaster;
public WaitToBeMasterThread(ZooKeeperWatcher zk,
HServerAddress address) {
- this.dummyMaster = new DummyMaster(zk,address);
- this.manager = this.dummyMaster.getActiveMasterManager();
+ this.manager = new ActiveMasterManager(zk, address,
+ new DummyMaster());
isActiveMaster = false;
}
@Override
public void run() {
- manager.blockUntilBecomingActiveMaster(
- this.dummyMaster.getClusterStatusTracker());
+ manager.blockUntilBecomingActiveMaster();
LOG.info("Second master has become the active master!");
isActiveMaster = true;
}
@@ -241,18 +233,6 @@ public class TestActiveMasterManager {
*/
public static class DummyMaster implements Server {
private volatile boolean stopped;
- private ClusterStatusTracker clusterStatusTracker;
- private ActiveMasterManager activeMasterManager;
-
- public DummyMaster(ZooKeeperWatcher zk, HServerAddress master) {
- this.clusterStatusTracker =
- new ClusterStatusTracker(zk, this);
- clusterStatusTracker.start();
-
- this.activeMasterManager =
- new ActiveMasterManager(zk, master, this);
- zk.registerListener(activeMasterManager);
- }
@Override
public void abort(final String msg, final Throwable t) {}
@@ -286,13 +266,5 @@ public class TestActiveMasterManager {
public CatalogTracker getCatalogTracker() {
return null;
}
-
- public ClusterStatusTracker getClusterStatusTracker() {
- return clusterStatusTracker;
- }
-
- public ActiveMasterManager getActiveMasterManager() {
- return activeMasterManager;
- }
}
}