Skip to content

Commit

Permalink
feat: refine doWork errMsg
Browse files Browse the repository at this point in the history
  • Loading branch information
ifooth committed Sep 2, 2024
1 parent b1c2ae8 commit e5589d9
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 22 deletions.
33 changes: 14 additions & 19 deletions bcs-common/common/task/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -374,63 +374,58 @@ func (m *TaskManager) doWork(taskID string, stepName string) error { // nolint
state.updateStepSuccess(start)
return nil
}

retErr := fmt.Errorf("task %s step %s running failed, err=%s", taskID, stepName, stepErr)
// 单步骤主动revoke的不再重试
if errors.Is(stepErr, istep.ErrRevoked) {
state.updateStepFailure(start, stepErr, &taskEndStatus{status: types.TaskStatusFailure})
return retErr
}

state.updateStepFailure(start, stepErr, nil)
if step.GetRetryCount() < step.MaxRetries {

// 单步骤主动revoke或者没有重试次数时, 不再重试
if !errors.Is(stepErr, istep.ErrRevoked) && step.GetRetryCount() < step.MaxRetries {
retryIn := time.Second * time.Duration(retryNext(int(step.GetRetryCount())))
log.INFO.Printf("retry task %s step %s, retried=%d, maxRetries=%d, retryIn=%s",
taskID, step.GetName(), step.GetRetryCount(), step.MaxRetries, retryIn)
return tasks.NewErrRetryTaskLater(retErr.Error(), retryIn)
log.INFO.Printf("retry task %s step %s, err=%s, retried=%d, maxRetries=%d, retryIn=%s",
taskID, stepName, stepErr, step.GetRetryCount(), step.MaxRetries, retryIn)
return tasks.NewErrRetryTaskLater(stepErr.Error(), retryIn)
}

if step.GetSkipOnFailed() {
return nil
}

retErr := fmt.Errorf("task %s step %s running failed, err=%w", taskID, stepName, stepErr)
return retErr

case <-stepCtx.Done():
// step timeout
stepErr := fmt.Errorf("step exec timeout")

retErr := fmt.Errorf("%w, task=%s, step=%s", stepErr, taskID, stepName)
state.updateStepFailure(start, stepErr, nil)

if step.GetRetryCount() < step.MaxRetries {
retryIn := time.Second * time.Duration(retryNext(int(step.GetRetryCount())))
log.INFO.Printf("retry task %s step %s, retried=%d, maxRetries=%d, retryIn=%s",
taskID, step.GetName(), step.GetRetryCount(), step.MaxRetries, retryIn)
return tasks.NewErrRetryTaskLater(retErr.Error(), retryIn)
log.INFO.Printf("retry task %s step %s, err=%s, retried=%d, maxRetries=%d, retryIn=%s",
taskID, stepName, stepErr, step.GetRetryCount(), step.MaxRetries, retryIn)
return tasks.NewErrRetryTaskLater(stepErr.Error(), retryIn)
}

if step.GetSkipOnFailed() {
return nil
}

retErr := fmt.Errorf("task %s step %s running failed, err=%w", taskID, stepName, stepErr)
return retErr

case <-revokeCtx.Done():
// task revoke
stepErr := fmt.Errorf("task has been revoked")
retErr := fmt.Errorf("%w, task=%s, step=%s", stepErr, taskID, stepName)
state.updateStepFailure(start, stepErr, &taskEndStatus{status: types.TaskStatusRevoked})

// 取消指令, 不再重试
retErr := fmt.Errorf("task %s step %s running failed, err=%w", taskID, stepName, stepErr)
return retErr

case <-taskCtx.Done():
// task timeout
stepErr := fmt.Errorf("task exec timeout")
retErr := fmt.Errorf("%w, task=%s, step=%s", stepErr, taskID, stepName)
state.updateStepFailure(start, stepErr, &taskEndStatus{status: types.TaskStatusTimeout})

// 整个任务结束
retErr := fmt.Errorf("task %s step %s running failed, err=%w", taskID, stepName, stepErr)
return retErr

case <-m.ctx.Done():
Expand Down
4 changes: 2 additions & 2 deletions bcs-common/common/task/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,9 +310,9 @@ func (s *State) updateStepFailure(start time.Time, stepErr error, taskStatus *ta

func (s *State) isLastStep(step *types.Step) bool {
count := len(s.task.Steps)
// 没有step默认返回false
// 没有step也就没有后续流程, 返回true
if count == 0 {
return false
return true
}

// 非最后一步
Expand Down
2 changes: 1 addition & 1 deletion bcs-common/common/task/stores/mysql/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func (t *TaskRecord) BeforeUpdate(tx *gorm.DB) error {
// StepRecord 步骤记录
type StepRecord struct {
gorm.Model
TaskID string `json:"taskID" gorm:"type:varchar(255);index:idx_task_id;uniqueIndex:idx_task_id_step_name"` // nolint
TaskID string `json:"taskID" gorm:"type:varchar(255);uniqueIndex:idx_task_id_step_name"`
Name string `json:"name" gorm:"type:varchar(255);uniqueIndex:idx_task_id_step_name"`
Alias string `json:"alias" gorm:"type:varchar(255)"`
Executor string `json:"executor" gorm:"type:varchar(255)"`
Expand Down

0 comments on commit e5589d9

Please sign in to comment.