/** * @return True if region is offline (In OFFLINE or CLOSED state). */ public boolean isRegionOffline(final RegionInfo regionInfo) { return isRegionInState(regionInfo, State.OFFLINE, State.CLOSED); }
public boolean isRegionOnline(final RegionInfo regionInfo) { return isRegionInState(regionInfo, State.OPEN); }
RegionStates regionStates = am.getRegionStates(); long start = EnvironmentEdgeManager.currentTime(); while (!regionStates.isRegionInState(hri, State.SPLIT)) { LOG.debug("Waiting for SPLIT state on: " + hri); assertFalse("Timed out in waiting split parent to be in state SPLIT", Thread.sleep(500); assertTrue(regionStates.isRegionInState(daughters.get(0).getRegionInfo(), State.OPEN)); assertTrue(regionStates.isRegionInState(daughters.get(1).getRegionInfo(), State.OPEN)); assertTrue(regionStates.isRegionInState(hri, State.SPLIT)); assertTrue(regionStates.isRegionInState(hri, State.SPLIT)); } finally { admin.balancerSwitch(true, false);
@Test public void testAssignAnAssignedRegion() throws Exception { final TableName tableName = TableName.valueOf("testAssignAnAssignedRegion"); final RegionInfo hri = createRegionInfo(tableName, 1); // collect AM metrics before test collectAssignmentManagerMetrics(); rsDispatcher.setMockRsExecutor(new GoodRsExecutor()); Future<byte[]> futureA = submitProcedure(createAssignProcedure(hri)); // wait first assign waitOnFuture(futureA); am.getRegionStates().isRegionInState(hri, State.OPEN); // Second should be a noop. We should recognize region is already OPEN internally // and skip out doing nothing. // wait second assign Future<byte[]> futureB = submitProcedure(createAssignProcedure(hri)); waitOnFuture(futureB); am.getRegionStates().isRegionInState(hri, State.OPEN); // TODO: What else can we do to ensure just a noop. // TODO: Though second assign is noop, it's considered success, can noop be handled in a // better way? assertEquals(assignSubmittedCount + 2, assignProcMetrics.getSubmittedCounter().getCount()); assertEquals(assignFailedCount, assignProcMetrics.getFailedCounter().getCount()); }
@Test public void testUnassignAnUnassignedRegion() throws Exception { final TableName tableName = TableName.valueOf("testUnassignAnUnassignedRegion"); final RegionInfo hri = createRegionInfo(tableName, 1); // collect AM metrics before test collectAssignmentManagerMetrics(); rsDispatcher.setMockRsExecutor(new GoodRsExecutor()); // assign the region first waitOnFuture(submitProcedure(createAssignProcedure(hri))); final Future<byte[]> futureA = submitProcedure(createUnassignProcedure(hri)); // Wait first unassign. waitOnFuture(futureA); am.getRegionStates().isRegionInState(hri, State.CLOSED); // Second should be a noop. We should recognize region is already CLOSED internally // and skip out doing nothing. final Future<byte[]> futureB = submitProcedure(createUnassignProcedure(hri)); waitOnFuture(futureB); // Ensure we are still CLOSED. am.getRegionStates().isRegionInState(hri, State.CLOSED); // TODO: What else can we do to ensure just a noop. assertEquals(assignSubmittedCount + 1, assignProcMetrics.getSubmittedCounter().getCount()); assertEquals(assignFailedCount, assignProcMetrics.getFailedCounter().getCount()); // TODO: Though second unassign is noop, it's considered success, can noop be handled in a // better way? assertEquals(unassignSubmittedCount + 2, unassignProcMetrics.getSubmittedCounter().getCount()); assertEquals(unassignFailedCount, unassignProcMetrics.getFailedCounter().getCount()); }
RegionStates regionStates = am.getRegionStates(); long start = EnvironmentEdgeManager.currentTime(); while (!regionStates.isRegionInState(hri, State.SPLIT)) { LOG.debug("Waiting for SPLIT state on: " + hri); assertFalse("Timed out in waiting split parent to be in state SPLIT", Thread.sleep(500); assertTrue(regionStates.isRegionInState(daughters.get(0).getRegionInfo(), State.OPEN)); assertTrue(regionStates.isRegionInState(daughters.get(1).getRegionInfo(), State.OPEN)); assertFalse("Split region can't be assigned", regionStates.isRegionInTransition(hri)); assertTrue(regionStates.isRegionInState(hri, State.SPLIT)); assertTrue(regionStates.isRegionInState(hri, State.SPLIT)); } finally { admin.setBalancerRunning(true, false);
@Test public void testAssignAnAssignedRegion() throws Exception { final TableName tableName = TableName.valueOf("testAssignAnAssignedRegion"); final RegionInfo hri = createRegionInfo(tableName, 1); // collect AM metrics before test collectAssignmentManagerMetrics(); rsDispatcher.setMockRsExecutor(new GoodRsExecutor()); final Future<byte[]> futureA = submitProcedure(am.createAssignProcedure(hri)); // wait first assign waitOnFuture(futureA); am.getRegionStates().isRegionInState(hri, State.OPEN); // Second should be a noop. We should recognize region is already OPEN internally // and skip out doing nothing. // wait second assign final Future<byte[]> futureB = submitProcedure(am.createAssignProcedure(hri)); waitOnFuture(futureB); am.getRegionStates().isRegionInState(hri, State.OPEN); // TODO: What else can we do to ensure just a noop. // TODO: Though second assign is noop, it's considered success, can noop be handled in a // better way? assertEquals(assignSubmittedCount + 2, assignProcMetrics.getSubmittedCounter().getCount()); assertEquals(assignFailedCount, assignProcMetrics.getFailedCounter().getCount()); }
@Test public void testUnassignAnUnassignedRegion() throws Exception { final TableName tableName = TableName.valueOf("testUnassignAnUnassignedRegion"); final RegionInfo hri = createRegionInfo(tableName, 1); // collect AM metrics before test collectAssignmentManagerMetrics(); rsDispatcher.setMockRsExecutor(new GoodRsExecutor()); // assign the region first waitOnFuture(submitProcedure(am.createAssignProcedure(hri))); final Future<byte[]> futureA = submitProcedure(am.createUnassignProcedure(hri, null, false)); // Wait first unassign. waitOnFuture(futureA); am.getRegionStates().isRegionInState(hri, State.CLOSED); // Second should be a noop. We should recognize region is already CLOSED internally // and skip out doing nothing. final Future<byte[]> futureB = submitProcedure(am.createUnassignProcedure(hri, ServerName.valueOf("example.org,1234,1"), false)); waitOnFuture(futureB); // Ensure we are still CLOSED. am.getRegionStates().isRegionInState(hri, State.CLOSED); // TODO: What else can we do to ensure just a noop. assertEquals(assignSubmittedCount + 1, assignProcMetrics.getSubmittedCounter().getCount()); assertEquals(assignFailedCount, assignProcMetrics.getFailedCounter().getCount()); // TODO: Though second unassign is noop, it's considered success, can noop be handled in a // better way? assertEquals(unassignSubmittedCount + 2, unassignProcMetrics.getSubmittedCounter().getCount()); assertEquals(unassignFailedCount, unassignProcMetrics.getFailedCounter().getCount()); }