From 220119afaaf2ac4134428e41069c5878fb275ce6 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Thu, 1 Feb 2024 23:50:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=203.1.0=201.=20=E4=BF=AE=E6=94=B9404?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/job/task/support/cache/MutableGraphCache.java | 4 ++++ .../job/task/support/dispatch/WorkflowExecutorActor.java | 6 +++++- frontend/src/api/jobApi.js | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) 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 e67515753..bab1f8305 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 b7b6c88b7..6f21d7f55 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 14c27c41b..8d2197ce5 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',