From 8c303a2f6c42d4466ade0d0c28105f9c08c4c53a Mon Sep 17 00:00:00 2001 From: leozhang2018 Date: Fri, 10 Apr 2026 10:58:41 +0800 Subject: [PATCH] fix:implement workflow task cancellation before deletion in DeleteWorkflowV4 function. Signed-off-by: leozhang2018 --- .../core/workflow/service/workflow/workflow_v4.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go index f6c7754643..eec39e6d20 100644 --- a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go +++ b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go @@ -58,6 +58,7 @@ import ( commonservice "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service" "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/collaboration" helmservice "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/helm" + runtimeWorkflowController "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/workflowcontroller" "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/kube" larkservice "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/lark" "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/service/s3" @@ -305,6 +306,20 @@ func FindWorkflowV4Raw(name string, logger *zap.SugaredLogger) (*commonmodels.Wo } func DeleteWorkflowV4(name string, logger *zap.SugaredLogger) error { + // Cancel any queued or running tasks before deleting the workflow. + taskQueue, err := commonrepo.NewWorkflowQueueColl().List(&commonrepo.ListWorfklowQueueOption{ + WorkflowName: name, + }) + if err != nil { + logger.Errorf("Failed to list queued tasks for workflow %s, the error is: %v", name, err) + return e.ErrDeleteWorkflow.AddErr(err) + } + for _, task := range taskQueue { + if err := runtimeWorkflowController.CancelWorkflowTask("system", task.WorkflowName, task.TaskID, logger); err != nil { + logger.Warnf("Failed to cancel task %d for workflow %s before deletion, the error is: %v", task.TaskID, name, err) + } + } + workflow, err := commonrepo.NewWorkflowV4Coll().Find(name) if err != nil { logger.Errorf("Failed to delete WorkflowV4: %s, the error is: %v", name, err)