fix: fail to redispatch the job instance which is timeout

This commit is contained in:
Echo009 2021-03-17 11:24:52 +08:00
parent d29f0651e2
commit d8811c7d77

View File

@ -51,22 +51,28 @@ public class DispatchService {
private InstanceMetadataService instanceMetadataService; private InstanceMetadataService instanceMetadataService;
@Resource @Resource
private InstanceInfoRepository instanceInfoRepository; private InstanceInfoRepository instanceInfoRepository;
@Resource
private DispatchService self;
/** /**
* 重新派发任务 * 重新派发任务实例不考虑实例当前的状态
* *
* @param jobInfo 任务信息注意这里传入的任务信息有可能为 * @param jobInfo 任务信息注意这里传入的任务信息有可能为
* @param instanceId 实例ID * @param instanceId 实例ID
*/ */
@UseSegmentLock(type = "dispatch", key = "#jobInfo.getId() ?: 0", concurrencyLevel = 1024)
public void redispatch(JobInfoDO jobInfo, long instanceId) { public void redispatch(JobInfoDO jobInfo, long instanceId) {
// 这里暂时保留 InstanceInfoDO instance = instanceInfoRepository.findByInstanceId(instanceId);
dispatch(jobInfo, instanceId); // 将状态重置为等待派发
instance.setStatus(InstanceStatus.WAITING_DISPATCH.getV());
instance.setGmtModified(new Date());
instanceInfoRepository.saveAndFlush(instance);
// support for aop
self.dispatch(jobInfo, instanceId);
} }
/** /**
* 将任务从Server派发到WorkerTaskTracker * 将任务从Server派发到WorkerTaskTracker
* 只会派发当前状态为等待派发的任务实例
* ************************************************** * **************************************************
* 2021-02-03 modify by Echo009 * 2021-02-03 modify by Echo009
* 1移除参数 当前运行次数工作流实例ID实例参数 * 1移除参数 当前运行次数工作流实例ID实例参数