Author: enis
Date: Fri Aug  2 04:42:44 2013
New Revision: 1509539

URL: http://svn.apache.org/r1509539
Log:
HBASE-9085 Integration Tests fails because of bug in teardown phase where the 
cluster state is not being restored properly. (gautam) 

Modified:
    
hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java

Modified: 
hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java?rev=1509539&r1=1509538&r2=1509539&view=diff
==============================================================================
--- 
hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java
 (original)
+++ 
hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/DistributedHBaseCluster.java
 Fri Aug  2 04:42:44 2013
@@ -231,25 +231,25 @@ public class DistributedHBaseCluster ext
 
     //check whether current master has changed
     if (!ServerName.isSameHostnameAndPort(initial.getMaster(), 
current.getMaster())) {
+      LOG.info("Initial active master : " + initial.getMaster().getHostname()
+          + " has changed to : " + current.getMaster().getHostname());
+      // If initial master is stopped, start it, before restoring the state.
+      // It will come up as a backup master, if there is already an active 
master.
+      if (!clusterManager.isRunning(ServiceType.HBASE_MASTER, 
initial.getMaster().getHostname())) {
+        startMaster(initial.getMaster().getHostname());
+      }
+
       //master has changed, we would like to undo this.
       //1. Kill the current backups
       //2. Stop current master
-      //3. Start a master at the initial hostname (if not already running as 
backup)
-      //4. Start backup masters
-      boolean foundOldMaster = false;
+      //3. Start backup masters
       for (ServerName currentBackup : current.getBackupMasters()) {
         if (!ServerName.isSameHostnameAndPort(currentBackup, 
initial.getMaster())) {
           stopMaster(currentBackup);
-        } else {
-          foundOldMaster = true;
         }
       }
       stopMaster(current.getMaster());
-      if (foundOldMaster) { //if initial master is not running as a backup
-        startMaster(initial.getMaster().getHostname());
-      }
       waitForActiveAndReadyMaster(); //wait so that active master takes over
-
       //start backup masters
       for (ServerName backup : initial.getBackupMasters()) {
         //these are not started in backup mode, but we should already have an 
active master
@@ -304,5 +304,16 @@ public class DistributedHBaseCluster ext
         stopRegionServer(currentServers.get(hostname));
       }
     }
+    // While restoring above, if the HBase Master which was initially the 
Active one, was down
+    // and the restore put the cluster back to Initial configuration, HAdmin 
instance will need
+    // to refresh its connections (otherwise it will return incorrect 
information) or we can
+    // point it to new instance.
+    try {
+      admin.close();
+    } catch (IOException ioe) {
+      LOG.info("While closing the old connection", ioe);
+    }
+    this.admin = new HBaseAdmin(conf);
+    LOG.info("Added new HBaseAdmin");
   }
 }


Reply via email to