MVP-0 不使用 Redis/MQ,必须依靠 MySQL 8 在并发 worker 下安全认领、恢复过期任务并阻止陈旧 worker 覆盖新结果。
FOR UPDATE SKIP LOCKED
预计修改文件:
internal/core/queue/
NOW(6)
users
docs/
go test ./internal/core/queue/...
go test -race
未执行或因环境不足无法执行的验证必须如实回写,不得把预期结果记为通过。
919e11f
main
80fb8f8d4b4d
No dependencies set.
The note is not visible to the blocked user.
基本信息
依赖与并行
子项目影响
原始需求
要解决什么
MVP-0 不使用 Redis/MQ,必须依靠 MySQL 8 在并发 worker 下安全认领、恢复过期任务并阻止陈旧 worker 覆盖新结果。
做什么 / 不做什么
做
FOR UPDATE SKIP LOCKED选择 pending 或租约过期的 running。不做
已确认方案
预计修改文件:
internal/core/queue/需求变化记录
NOW(6)作为租约比较/写入时钟,避免应用时钟偏差;同用户幂等创建通过事务锁定users行串行化,不依赖驱动特定错误解析。claim 追加 attempt 起始项,最终 CAS 替换该项并与输出/失败状态同事务提交。实现中若范围、接口、数据、依赖、验收或风险发生变化,必须先更新本工单;改变已确认结果时重新等待用户确认。设计与原型门禁
文档影响
docs/,不得直接维护镜像交付文档影响
验收标准
验证方式
go test ./internal/core/queue/...go test -race未执行或因环境不足无法执行的验证必须如实回写,不得把预期结果记为通过。
风险和回退
实施与验证证据(2026-08-21)
验收结论
919e11f,已推送到main。80fb8f8d4b4d。