@Override protected Flow executeFromState(MasterProcedureEnv env, RegionStateTransitionState state) throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException { switch (state) { case REGION_STATE_TRANSITION_GET_ASSIGN_CANDIDATE: LOG.info("LATCH1 {}", this.latch.getCount()); this.latch.countDown(); setNextState(REGION_STATE_TRANSITION_OPEN); return Flow.HAS_MORE_STATE; case REGION_STATE_TRANSITION_OPEN: if (latch.getCount() == 0) { LOG.info("LATCH3 {}", this.latch.getCount()); return Flow.NO_MORE_STATE; } else { LOG.info("LATCH2 {}", this.latch.getCount()); return Flow.HAS_MORE_STATE; } default: throw new UnsupportedOperationException("unhandled state=" + state); } } }
Procedure<MasterProcedureEnv> p = new StallingAssignProcedure(ri); pids.add(TEST_UTIL.getHBaseCluster().getMaster().getMasterProcedureExecutor(). submitProcedure(p));
Procedure<MasterProcedureEnv> p = new StallingAssignProcedure(env, ri, null, false, RegionStateTransitionState.REGION_STATE_TRANSITION_GET_ASSIGN_CANDIDATE, RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_OPENED);
private void init(MasterProcedureEnv env){ RegionStateNode regionNode = env.getAssignmentManager().getRegionStates().getOrCreateRegionStateNode(getRegion()); regionNode.setProcedure(this); }
public StallingAssignProcedure(MasterProcedureEnv env, RegionInfo hri, ServerName assignCandidate, boolean forceNewPlan, RegionStateTransitionState initialState, RegionStateTransitionState lastState) { super(env, hri, assignCandidate, forceNewPlan, initialState, lastState); init(env); }