统一P0-10任务尝试取消状态
This commit is contained in:
parent
32d5e45df0
commit
bd3f9e27ec
@ -304,7 +304,7 @@ func (r *SQLTaskRepository) CancelTask(ctx context.Context, id, message string,
|
||||
rollback()
|
||||
return errors.New("任务当前无法取消")
|
||||
}
|
||||
if _, err := tx.ExecContext(ctx, r.query(`UPDATE task_attempts SET status = 'cancelled', message = ?, finished_at = ? WHERE task_id = ? AND status IN ('queued', 'running')`), message, nullableTime(finishedAt), id); err != nil {
|
||||
if _, err := tx.ExecContext(ctx, r.query(`UPDATE task_attempts SET status = 'cancelled', message = ?, finished_at = ? WHERE task_id = ? AND status IN ('queued', 'running', 'retry_wait', 'cancelling')`), message, nullableTime(finishedAt), id); err != nil {
|
||||
rollback()
|
||||
return fmt.Errorf("取消任务尝试失败:%w", err)
|
||||
}
|
||||
|
||||
@ -182,6 +182,39 @@ func TestSQLTaskRepositoryCancelMarksRunningAttempt(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSQLTaskRepositoryCancelMarksAllActiveAttempts(t *testing.T) {
|
||||
repository, db := newTaskRepositoryTest(t)
|
||||
defer db.Close()
|
||||
ctx := context.Background()
|
||||
now := time.Now().UTC()
|
||||
activeStatuses := []string{"queued", "running", "retry_wait", "cancelling"}
|
||||
domainIDs := []string{"domain-1", "domain-2", "domain-3", "domain-1"}
|
||||
for index, status := range activeStatuses {
|
||||
taskID := "task-cancel-active-" + status
|
||||
attemptID := "attempt-cancel-active-" + status
|
||||
if err := repository.CreateTask(ctx, Task{
|
||||
ID: taskID, DomainID: domainIDs[index], TaskType: "certificate_issue",
|
||||
Status: status, Stage: "certificate_issue", Message: "\u6b63\u5728\u6267\u884c", CreatedAt: now, UpdatedAt: now,
|
||||
}); err != nil {
|
||||
t.Fatalf("create %s task: %v", status, err)
|
||||
}
|
||||
if err := repository.CreateAttempt(ctx, TaskAttempt{
|
||||
ID: attemptID, TaskID: taskID, AttemptNumber: 1,
|
||||
Stage: "certificate_issue", Status: status, Message: "\u6b63\u5728\u6267\u884c", StartedAt: &now, CreatedAt: now,
|
||||
}); err != nil {
|
||||
t.Fatalf("create %s attempt: %v", status, err)
|
||||
}
|
||||
|
||||
finished := now.Add(time.Second)
|
||||
if err := repository.CancelTask(ctx, taskID, "\u4efb\u52a1\u5df2\u7531\u7528\u6237\u53d6\u6d88", &finished); err != nil {
|
||||
t.Fatalf("cancel %s task: %v", status, err)
|
||||
}
|
||||
attempts, err := repository.ListAttempts(ctx, taskID)
|
||||
if err != nil || len(attempts) != 1 || attempts[0].Status != "cancelled" || attempts[0].FinishedAt == nil {
|
||||
t.Fatalf("cancel %s attempt state: %+v %v", status, attempts, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
func TestSQLTaskRepositoryDoesNotOverwriteCancelledTask(t *testing.T) {
|
||||
repository, db := newTaskRepositoryTest(t)
|
||||
defer db.Close()
|
||||
|
||||
@ -3681,3 +3681,14 @@ Linux Ubuntu 22.04 上的 `Scert-admin` 手动启停、无开机自启动、无
|
||||
- [~] P0-10 其他任务入口、任务尝试矩阵、跨数据库实机矩阵和统一复审继续进行。
|
||||
- [ ] P0-12 备份恢复、浏览器、密码 SSH、远端部署和最终生产门禁尚未完成。
|
||||
- [!] 总体验收继续保持 **P0-03:完成,待复审**,不得将本地自动化结果标记为生产验收通过。
|
||||
|
||||
## 最新进度追加(2026-09-29,P0-10 通用取消入口状态一致性)
|
||||
|
||||
总体验收继续保持 **P0-03:完成,待复审**;本轮补齐通用仓储取消入口,不代表 P0-10 统一复审或生产部署验收通过。
|
||||
|
||||
- [x] 已完成,等待复审:通用 `CancelTask` 取消任务时,任务尝试同步覆盖 `queued`、`running`、`retry_wait`、`cancelling` 四种活动状态。
|
||||
- [x] 已完成,等待复审:新增四种活动状态的仓储回归测试,确认任务及任务尝试均进入 `cancelled` 并记录完成时间。
|
||||
- [x] 已完成,等待复审:`go test ./...`、`go vet ./...`、`git diff --check` 均通过。
|
||||
- [~] 进行中:P0-10 其他任务入口、跨数据库实机矩阵、崩溃恢复、重试幂等和统一复审仍需继续。
|
||||
- [ ] 未开始:P0-12 备份恢复及最终生产门禁仍未完成。
|
||||
- [!] 总体验收不得升级,当前仍为 **P0-03:完成,待复审**,没有新增 `[✓]` 复审通过项。
|
||||
@ -985,3 +985,14 @@ P0-05 从 `[!]` 调整为 `[~]`,并未标记完成;P0-04 剩余门禁和全
|
||||
- [~] 进行中:P0-10 仍需继续审查其他任务入口、重试、幂等、恢复和跨数据库行为。
|
||||
- [ ] 未开始:P0-12 备份恢复以及最终生产流程门禁。
|
||||
- [!] 总体验收保持 **P0-03:完成,待复审**,没有新增 `[✓]`。
|
||||
|
||||
## 最新进度追加(2026-09-29,P0-10 通用取消入口状态一致性)
|
||||
|
||||
总体验收继续保持 **P0-03:完成,待复审**;本轮补齐通用仓储取消入口,不代表 P0-10 统一复审或生产部署验收通过。
|
||||
|
||||
- [x] 已完成,等待复审:通用 `CancelTask` 取消任务时,任务尝试同步覆盖 `queued`、`running`、`retry_wait`、`cancelling` 四种活动状态。
|
||||
- [x] 已完成,等待复审:新增四种活动状态的仓储回归测试,确认任务及任务尝试均进入 `cancelled` 并记录完成时间。
|
||||
- [x] 已完成,等待复审:`go test ./...`、`go vet ./...`、`git diff --check` 均通过。
|
||||
- [~] 进行中:P0-10 其他任务入口、跨数据库实机矩阵、崩溃恢复、重试幂等和统一复审仍需继续。
|
||||
- [ ] 未开始:P0-12 备份恢复及最终生产门禁仍未完成。
|
||||
- [!] 总体验收不得升级,当前仍为 **P0-03:完成,待复审**,没有新增 `[✓]` 复审通过项。
|
||||
@ -1632,3 +1632,14 @@ P0-11 生产验收门禁
|
||||
- [~] 进行中:P0-10 其余任务入口、跨数据库实机矩阵、崩溃恢复复核和统一复审仍需继续。
|
||||
- [ ] 未开始:P0-12 备份恢复、最终浏览器清缓存、密码 SSH、远端部署和生产门禁仍未完成。
|
||||
- [!] 总体验收不得升级,当前仍为 **P0-03 完成,待复审**,没有新增 `[✓]` 复审通过项。
|
||||
|
||||
## 最新进度追加(2026-09-29,P0-10 通用取消入口状态一致性)
|
||||
|
||||
总体验收继续保持 **P0-03:完成,待复审**;本轮补齐通用仓储取消入口,不代表 P0-10 统一复审或生产部署验收通过。
|
||||
|
||||
- [x] 已完成,等待复审:通用 `CancelTask` 取消任务时,任务尝试同步覆盖 `queued`、`running`、`retry_wait`、`cancelling` 四种活动状态。
|
||||
- [x] 已完成,等待复审:新增四种活动状态的仓储回归测试,确认任务及任务尝试均进入 `cancelled` 并记录完成时间。
|
||||
- [x] 已完成,等待复审:`go test ./...`、`go vet ./...`、`git diff --check` 均通过。
|
||||
- [~] 进行中:P0-10 其他任务入口、跨数据库实机矩阵、崩溃恢复、重试幂等和统一复审仍需继续。
|
||||
- [ ] 未开始:P0-12 备份恢复及最终生产门禁仍未完成。
|
||||
- [!] 总体验收不得升级,当前仍为 **P0-03:完成,待复审**,没有新增 `[✓]` 复审通过项。
|
||||
@ -563,3 +563,14 @@ P0-06 与 P0-07 均维持 `[~]`,六阶段中的隔离、生产和最终验收
|
||||
- [~] P0-10 其他任务链与三数据库实机复核仍在进行。
|
||||
- [ ] P0-12 备份恢复及最终生产门禁尚未开始。
|
||||
- [!] 总体验收不得升级,仍为 **P0-03:完成,待复审**。
|
||||
|
||||
## 最新进度追加(2026-09-29,P0-10 通用取消入口状态一致性)
|
||||
|
||||
总体验收继续保持 **P0-03:完成,待复审**;本轮补齐通用仓储取消入口,不代表 P0-10 统一复审或生产部署验收通过。
|
||||
|
||||
- [x] 已完成,等待复审:通用 `CancelTask` 取消任务时,任务尝试同步覆盖 `queued`、`running`、`retry_wait`、`cancelling` 四种活动状态。
|
||||
- [x] 已完成,等待复审:新增四种活动状态的仓储回归测试,确认任务及任务尝试均进入 `cancelled` 并记录完成时间。
|
||||
- [x] 已完成,等待复审:`go test ./...`、`go vet ./...`、`git diff --check` 均通过。
|
||||
- [~] 进行中:P0-10 其他任务入口、跨数据库实机矩阵、崩溃恢复、重试幂等和统一复审仍需继续。
|
||||
- [ ] 未开始:P0-12 备份恢复及最终生产门禁仍未完成。
|
||||
- [!] 总体验收不得升级,当前仍为 **P0-03:完成,待复审**,没有新增 `[✓]` 复审通过项。
|
||||
Loading…
Reference in New Issue
Block a user