You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jg...@apache.org on 2010/08/05 09:35:02 UTC
svn commit: r982489 [7/7] - in /hbase/branches/0.90_master_rewrite: ./
src/main/java/org/apache/hadoop/hbase/
src/main/java/org/apache/hadoop/hbase/catalog/
src/main/java/org/apache/hadoop/hbase/client/
src/main/java/org/apache/hadoop/hbase/executor/ s...
Modified: hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java?rev=982489&r1=982488&r2=982489&view=diff
==============================================================================
--- hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java (original)
+++ hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java Thu Aug 5 07:35:00 2010
@@ -23,16 +23,15 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.MiniHBaseCluster;
-import org.apache.hadoop.hbase.HMsg;
-import org.apache.hadoop.hbase.HServerInfo;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HServerAddress;
+import org.apache.hadoop.hbase.catalog.MetaReader;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.executor.HBaseEventHandler;
-import org.apache.hadoop.hbase.executor.HBaseEventHandler.HBaseEventHandlerListener;
-import org.apache.hadoop.hbase.executor.HBaseEventHandler.HBaseEventType;
+import org.apache.hadoop.hbase.executor.EventHandler;
+import org.apache.hadoop.hbase.executor.EventHandler.EventHandlerListener;
+import org.apache.hadoop.hbase.executor.EventHandler.EventType;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;
@@ -76,7 +75,8 @@ public class TestMaster {
TEST_UTIL.loadTable(new HTable(TABLENAME), FAMILYNAME);
List<Pair<HRegionInfo, HServerAddress>> tableRegions =
- m.getTableRegions(TABLENAME);
+ MetaReader.getTableRegionsAndLocations(m.getCatalogTracker(),
+ Bytes.toString(TABLENAME));
LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions));
assertEquals(1, tableRegions.size());
assertArrayEquals(HConstants.EMPTY_START_ROW,
@@ -85,11 +85,11 @@ public class TestMaster {
tableRegions.get(0).getFirst().getEndKey());
// Now trigger a split and stop when the split is in progress
-
+
CountDownLatch aboutToOpen = new CountDownLatch(1);
CountDownLatch proceed = new CountDownLatch(1);
RegionOpenListener list = new RegionOpenListener(aboutToOpen, proceed);
- HBaseEventHandler.registerListener(list);
+ EventHandler.registerListener(list);
LOG.info("Splitting table");
admin.split(TABLENAME);
@@ -97,7 +97,9 @@ public class TestMaster {
aboutToOpen.await(60, TimeUnit.SECONDS);
try {
LOG.info("Making sure we can call getTableRegions while opening");
- tableRegions = m.getTableRegions(TABLENAME);
+ tableRegions = MetaReader.getTableRegionsAndLocations(
+ m.getCatalogTracker(), Bytes.toString(TABLENAME));
+
LOG.info("Regions: " + Joiner.on(',').join(tableRegions));
// We have three regions because one is split-in-progress
assertEquals(3, tableRegions.size());
@@ -105,14 +107,16 @@ public class TestMaster {
Pair<HRegionInfo,HServerAddress> pair =
m.getTableRegionForRow(TABLENAME, Bytes.toBytes("cde"));
LOG.info("Result is: " + pair);
- Pair<HRegionInfo, HServerAddress> tableRegionFromName = m.getTableRegionFromName(pair.getFirst().getRegionName());
+ Pair<HRegionInfo, HServerAddress> tableRegionFromName =
+ MetaReader.getRegion(m.getCatalogTracker(),
+ pair.getFirst().getRegionName());
assertEquals(tableRegionFromName.getFirst(), pair.getFirst());
} finally {
proceed.countDown();
}
}
- static class RegionOpenListener implements HBaseEventHandlerListener {
+ static class RegionOpenListener implements EventHandlerListener {
CountDownLatch aboutToOpen, proceed;
public RegionOpenListener(CountDownLatch aboutToOpen, CountDownLatch proceed)
@@ -122,8 +126,8 @@ public class TestMaster {
}
@Override
- public void afterProcess(HBaseEventHandler event) {
- if (event.getHBEvent() != HBaseEventType.RS2ZK_REGION_OPENED) {
+ public void afterProcess(EventHandler event) {
+ if (event.getEventType() != EventType.RS2ZK_REGION_OPENED) {
return;
}
try {
@@ -136,7 +140,7 @@ public class TestMaster {
}
@Override
- public void beforeProcess(HBaseEventHandler event) {
+ public void beforeProcess(EventHandler event) {
}
}
Modified: hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java?rev=982489&r1=982488&r2=982489&view=diff
==============================================================================
--- hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java (original)
+++ hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java Thu Aug 5 07:35:00 2010
@@ -19,6 +19,8 @@
*/
package org.apache.hadoop.hbase.master;
+import static org.junit.Assert.assertTrue;
+
import java.io.IOException;
import org.apache.commons.logging.Log;
@@ -27,7 +29,8 @@ import org.apache.hadoop.conf.Configurat
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.executor.HBaseEventHandler.HBaseEventType;
+import org.apache.hadoop.hbase.TableExistsException;
+import org.apache.hadoop.hbase.executor.EventHandler.EventType;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.zookeeper.ZKAssign;
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
@@ -45,18 +48,68 @@ public class TestRestartCluster {
private static final byte[] TABLENAME = Bytes.toBytes("master_transitions");
private static final byte [][] FAMILIES = new byte [][] {Bytes.toBytes("a")};
+
+ private static final byte [][] TABLES = new byte[][] {
+ Bytes.toBytes("restartTableOne"),
+ Bytes.toBytes("restartTableTwo"),
+ Bytes.toBytes("restartTableThree")
+ };
+ private static final byte [] FAMILY = Bytes.toBytes("family");
+
@BeforeClass public static void beforeAllTests() throws Exception {
conf = HBaseConfiguration.create();
utility = new HBaseTestingUtility(conf);
}
@AfterClass public static void afterAllTests() throws IOException {
- utility.shutdownMiniCluster();
+// utility.shutdownMiniCluster();
}
@Before public void setup() throws IOException {
}
+ @Test (timeout=300000)
+ public void testClusterRestart() throws Exception {
+
+ utility.getConfiguration().set("hbase.test.build.dir",
+ utility.setupClusterTestBuildDir().getAbsolutePath());
+
+ LOG.info("\n\nStarting cluster the first time");
+ utility.startMiniCluster(3);
+
+ LOG.info("\n\nCreating tables");
+ for(byte [] TABLE : TABLES) {
+ utility.createTable(TABLE, FAMILY);
+ utility.waitTableAvailable(TABLE, 30000);
+ }
+
+ LOG.info("\n\nShutting down cluster");
+ utility.getHBaseCluster().shutdown();
+ utility.getHBaseCluster().join();
+
+ LOG.info("\n\nSleeping a bit");
+ Thread.sleep(2000);
+
+ LOG.info("\n\nStarting cluster the second time");
+ utility.restartHBaseCluster(3);
+
+ LOG.info("\n\nWaiting for tables to be available");
+ for(byte [] TABLE : TABLES) {
+ try {
+ utility.createTable(TABLE, FAMILY);
+ assertTrue("Able to create table that should already exist", false);
+ } catch(TableExistsException tee) {
+ LOG.info("Table already exists as expected");
+ }
+ utility.waitTableAvailable(TABLE, 30000);
+ }
+
+ LOG.info("\n\nShutting stuff down now");
+ utility.shutdownMiniCluster();
+
+ LOG.info("\n\nDone!");
+ }
+
@Test (timeout=300000) public void testRestartClusterAfterKill()throws Exception {
utility.startMiniZKCluster();
zooKeeper = new ZooKeeperWatcher(conf, "cluster1", null);
@@ -72,7 +125,7 @@ public class TestRestartCluster {
HRegionInfo.FIRST_META_REGIONINFO.getEncodedName(), HMaster.MASTER);
LOG.debug("Created UNASSIGNED zNode for ROOT and META regions in state " +
- HBaseEventType.M2ZK_REGION_OFFLINE);
+ EventType.M2ZK_REGION_OFFLINE);
// start the HB cluster
LOG.info("Starting HBase cluster...");
Modified: hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedCloseRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedCloseRegion.java?rev=982489&r1=982488&r2=982489&view=diff
==============================================================================
--- hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedCloseRegion.java (original)
+++ hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedCloseRegion.java Thu Aug 5 07:35:00 2010
@@ -27,23 +27,21 @@ import java.util.concurrent.atomic.Atomi
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.HServerInfo;
-import org.apache.hadoop.hbase.HMsg;
-import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.master.HMaster;
-import org.apache.hadoop.hbase.master.ProcessRegionClose;
-import org.apache.hadoop.hbase.master.RegionServerOperation;
-import org.apache.hadoop.hbase.master.RegionServerOperationListener;
+import org.apache.hadoop.hbase.executor.EventHandler;
+import org.apache.hadoop.hbase.executor.EventHandler.EventHandlerListener;
+import org.apache.hadoop.hbase.executor.EventHandler.EventType;
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
+import org.apache.hadoop.hbase.regionserver.handler.CloseRegionHandler;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Threads;
import org.apache.hadoop.hbase.util.Writables;
@@ -82,7 +80,7 @@ public class TestZKBasedCloseRegion {
// Need at least two servers.
LOG.info("Started new server=" +
TEST_UTIL.getHBaseCluster().startRegionServer());
-
+
}
}
@@ -95,20 +93,22 @@ public class TestZKBasedCloseRegion {
int rsIdx = 0;
HRegionServer regionServer = TEST_UTIL.getHBaseCluster().getRegionServer(rsIdx);
Collection<HRegion> regions = regionServer.getOnlineRegions();
- HRegion region = regions.iterator().next();
+ HRegion region;
+ while((region = regions.iterator().next()) != null) {
+ if(!region.getRegionInfo().isMetaRegion() && !region.getRegionInfo().isRootRegion()) {
+ break;
+ }
+ }
LOG.debug("Asking RS to close region " + region.getRegionNameAsString());
AtomicBoolean closeEventProcessed = new AtomicBoolean(false);
- RegionServerOperationListener listener =
- new CloseRegionEventListener(region.getRegionNameAsString(), closeEventProcessed);
- HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
- master.getRegionServerOperationQueue().registerRegionServerOperationListener(listener);
- HMsg closeRegionMsg = new HMsg(HMsg.Type.MSG_REGION_CLOSE,
- region.getRegionInfo(),
- Bytes.toBytes("Forcing close in test")
- );
- TEST_UTIL.getHBaseCluster().addMessageToSendRegionServer(rsIdx, closeRegionMsg);
-
+ EventHandlerListener listener =
+ new CloseRegionEventListener(region.getRegionNameAsString(),
+ closeEventProcessed);
+ EventHandler.registerListener(listener);
+
+ regionServer.closeRegion(region.getRegionInfo());
+
synchronized(closeEventProcessed) {
// wait for 3 minutes
closeEventProcessed.wait(3*60*1000);
@@ -120,36 +120,25 @@ public class TestZKBasedCloseRegion {
LOG.info("Done with test, RS informed master successfully.");
}
}
-
- public static class CloseRegionEventListener implements RegionServerOperationListener {
-
+
+ public static class CloseRegionEventListener implements EventHandlerListener {
private static final Log LOG = LogFactory.getLog(CloseRegionEventListener.class);
String regionToClose;
AtomicBoolean closeEventProcessed;
- public CloseRegionEventListener(String regionToClose, AtomicBoolean closeEventProcessed) {
+ public CloseRegionEventListener(String regionToClose,
+ AtomicBoolean closeEventProcessed) {
this.regionToClose = regionToClose;
this.closeEventProcessed = closeEventProcessed;
}
@Override
- public boolean process(HServerInfo serverInfo, HMsg incomingMsg) {
- return true;
- }
-
- @Override
- public boolean process(RegionServerOperation op) throws IOException {
- return true;
- }
-
- @Override
- public void processed(RegionServerOperation op) {
- LOG.debug("Master processing object: " + op.getClass().getCanonicalName());
- if(op instanceof ProcessRegionClose) {
- ProcessRegionClose regionCloseOp = (ProcessRegionClose)op;
- String region = regionCloseOp.getRegionInfo().getRegionNameAsString();
- LOG.debug("Finished closing region " + region + ", expected to close region " + regionToClose);
- if(regionToClose.equals(region)) {
+ public void afterProcess(EventHandler event) {
+ LOG.info("afterProcess(" + event + ")");
+ if(event.getEventType() == EventType.M2RS_CLOSE_REGION) {
+ LOG.info("Finished processing CLOSE REGION");
+ CloseRegionHandler closeHandler = (CloseRegionHandler)event;
+ if(regionToClose.equals(closeHandler.getRegionInfo().getRegionNameAsString())) {
closeEventProcessed.set(true);
}
synchronized(closeEventProcessed) {
@@ -157,9 +146,14 @@ public class TestZKBasedCloseRegion {
}
}
}
-
+
+ @Override
+ public void beforeProcess(EventHandler event) {
+ if(event.getEventType() == EventType.M2RS_CLOSE_REGION) {
+ LOG.info("Received CLOSE RPC and beginning to process it");
+ }
+ }
}
-
private static void waitUntilAllRegionsAssigned(final int countOfRegions)
throws IOException {
@@ -173,14 +167,18 @@ public class TestZKBasedCloseRegion {
for (Result r = null; (r = s.next()) != null;) {
byte [] b =
r.getValue(HConstants.CATALOG_FAMILY, HConstants.SERVER_QUALIFIER);
- if (b == null || b.length <= 0) break;
+ if (b == null || b.length <= 0) {
+ break;
+ }
rows++;
}
s.close();
// If I get to here and all rows have a Server, then all have been assigned.
- if (rows == countOfRegions) break;
+ if (rows == countOfRegions) {
+ break;
+ }
LOG.info("Found=" + rows);
- Threads.sleep(1000);
+ Threads.sleep(1000);
}
}
@@ -202,7 +200,9 @@ public class TestZKBasedCloseRegion {
for (Result r = null; (r = s.next()) != null;) {
byte [] b =
r.getValue(HConstants.CATALOG_FAMILY, HConstants.REGIONINFO_QUALIFIER);
- if (b == null || b.length <= 0) break;
+ if (b == null || b.length <= 0) {
+ break;
+ }
HRegionInfo hri = Writables.getHRegionInfo(b);
// If start key, add 'aaa'.
byte [] row = getStartKey(hri);
@@ -228,14 +228,14 @@ public class TestZKBasedCloseRegion {
private static byte [] getTestQualifier() {
return getTestFamily();
}
-
+
public static void main(String args[]) throws Exception {
TestZKBasedCloseRegion.beforeAllTests();
-
+
TestZKBasedCloseRegion test = new TestZKBasedCloseRegion();
test.setup();
test.testCloseRegion();
-
+
TestZKBasedCloseRegion.afterAllTests();
}
}
Modified: hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedReopenRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedReopenRegion.java?rev=982489&r1=982488&r2=982489&view=diff
==============================================================================
--- hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedReopenRegion.java (original)
+++ hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/master/TestZKBasedReopenRegion.java Thu Aug 5 07:35:00 2010
@@ -27,24 +27,22 @@ import java.util.concurrent.atomic.Atomi
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.HServerInfo;
-import org.apache.hadoop.hbase.HMsg;
-import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.master.HMaster;
-import org.apache.hadoop.hbase.master.ProcessRegionClose;
-import org.apache.hadoop.hbase.master.ProcessRegionOpen;
-import org.apache.hadoop.hbase.master.RegionServerOperation;
-import org.apache.hadoop.hbase.master.RegionServerOperationListener;
+import org.apache.hadoop.hbase.executor.EventHandler;
+import org.apache.hadoop.hbase.executor.EventHandler.EventHandlerListener;
+import org.apache.hadoop.hbase.executor.EventHandler.EventType;
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
+import org.apache.hadoop.hbase.regionserver.handler.CloseRegionHandler;
+import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Threads;
import org.apache.hadoop.hbase.util.Writables;
@@ -83,7 +81,7 @@ public class TestZKBasedReopenRegion {
// Need at least two servers.
LOG.info("Started new server=" +
TEST_UTIL.getHBaseCluster().startRegionServer());
-
+
}
}
@@ -95,23 +93,29 @@ public class TestZKBasedReopenRegion {
int rsIdx = 0;
HRegionServer regionServer = TEST_UTIL.getHBaseCluster().getRegionServer(rsIdx);
Collection<HRegion> regions = regionServer.getOnlineRegions();
- HRegion region = regions.iterator().next();
+ HRegion region;
+ while((region = regions.iterator().next()) != null) {
+ if(!region.getRegionInfo().isMetaRegion() && !region.getRegionInfo().isRootRegion()) {
+ break;
+ }
+ }
LOG.debug("Asking RS to close region " + region.getRegionNameAsString());
AtomicBoolean closeEventProcessed = new AtomicBoolean(false);
AtomicBoolean reopenEventProcessed = new AtomicBoolean(false);
- RegionServerOperationListener listener =
- new ReopenRegionEventListener(region.getRegionNameAsString(),
- closeEventProcessed,
- reopenEventProcessed);
- HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
- master.getRegionServerOperationQueue().registerRegionServerOperationListener(listener);
- HMsg closeRegionMsg = new HMsg(HMsg.Type.MSG_REGION_CLOSE,
- region.getRegionInfo(),
- Bytes.toBytes("Forcing close in test")
- );
- TEST_UTIL.getHBaseCluster().addMessageToSendRegionServer(rsIdx, closeRegionMsg);
-
+
+ EventHandlerListener closeListener =
+ new RegionEventListener(region.getRegionNameAsString(),
+ closeEventProcessed, EventType.M2RS_CLOSE_REGION);
+ EventHandler.registerListener(closeListener);
+
+ EventHandlerListener openListener =
+ new RegionEventListener(region.getRegionNameAsString(),
+ reopenEventProcessed, EventType.M2RS_OPEN_REGION);
+ EventHandler.registerListener(openListener);
+
+ regionServer.closeRegion(region.getRegionInfo());
+
synchronized(closeEventProcessed) {
closeEventProcessed.wait(3*60*1000);
}
@@ -124,69 +128,54 @@ public class TestZKBasedReopenRegion {
}
if(!reopenEventProcessed.get()) {
throw new Exception("Timed out, open event not called on master after region close.");
- }
-
- LOG.info("Done with test, RS informed master successfully.");
- }
-
- public static class ReopenRegionEventListener implements RegionServerOperationListener {
-
- private static final Log LOG = LogFactory.getLog(ReopenRegionEventListener.class);
- String regionToClose;
- AtomicBoolean closeEventProcessed;
- AtomicBoolean reopenEventProcessed;
-
- public ReopenRegionEventListener(String regionToClose,
- AtomicBoolean closeEventProcessed,
- AtomicBoolean reopenEventProcessed) {
- this.regionToClose = regionToClose;
- this.closeEventProcessed = closeEventProcessed;
- this.reopenEventProcessed = reopenEventProcessed;
}
- @Override
- public boolean process(HServerInfo serverInfo, HMsg incomingMsg) {
- return true;
- }
+ LOG.info("\n\n\nDone with test, RS informed master successfully.\n\n\n");
+ }
- @Override
- public boolean process(RegionServerOperation op) throws IOException {
- return true;
+
+ public static class RegionEventListener implements EventHandlerListener {
+ private static final Log LOG = LogFactory.getLog(RegionEventListener.class);
+ String regionName;
+ AtomicBoolean eventProcessed;
+ EventType eventType;
+
+ public RegionEventListener(String regionName,
+ AtomicBoolean eventProcessed, EventType eventType) {
+ this.regionName = regionName;
+ this.eventProcessed = eventProcessed;
+ this.eventType = eventType;
}
@Override
- public void processed(RegionServerOperation op) {
- LOG.debug("Master processing object: " + op.getClass().getCanonicalName());
- if(op instanceof ProcessRegionClose) {
- ProcessRegionClose regionCloseOp = (ProcessRegionClose)op;
- String region = regionCloseOp.getRegionInfo().getRegionNameAsString();
- LOG.debug("Finished closing region " + region + ", expected to close region " + regionToClose);
- if(regionToClose.equals(region)) {
- closeEventProcessed.set(true);
+ public void afterProcess(EventHandler event) {
+ LOG.info("afterProcess(" + event + ")");
+ if(event.getEventType() == eventType) {
+ LOG.info("Finished processing " + eventType);
+ String regionName = "";
+ if(eventType == EventType.M2RS_OPEN_REGION) {
+ OpenRegionHandler openHandler = (OpenRegionHandler)event;
+ regionName = openHandler.getRegionInfo().getRegionNameAsString();
+ } else if(eventType == EventType.M2RS_CLOSE_REGION) {
+ CloseRegionHandler closeHandler = (CloseRegionHandler)event;
+ regionName = closeHandler.getRegionInfo().getRegionNameAsString();
+ }
+ if(this.regionName.equals(regionName)) {
+ eventProcessed.set(true);
}
- synchronized(closeEventProcessed) {
- closeEventProcessed.notifyAll();
+ synchronized(eventProcessed) {
+ eventProcessed.notifyAll();
}
}
- // Wait for open event AFTER we have closed the region
- if(closeEventProcessed.get()) {
- if(op instanceof ProcessRegionOpen) {
- ProcessRegionOpen regionOpenOp = (ProcessRegionOpen)op;
- String region = regionOpenOp.getRegionInfo().getRegionNameAsString();
- LOG.debug("Finished closing region " + region + ", expected to close region " + regionToClose);
- if(regionToClose.equals(region)) {
- reopenEventProcessed.set(true);
- }
- synchronized(reopenEventProcessed) {
- reopenEventProcessed.notifyAll();
- }
- }
+ }
+
+ @Override
+ public void beforeProcess(EventHandler event) {
+ if(event.getEventType() == eventType) {
+ LOG.info("Received " + eventType + " and beginning to process it");
}
-
}
-
}
-
private static void waitUntilAllRegionsAssigned(final int countOfRegions)
throws IOException {
@@ -200,14 +189,18 @@ public class TestZKBasedReopenRegion {
for (Result r = null; (r = s.next()) != null;) {
byte [] b =
r.getValue(HConstants.CATALOG_FAMILY, HConstants.SERVER_QUALIFIER);
- if (b == null || b.length <= 0) break;
+ if (b == null || b.length <= 0) {
+ break;
+ }
rows++;
}
s.close();
// If I get to here and all rows have a Server, then all have been assigned.
- if (rows == countOfRegions) break;
+ if (rows == countOfRegions) {
+ break;
+ }
LOG.info("Found=" + rows);
- Threads.sleep(1000);
+ Threads.sleep(1000);
}
}
@@ -229,7 +222,9 @@ public class TestZKBasedReopenRegion {
for (Result r = null; (r = s.next()) != null;) {
byte [] b =
r.getValue(HConstants.CATALOG_FAMILY, HConstants.REGIONINFO_QUALIFIER);
- if (b == null || b.length <= 0) break;
+ if (b == null || b.length <= 0) {
+ break;
+ }
HRegionInfo hri = Writables.getHRegionInfo(b);
// If start key, add 'aaa'.
byte [] row = getStartKey(hri);
@@ -255,14 +250,14 @@ public class TestZKBasedReopenRegion {
private static byte [] getTestQualifier() {
return getTestFamily();
}
-
+
public static void main(String args[]) throws Exception {
TestZKBasedReopenRegion.beforeAllTests();
-
+
TestZKBasedReopenRegion test = new TestZKBasedReopenRegion();
test.setup();
test.testOpenRegion();
-
+
TestZKBasedReopenRegion.afterAllTests();
}
}
Modified: hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/regionserver/TestMasterAddressManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/regionserver/TestMasterAddressManager.java?rev=982489&r1=982488&r2=982489&view=diff
==============================================================================
--- hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/regionserver/TestMasterAddressManager.java (original)
+++ hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/regionserver/TestMasterAddressManager.java Thu Aug 5 07:35:00 2010
@@ -63,7 +63,7 @@ public class TestMasterAddressManager {
// Should not have a master yet
MasterAddressManager addressManager = new MasterAddressManager(zk, null);
- addressManager.monitorMaster();
+ addressManager.start();
assertFalse(addressManager.hasMaster());
zk.registerListener(addressManager);
Modified: hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java?rev=982489&r1=982488&r2=982489&view=diff
==============================================================================
--- hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java (original)
+++ hbase/branches/0.90_master_rewrite/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java Thu Aug 5 07:35:00 2010
@@ -93,6 +93,14 @@ public class TestBytes extends TestCase
// If split more than once, this should fail
parts = Bytes.split(low, high, 2);
assertTrue("Returned split but should have failed", parts == null);
+
+ // Split 0 times should throw IAE
+ try {
+ parts = Bytes.split(low, high, 0);
+ assertTrue("Should not be able to split 0 times", false);
+ } catch(IllegalArgumentException iae) {
+ // Correct
+ }
}
public void testToLong() throws Exception {