private void testCrashRsWithUserRegion(final boolean kill, final boolean withData) throws Exception { final int NROWS = 100; int nkilled = 0; for (RegionInfo hri: UTIL.getHBaseAdmin().getTableRegions(TEST_TABLE)) { ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(UTIL, hri); if (AssignmentTestingUtil.isServerHoldingMeta(UTIL, serverName)) continue; if (withData) { testInsert(hri, NROWS); } // wait for regions to enter in transition and then to get out of transition AssignmentTestingUtil.crashRs(UTIL, serverName, kill); AssignmentTestingUtil.waitForRegionToBeInTransition(UTIL, hri); UTIL.waitUntilNoRegionsInTransition(); if (withData) { assertEquals(NROWS, testGet(hri, NROWS)); } // region should be moved to another RS assertNotEquals(serverName, AssignmentTestingUtil.getServerHoldingRegion(UTIL, hri)); if (++nkilled == (NUM_RS - 1)) { break; } } assertTrue("expected RSs to be killed", nkilled > 0); }
private void testCrashRsWithMetaRegion(final boolean kill) throws Exception { int nkilled = 0; for (RegionInfo hri: AssignmentTestingUtil.getMetaRegions(UTIL)) { ServerName serverName = AssignmentTestingUtil.crashRsWithRegion(UTIL, hri, kill); // wait for region to enter in transition and then to get out of transition AssignmentTestingUtil.waitForRegionToBeInTransition(UTIL, hri); UTIL.waitUntilNoRegionsInTransition(); testGet(hri, 10); // region should be moved to another RS assertNotEquals(serverName, AssignmentTestingUtil.getServerHoldingRegion(UTIL, hri)); if (++nkilled == (NUM_RS - 1)) { break; } } assertTrue("expected RSs to be killed", nkilled > 0); }
public static Set<RegionInfo> getMetaRegions(final HBaseTestingUtility util) { return getMaster(util).getAssignmentManager().getMetaRegionSet(); }
public static ServerName crashRsWithRegion(final HBaseTestingUtility util, final RegionInfo hri, final boolean kill) throws Exception { ServerName serverName = getServerHoldingRegion(util, hri); crashRs(util, serverName, kill); return serverName; }
public static boolean isServerHoldingMeta(final HBaseTestingUtility util, final ServerName serverName) throws Exception { for (RegionInfo hri: getMetaRegions(util)) { if (serverName.equals(getServerHoldingRegion(util, hri))) { return true; } } return false; }
final ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(util, hri); if (AssignmentTestingUtil.isServerHoldingMeta(util, serverName) == true) { rsToKill = serverName; break; ServerCrashProcedure procB = new ServerCrashProcedure(pExecutor.getEnvironment(), rsToKill, false, false); AssignmentTestingUtil.killRs(util, rsToKill); long procId = getSCPProcId(pExecutor); Procedure procA = pExecutor.getProcedure(procId);
private RegionInfo getAndCheckSingleTableRegion(final List<HRegion> regions) throws IOException, InterruptedException { assertEquals(1, regions.size()); RegionInfo hri = regions.get(0).getRegionInfo(); AssignmentTestingUtil.waitForAssignment(cluster.getMaster().getAssignmentManager(), hri); return hri; }
final ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(util, hri); if (AssignmentTestingUtil.isServerHoldingMeta(util, serverName) == carryingMeta) { rsToKill = serverName; break; ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true); AssignmentTestingUtil.killRs(util, rsToKill); long procId = getSCPProcId(procExec); } else { AssignmentTestingUtil.killRs(util, rsToKill); long procId = getSCPProcId(procExec); ProcedureTestingUtility.waitProcedure(procExec, procId);
public static boolean isServerHoldingMeta(final HBaseTestingUtility util, final ServerName serverName) throws Exception { for (RegionInfo hri: getMetaRegions(util)) { if (serverName.equals(getServerHoldingRegion(util, hri))) { return true; } } return false; }
public static ServerName crashRsWithRegion(final HBaseTestingUtility util, final RegionInfo hri, final boolean kill) throws Exception { ServerName serverName = getServerHoldingRegion(util, hri); crashRs(util, serverName, kill); return serverName; }
/** * Uses directly the assignment manager to assign the region. and waits until the specified region * has completed assignment. * @return true if the region is assigned false otherwise. */ public boolean assignRegion(final RegionInfo regionInfo) throws IOException, InterruptedException { final AssignmentManager am = getHBaseCluster().getMaster().getAssignmentManager(); am.assign(regionInfo); return AssignmentTestingUtil.waitForAssignment(am, regionInfo); }
private void testCrashRsWithMetaRegion(final boolean kill) throws Exception { int nkilled = 0; for (RegionInfo hri: AssignmentTestingUtil.getMetaRegions(UTIL)) { ServerName serverName = AssignmentTestingUtil.crashRsWithRegion(UTIL, hri, kill); // wait for region to enter in transition and then to get out of transition AssignmentTestingUtil.waitForRegionToBeInTransition(UTIL, hri); UTIL.waitUntilNoRegionsInTransition(); testGet(hri, 10); // region should be moved to another RS assertNotEquals(serverName, AssignmentTestingUtil.getServerHoldingRegion(UTIL, hri)); if (++nkilled == (NUM_RS - 1)) { break; } } assertTrue("expected RSs to be killed", nkilled > 0); }
private void testCrashRsWithUserRegion(final boolean kill, final boolean withData) throws Exception { final int NROWS = 100; int nkilled = 0; for (RegionInfo hri: UTIL.getHBaseAdmin().getTableRegions(TEST_TABLE)) { ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(UTIL, hri); if (AssignmentTestingUtil.isServerHoldingMeta(UTIL, serverName)) continue; if (withData) { testInsert(hri, NROWS); } // wait for regions to enter in transition and then to get out of transition AssignmentTestingUtil.crashRs(UTIL, serverName, kill); AssignmentTestingUtil.waitForRegionToBeInTransition(UTIL, hri); UTIL.waitUntilNoRegionsInTransition(); if (withData) { assertEquals(NROWS, testGet(hri, NROWS)); } // region should be moved to another RS assertNotEquals(serverName, AssignmentTestingUtil.getServerHoldingRegion(UTIL, hri)); if (++nkilled == (NUM_RS - 1)) { break; } } assertTrue("expected RSs to be killed", nkilled > 0); }
final ServerName serverName = AssignmentTestingUtil.getServerHoldingRegion(util, hri); if (AssignmentTestingUtil.isServerHoldingMeta(util, serverName) == carryingMeta) { rsToKill = serverName; break; ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true); AssignmentTestingUtil.killRs(util, rsToKill); long procId = getSCPProcId(procExec); } else { AssignmentTestingUtil.killRs(util, rsToKill); long procId = getSCPProcId(procExec); ProcedureTestingUtility.waitProcedure(procExec, procId);
RegionInfo h = RegionReplicaUtil .getRegionInfoForReplica(RegionInfoBuilder.FIRST_META_REGIONINFO, replicaId); AssignmentTestingUtil.waitForAssignment(am, h); ServerName sn = am.getRegionStates().getRegionServerOfRegion(h); assertNotNull(sn);
public static void waitForRegionToBeInTransition(final HBaseTestingUtility util, final RegionInfo hri) throws Exception { while (!getMaster(util).getAssignmentManager().getRegionStates().isRegionInTransition(hri)) { Threads.sleep(10); } }
AssignmentTestingUtil.waitForAssignment(cluster.getMaster().getAssignmentManager(), RegionInfoBuilder.FIRST_META_REGIONINFO);
public static ServerName getServerHoldingRegion(final HBaseTestingUtility util, final RegionInfo hri) throws Exception { ServerName serverName = util.getMiniHBaseCluster().getServerHoldingRegion( hri.getTable(), hri.getRegionName()); ServerName amServerName = getMaster(util).getAssignmentManager().getRegionStates() .getRegionServerOfRegion(hri); // Make sure AM and MiniCluster agrees on the Server holding the region // and that the server is online. assertEquals(amServerName, serverName); assertEquals(true, getMaster(util).getServerManager().isServerOnline(serverName)); return serverName; }