Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</bk-button>
</template>
<!-- 失败状态 -->
<template v-else-if="['CREATE-FAILURE', 'DELETE-FAILURE'].includes(row.status)">
<template v-else-if="['CREATE-FAILURE', 'DELETE-FAILURE', 'IMPORT-FAILURE'].includes(row.status)">
<bk-button
class="mr-[10px]"
text
Expand Down
Loading