重试引发重复扣款:一次 DB 瞬时故障暴露 agent 工作流幂等陷阱
Common_Dream9420 · reddit · 2026-10-14
作者讲述了一次真实事故:后台工作流运行数周正常后,因数据库瞬时错误触发重试——Step 2 已提交的 DB 写入经 CDC 发出事件被消费,Step 3 在持久化 checkpoint 之前失败,编排器重试 Step 2 导致第二次写入与事件,最终三条客户记录状态异常、一笔费用被扣两次。
核心教训:
- HTTP 200 不代表最终业务状态正确,也不代表副作用只执行了一次
- 凡是「已提交步骤被重试」的场景(后台任务、CRUD 工作流)都会踩中;agent 生成并快速运行这类逻辑,让问题更易出现
- 幂等键、outbox 模式、去重机制是标准解法,但真正要验证的是它们在故障序列下是否生效
作者正围绕「确定性验证」构建 FetchSandbox:团队定义精确规则(如仅允许一次客户更新),工具注入受控故障、观察应用重试后读取实际落库状态,返回 pass/fail/unmeasured,工作流变更后可重复运行。作者正在找 design partner 完善 DB 故障注入与 CDC 相关测试栈。
「编程与Agent」频道最新
- Anthropic 日均合并 3 万次代码变更,人工改为审查变更意图 — ronbodkin · 2026-10-14
- Anthropic 日均合并 3 万行代码变更,5 月以来增长 12 倍 — ronbodkin · 2026-10-14
- 把乱代码塞进独立函数,算重构还是只是装箱? — jimmykoppel · 2026-10-14
- Claude Code 2.1.299 即将发布,更新内容待揭晓 — ClaudeCodeLog · 2026-10-14
- Notion 们纷纷做 MCP,"for agents"软件或成新赛道 — Historical_Kick3793 · 2026-10-14
- 大型代码库难引导 agent:缺防护栏导致产出大量 slop — yoyoyoav · 2026-10-14