跳转至

超时与恢复演练

本演练检验最容易造成重复效果的路径:服务已提交,但客户端认为没有结果。可运行命令见快速上手。

预期过程

  1. 读取 doc_contract_001 的修订 7。
  2. 用 review_contract_001 提交固定输入,服务把决定和操作回执一起持久化。
  3. 丢弃正常应答,客户端只见 unknown。
  4. 关闭并重开参考提供方,使用原键恢复。
  5. 核对同一操作引用、修订 8、审批状态和质量边界。
  6. 同键重放仍只有一个领域效果;异输入或新键旧修订被拒绝。

必测故障点

故障点 合理行为 测试层
输入无效 blocked,未写入 Schema 与业务测试
文档在提交前改变 revision_conflict,不自动接纳新修订 业务测试
操作记录写入失败 领域变化一起回滚 事务测试
服务已提交、应答丢失 unknown,原键恢复 参考实现测试
同键并发 返回同一回执,只有一个效果 并发测试
恢复时撤权 forbidden,不披露旧结果 授权顺序测试
保留期结束 operation_expired,人工核对 时钟注入测试
下游提交后本地失败 保持原外部身份核对,不换键 真实集成必须另测

最后一项不在本地 SQLite 示例覆盖范围内。生产接入要模拟下游超时、持久队列重放和外部恢复,不能用本地测试替代。

恢复记录

记录动作及修订、范围、原操作键、输入摘要、最后可观察状态、已确认效果及阻塞原因。不要在普通日志中复制敏感输入或凭据。若只能人工核对,提供准确入口和所需决定,保留原任务。

“查不到操作”与“确认从未接收”是不同事实。只有服务端事务边界或可信外部回执足以证明后者时,才可依据当前授权考虑重新执行。