From 96bd37e17ab10a2c70a0bdb88cf14538e0c28385 Mon Sep 17 00:00:00 2001 From: carlchen2 Date: Fri, 16 Jan 2026 18:19:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E9=9B=86=E7=BE=A4=E5=88=86=E5=8F=91=E4=BB=BB=E5=8A=A1=E6=98=AF?= =?UTF-8?q?rabbitmq=E5=BC=82=E5=B8=B8=E5=AF=BC=E8=87=B4=E9=9B=86=E7=BE=A4?= =?UTF-8?q?=E4=B8=80=E7=9B=B4=E5=A4=84=E4=BA=8E=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/actions/cluster/import.go | 19 +++++++++++++++++++ .../internal/actions/task/update.go | 9 +++++++++ .../cluster/table-cell-action.vue | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go index 8764ad0f48..70b9330937 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go @@ -333,6 +333,25 @@ func (ia *ImportAction) importClusterTask(ctx context.Context, cls *cmproto.Clus blog.Errorf("dispatch create cluster task for cluster %s failed, %s", cls.ClusterName, err.Error(), ) + + // update task status to failure when dispatch failed, avoid task stuck in INIT status + task.Status = cloudprovider.TaskStatusFailure + task.Message = fmt.Sprintf("dispatch task failed: %s", err.Error()) + task.End = time.Now().Format(time.RFC3339) + + if updateErr := ia.model.UpdateTask(ctx, task); updateErr != nil { + blog.Errorf("update task %s status to failure failed: %s", + task.TaskID, updateErr.Error()) + } + + // update cluster status to import-failure when dispatch failed, avoid cluster stuck in INITIALIZATION status + cls.Status = common.StatusImportClusterFailed + cls.Message = fmt.Sprintf("dispatch task failed: %s", err.Error()) + if updateErr := ia.model.UpdateCluster(ctx, cls); updateErr != nil { + blog.Errorf("update cluster %s status to import-failure failed: %s", + cls.ClusterID, updateErr.Error()) + } + ia.setResp(common.BcsErrClusterManagerTaskErr, err.Error()) return err } diff --git a/bcs-services/bcs-cluster-manager/internal/actions/task/update.go b/bcs-services/bcs-cluster-manager/internal/actions/task/update.go index fd0c607b2b..97f6815d7d 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/task/update.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/task/update.go @@ -174,6 +174,10 @@ func (ua *RetryAction) validate() error { } func (ua *RetryAction) distributeTask() error { + // save current status + originStatus := ua.task.Status + originMessage := ua.task.Message + ua.task.Status = cloudprovider.TaskStatusRunning ua.task.Message = "task retrying" @@ -184,6 +188,11 @@ func (ua *RetryAction) distributeTask() error { } if err = taskserver.GetTaskServer().Dispatch(ua.task); err != nil { blog.Errorf("dispatch retry task[%s] for cluster %s failed, %s", ua.req.TaskID, ua.task.ClusterID, err.Error()) + + ua.task.Status = originStatus + ua.task.Message = originMessage + _ = ua.model.UpdateTask(ua.ctx, ua.task) + return err } blog.Infof("retry cluster[%s] task[%s] type %s successfully", ua.task.ClusterID, ua.task.TaskID, ua.task.TaskType) diff --git a/bcs-ui/frontend/src/views/cluster-manage/cluster/table-cell-action.vue b/bcs-ui/frontend/src/views/cluster-manage/cluster/table-cell-action.vue index 156da7b075..2f655306a7 100644 --- a/bcs-ui/frontend/src/views/cluster-manage/cluster/table-cell-action.vue +++ b/bcs-ui/frontend/src/views/cluster-manage/cluster/table-cell-action.vue @@ -9,7 +9,7 @@ -