All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m6s
线上保持现有纯 Asynq 架构,以公平孤儿扫描和提交后投递消除永久饥饿及事务可见性竞态。 Constraint: 线上保持现有纯 Asynq 架构,不引入 Outbox、迁移或新任务基础设施。 Rejected: 事务内投递或扩大扫描 LIMIT | 无法消除竞态和永久饥饿。 Confidence: high Scope-risk: narrow Directive: 后续分支整合时按目标分支的套餐接续架构独立处理,不混用本热修实现。 Tested: go build ./...(退出码 0);git diff --check;openspec validate fix-main-package-activation-starvation --strict。 Not-tested: 按用户要求未新增、修改或运行自动化测试;线上 SQL、查询计划和日志待部署后核验。
1.3 KiB
1.3 KiB
1. Main 分支隔离与基线
- 1.1 确认变更仅面向
main的纯 Asynq 套餐接续链路,并保持 Outbox 与新任务基础设施为非目标。 - 1.2 检索套餐激活方法的全部调用点及现有错误码、Redis 键和任务重试配置,锁定最小修改边界。
2. 过期接续与孤儿恢复
- 2.1 将孤儿恢复改为数据库先按载体选择队首并排除
status IN (1,2)占位套餐,最后限制 100 个真实孤儿,删除逐条占位查询。 - 2.2 将旧主套餐过期后的下一套餐投递移到事务提交后,保留现有停机检查和周期孤儿补偿。
3. 激活结果与重试语义
- 3.1 让指定套餐激活显式返回是否实际激活,并在 Redis 激活锁冲突时返回现有套餐激活冲突错误。
- 3.2 调整 Asynq Handler 日志,仅在实际激活时记录成功,未激活时记录明确的跳过信息。
4. 文档、验证与提交
- 4.1 更新功能总结和 README,说明
main纯 Asynq 热修边界、部署观察项及回滚方式。 - 4.2 执行
gofmt、git diff --check、go build ./...和 OpenSpec 严格校验;按用户要求不新增、修改或运行自动化测试。 - 4.3 仅暂存本热修代码、文档和独立 OpenSpec,创建符合 Lore 协议的中文提交。