public static boolean waitForAssignment(AssignmentManager am, RegionInfo regionInfo)
throws IOException {
Waiter.waitFor(am.getConfiguration(), 10000,
() -> am.getRegionStates().getRegionStateNode(regionInfo) != null);
RegionStateNode regionNode = am.getRegionStates().getRegionStateNode(regionInfo);
Waiter.waitFor(am.getConfiguration(), 30000,
() -> regionNode.isInState(State.OPEN) || regionNode.isInTransition());
RegionTransitionProcedure proc = regionNode.getProcedure();
synchronized (regionNode) {
if (regionNode.isInState(State.OPEN)) {
return true;
}
proc = regionNode.getProcedure();
}
assertNotNull(proc);
ProcedureSyncWait.waitForProcedureToCompleteIOE(am.getMaster().getMasterProcedureExecutor(),
proc, 5L * 60 * 1000);
return true;
}
}