@Override public boolean evaluate() throws Exception { return UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().stream() .map(t -> t.getRegionServer()).allMatch(HRegionServer::walRollRequestFinished); }
private static HRegionServer getRS() { return HTU.getHBaseCluster().getLiveRegionServerThreads().get(0).getRegionServer(); }
/** * Make sure that at least the specified number of region servers * are running * @param num minimum number of region servers that should be running * @return true if we started some servers * @throws IOException */ public boolean ensureSomeRegionServersAvailable(final int num) throws IOException { boolean startedServer = false; MiniHBaseCluster hbaseCluster = getMiniHBaseCluster(); for (int i=hbaseCluster.getLiveRegionServerThreads().size(); i<num; ++i) { LOG.info("Started new server=" + hbaseCluster.startRegionServer()); startedServer = true; } return startedServer; }
private List<HRegion> getRegionInfo() { return TEST_UTIL.getHBaseCluster().getLiveRegionServerThreads().stream() .map(JVMClusterUtil.RegionServerThread::getRegionServer) .flatMap(r -> r.getRegions().stream()) .filter(r -> r.getTableDescriptor().getTableName().equals(tableName)) .collect(Collectors.toList()); }
private static HRegionServer getRS() { return HTU.getHBaseCluster().getLiveRegionServerThreads().get(0).getRegionServer(); }
private void waitUntilRegionServerDead() throws InterruptedException, IOException { // Wait until the master processes the RS shutdown for (int i=0; (cluster.getMaster().getClusterMetrics() .getLiveServerMetrics().size() > NB_SERVERS || cluster.getLiveRegionServerThreads().size() > NB_SERVERS) && i<100; i++) { LOG.info("Waiting on server to go down"); Thread.sleep(100); } assertFalse("Waited too long for RS to die", cluster.getMaster().getClusterMetrics(). getLiveServerMetrics().size() > NB_SERVERS || cluster.getLiveRegionServerThreads().size() > NB_SERVERS); }
@Test public void testAsyncFlushRegionServer() throws Exception { AsyncAdmin admin = asyncConn.getAdmin(); for (HRegionServer rs : TEST_UTIL.getHBaseCluster() .getLiveRegionServerThreads() .stream().map(JVMClusterUtil.RegionServerThread::getRegionServer) .collect(Collectors.toList())) { admin.flushRegionServer(rs.getServerName()).get(); assertFalse(getRegionInfo(rs).stream().anyMatch(r -> r.getMemStoreDataSize() != 0)); } }
private NavigableSet<String> getDoubleAssignedRegions( MiniHBaseCluster cluster) throws IOException { NavigableSet<String> online = new TreeSet<>(); NavigableSet<String> doubled = new TreeSet<>(); for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) { for (RegionInfo region : ProtobufUtil.getOnlineRegions( rst.getRegionServer().getRSRpcServices())) { if(!online.add(region.getRegionNameAsString())) { doubled.add(region.getRegionNameAsString()); } } } return doubled; }
@Test public void testFlushRegionServer() throws Exception { try (Admin admin = TEST_UTIL.getAdmin()) { for (HRegionServer rs : TEST_UTIL.getHBaseCluster() .getLiveRegionServerThreads() .stream().map(JVMClusterUtil.RegionServerThread::getRegionServer) .collect(Collectors.toList())) { admin.flushRegionServer(rs.getServerName()); assertFalse(getRegionInfo(rs).stream().anyMatch(r -> r.getMemStoreDataSize() != 0)); } } }
@Test public void testGetOnlineRegions() throws Exception { createTableAndGetOneRegion(tableName); AtomicInteger regionServerCount = new AtomicInteger(0); TEST_UTIL .getHBaseCluster() .getLiveRegionServerThreads() .stream() .map(rsThread -> rsThread.getRegionServer()) .forEach( rs -> { ServerName serverName = rs.getServerName(); try { assertEquals(admin.getRegions(serverName).get().size(), rs .getRegions().size()); } catch (Exception e) { fail("admin.getOnlineRegions() method throws a exception: " + e.getMessage()); } regionServerCount.incrementAndGet(); }); assertEquals(2, regionServerCount.get()); }
@Test public void testMiniCluster() throws Exception { HBaseTestingUtility hbt = new HBaseTestingUtility(); MiniHBaseCluster cluster = hbt.startMiniCluster(); try { assertEquals(1, cluster.getLiveRegionServerThreads().size()); } finally { hbt.shutdownMiniCluster(); } }
private static List<AccessController> getAccessControllers(MiniHBaseCluster cluster) { List<AccessController> result = Lists.newArrayList(); for (RegionServerThread t: cluster.getLiveRegionServerThreads()) { for (HRegion region: t.getRegionServer().getOnlineRegionsLocalContext()) { Coprocessor cp = region.getCoprocessorHost().findCoprocessor(AccessController.class); if (cp != null) { result.add((AccessController)cp); } } } return result; }
@Test public void testMiniClusterBindToWildcard() throws Exception { HBaseTestingUtility hbt = new HBaseTestingUtility(); hbt.getConfiguration().set("hbase.regionserver.ipc.address", "0.0.0.0"); MiniHBaseCluster cluster = hbt.startMiniCluster(); try { assertEquals(1, cluster.getLiveRegionServerThreads().size()); } finally { hbt.shutdownMiniCluster(); } }
@BeforeClass public static void startCluster() throws Exception { metricsHelper = CompatibilityFactory.getInstance(MetricsAssertHelper.class); TEST_UTIL = new HBaseTestingUtility(); conf = TEST_UTIL.getConfiguration(); conf.getLong("hbase.splitlog.max.resubmit", 0); // Make the failure test faster conf.setInt("zookeeper.recovery.retry", 0); conf.setInt(HConstants.REGIONSERVER_INFO_PORT, -1); TEST_UTIL.startMiniCluster(2); cluster = TEST_UTIL.getHBaseCluster(); cluster.waitForActiveAndReadyMaster(); while (cluster.getLiveRegionServerThreads().size() < 2) { Threads.sleep(100); } }
private ServerName getRSWithMaxRegions(TableName tableName, List<ServerName> excludeNodes) throws IOException { int maxRegions = 0; ServerName maxLoadedServer = null; for (JVMClusterUtil.RegionServerThread rst : cluster.getLiveRegionServerThreads()) { List<HRegion> regions = rst.getRegionServer().getRegions(tableName); LOG.debug("Server: " + rst.getRegionServer().getServerName() + " regions: " + regions.size()); if (regions.size() > maxRegions) { if (excludeNodes == null || !doesMatchExcludeNodes(excludeNodes, rst.getRegionServer().getServerName())) { maxRegions = regions.size(); maxLoadedServer = rst.getRegionServer().getServerName(); } } } return maxLoadedServer; }
private int getNumberOfOnlineRegions(MiniHBaseCluster cluster) { int numFound = 0; for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) { numFound += rst.getRegionServer().getNumberOfOnlineRegions(); } for (MasterThread mt : cluster.getMasterThreads()) { numFound += mt.getMaster().getNumberOfOnlineRegions(); } return numFound; }
@BeforeClass public static void setUpBeforeClass() throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, MyObserver.class.getName()); UTIL = new HBaseTestingUtility(conf); StartMiniClusterOption option = StartMiniClusterOption.builder() .numMasters(MASTERS).numRegionServers(SLAVES).numDataNodes(SLAVES).build(); UTIL.startMiniCluster(option); CLUSTER = UTIL.getHBaseCluster(); CLUSTER.waitForActiveAndReadyMaster(); ADMIN = UTIL.getAdmin(); // Kill one region server List<RegionServerThread> rsts = CLUSTER.getLiveRegionServerThreads(); RegionServerThread rst = rsts.get(rsts.size() - 1); DEAD = rst.getRegionServer(); DEAD.stop("Test dead servers metrics"); while (rst.isAlive()) { Thread.sleep(500); } }
protected static void rollAllWALs() throws Exception { for (RegionServerThread t : UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()) { t.getRegionServer().getWalRoller().requestRollAll(); } UTIL.waitFor(30000, new ExplainingPredicate<Exception>() { @Override public boolean evaluate() throws Exception { return UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().stream() .map(t -> t.getRegionServer()).allMatch(HRegionServer::walRollRequestFinished); } @Override public String explainFailure() throws Exception { return "Log roll has not finished yet"; } }); }
@BeforeClass public static void setUpBeforeClass() throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, MyObserver.class.getName()); UTIL = new HBaseTestingUtility(conf); StartMiniClusterOption option = StartMiniClusterOption.builder() .numMasters(MASTERS).numRegionServers(SLAVES).numDataNodes(SLAVES).build(); UTIL.startMiniCluster(option); CLUSTER = UTIL.getHBaseCluster(); CLUSTER.waitForActiveAndReadyMaster(); ADMIN = UTIL.getAdmin(); // Kill one region server List<RegionServerThread> rsts = CLUSTER.getLiveRegionServerThreads(); RegionServerThread rst = rsts.get(rsts.size() - 1); DEAD = rst.getRegionServer(); DEAD.stop("Test dead servers status"); while (rst.isAlive()) { Thread.sleep(500); } }
/** * Counts the total numbers of regions being served by the currently online * region servers by asking each how many regions they have. Does not look * at hbase:meta at all. Count includes catalog tables. * @return number of regions being served by all region servers */ public long countServedRegions() { long count = 0; for (JVMClusterUtil.RegionServerThread rst : getLiveRegionServerThreads()) { count += rst.getRegionServer().getNumberOfOnlineRegions(); } for (JVMClusterUtil.MasterThread mt : getLiveMasterThreads()) { count += mt.getMaster().getNumberOfOnlineRegions(); } return count; }