permitMonitor.waitForPermit();// 阻塞等待授权
RpcStageController stageController = ArbitrateFactory.getInstance(pipelineId, RpcStageController.class);
Long processId = stageController.waitForProcess(StageType.LOAD); // 符合条件的processId
ChannelStatus status = permitMonitor.getChannelPermit();
if (status.isStart()) {// 即时查询一下当前的状态,状态随时可能会变
return stageController.getLastData(processId);
} else {
// 需要进一步check,避免丢失load信号
status = permitMonitor.getChannelPermit(true);
if (status.isStart()) {
return stageController.getLastData(processId);
} else if (status.isPause()) {
String path = StagePathUtils.getProcess(pipelineId, processId);
if (zookeeper.exists(path)) { // 如果存在process,那说明没有被rollback掉(可能刚好在做rollback),这种运行进行load处理
return stageController.getLastData(processId);
}
}