diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/cache/MutableGraphCache.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/cache/MutableGraphCache.java index e6751575..bab1f830 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/cache/MutableGraphCache.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/cache/MutableGraphCache.java @@ -4,6 +4,7 @@ import com.aizuda.easy.retry.server.common.util.GraphUtils; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.google.common.graph.MutableGraph; import org.springframework.util.CollectionUtils; @@ -78,6 +79,9 @@ public class MutableGraphCache { public static Set getBrotherNode(MutableGraph graph, Long nodeId) { Set predecessors = graph.predecessors(nodeId); + if (CollectionUtils.isEmpty(predecessors)) { + return Sets.newHashSet(); + } return graph.successors(predecessors.stream().findFirst().get()); } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/WorkflowExecutorActor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/WorkflowExecutorActor.java index b7b6c88b..6f21d7f5 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/WorkflowExecutorActor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/dispatch/WorkflowExecutorActor.java @@ -98,13 +98,15 @@ public class WorkflowExecutorActor extends AbstractActor { } Set brotherNode = MutableGraphCache.getBrotherNode(graph, taskExecute.getParentId()); + Sets.SetView union = Sets.union(successors, brotherNode); + // 添加父节点,为了判断父节点的处理状态 List allJobTaskBatchList = jobTaskBatchMapper.selectList(new LambdaQueryWrapper() .select(JobTaskBatch::getWorkflowTaskBatchId, JobTaskBatch::getWorkflowNodeId, JobTaskBatch::getTaskBatchStatus, JobTaskBatch::getOperationReason) .eq(JobTaskBatch::getWorkflowTaskBatchId, workflowTaskBatch.getId()) .in(JobTaskBatch::getWorkflowNodeId, - Sets.union(successors, Sets.newHashSet(taskExecute.getParentId(), brotherNode))) + Sets.union(union, Sets.newHashSet(taskExecute.getParentId()))) ); List workflowNodes = workflowNodeMapper.selectList(new LambdaQueryWrapper() @@ -193,12 +195,14 @@ public class WorkflowExecutorActor extends AbstractActor { List jobTaskBatches = jobTaskBatchMap.get(nodeId); // 说明此节点未执行, 继续等待执行完成 if (CollectionUtils.isEmpty(jobTaskBatches)) { + EasyRetryLog.LOCAL.info("存在未完成的兄弟节点. [{}]", nodeId); return Boolean.FALSE; } boolean isCompleted = jobTaskBatches.stream().anyMatch( jobTaskBatch -> JobTaskBatchStatusEnum.NOT_COMPLETE.contains(jobTaskBatch.getTaskBatchStatus())); if (isCompleted) { + EasyRetryLog.LOCAL.info("存在未完成的兄弟节点. [{}]", nodeId); return Boolean.FALSE; } } diff --git a/frontend/src/api/jobApi.js b/frontend/src/api/jobApi.js index 14c27c41..8d2197ce 100644 --- a/frontend/src/api/jobApi.js +++ b/frontend/src/api/jobApi.js @@ -4,8 +4,8 @@ const jobApi = { jobPageList: '/job/page/list', jobList: '/job/list', jobDetail: '/job/', - saveJob: '/job/', - updateJob: '/job/', + saveJob: '/job', + updateJob: '/job', updateJobStatus: '/job/status', delJob: '/job/', timeByCron: '/job/cron',