fix: Incorrect sequencing leads to LAUNCH_FAILED

This commit is contained in:
tjq 2020-10-08 17:01:15 +08:00
parent a67adf9601
commit 9aa8c0bb87

View File

@ -153,15 +153,10 @@ public class FrequentTaskTracker extends TaskTracker {
// 子任务实例ID // 子任务实例ID
Long subInstanceId = triggerTimes.incrementAndGet(); Long subInstanceId = triggerTimes.incrementAndGet();
// 记录时间 // 执行记录缓存只做展示因此可以放在前面
SubInstanceTimeHolder timeHolder = new SubInstanceTimeHolder();
timeHolder.startTime = timeHolder.lastActiveTime = System.currentTimeMillis();
subInstanceId2TimeHolder.put(subInstanceId, timeHolder);
// 执行记录缓存
SubInstanceInfo subInstanceInfo = new SubInstanceInfo(); SubInstanceInfo subInstanceInfo = new SubInstanceInfo();
subInstanceInfo.status = TaskStatus.DISPATCH_SUCCESS_WORKER_UNCHECK.getValue(); subInstanceInfo.status = TaskStatus.DISPATCH_SUCCESS_WORKER_UNCHECK.getValue();
subInstanceInfo.startTime = timeHolder.startTime; subInstanceInfo.startTime = System.currentTimeMillis();
recentSubInstanceInfo.put(subInstanceId, subInstanceInfo); recentSubInstanceInfo.put(subInstanceId, subInstanceInfo);
String myAddress = OhMyWorker.getWorkerAddress(); String myAddress = OhMyWorker.getWorkerAddress();
@ -200,6 +195,11 @@ public class FrequentTaskTracker extends TaskTracker {
return; return;
} }
// 生成记录信息必须保证持久化成功才能生成该记录否则会导致 LAUNCH_FAILED 错误
SubInstanceTimeHolder timeHolder = new SubInstanceTimeHolder();
timeHolder.startTime = timeHolder.lastActiveTime = System.currentTimeMillis();
subInstanceId2TimeHolder.put(subInstanceId, timeHolder);
dispatchTask(newRootTask, myAddress); dispatchTask(newRootTask, myAddress);
} }