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;
-    }
   }
 }