超时与恢复演练¶
本演练检验最容易造成重复效果的路径:服务已提交,但客户端认为没有结果。可运行命令见快速上手。
预期过程¶
- 读取
doc_contract_001的修订7。 - 用
review_contract_001提交固定输入,服务把决定和操作回执一起持久化。 - 丢弃正常应答,客户端只见
unknown。 - 关闭并重开参考提供方,使用原键恢复。
- 核对同一操作引用、修订
8、审批状态和质量边界。 - 同键重放仍只有一个领域效果;异输入或新键旧修订被拒绝。
必测故障点¶
| 故障点 | 合理行为 | 测试层 |
|---|---|---|
| 输入无效 | blocked,未写入 | Schema 与业务测试 |
| 文档在提交前改变 | revision_conflict,不自动接纳新修订 | 业务测试 |
| 操作记录写入失败 | 领域变化一起回滚 | 事务测试 |
| 服务已提交、应答丢失 | unknown,原键恢复 | 参考实现测试 |
| 同键并发 | 返回同一回执,只有一个效果 | 并发测试 |
| 恢复时撤权 | forbidden,不披露旧结果 | 授权顺序测试 |
| 保留期结束 | operation_expired,人工核对 | 时钟注入测试 |
| 下游提交后本地失败 | 保持原外部身份核对,不换键 | 真实集成必须另测 |
最后一项不在本地 SQLite 示例覆盖范围内。生产接入要模拟下游超时、持久队列重放和外部恢复,不能用本地测试替代。
恢复记录¶
记录动作及修订、范围、原操作键、输入摘要、最后可观察状态、已确认效果及阻塞原因。不要在普通日志中复制敏感输入或凭据。若只能人工核对,提供准确入口和所需决定,保留原任务。
“查不到操作”与“确认从未接收”是不同事实。只有服务端事务边界或可信外部回执足以证明后者时,才可依据当前授权考虑重新执行。