fix: recover expired rectification handoffs
This commit is contained in:
@@ -329,3 +329,19 @@
|
||||
- 相关记录:BUG-009、BUG-017
|
||||
- 复发自:无
|
||||
- 修复版本:待提交
|
||||
|
||||
## BUG-019 | 原问题交接租约过期后永久显示处理中
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-07-22
|
||||
- 最近更新:2026-07-22
|
||||
- 影响面:生时校正范围终态、跨设备/失败重试、durable 原问题 handoff
|
||||
- 用户现象:一次继续咨询在输出前失败后,刷新仍无法重试,接口返回“原问题状态已经变化”。
|
||||
- 触发条件:handoff 处于 `claimed` 或 `executing`,两分钟租约已经过期,客户端重新加载交接。
|
||||
- 根因:数据库 projection 只看持久化 state,把过期租约仍投影为 `in_progress`;客户端因此不会发起 claim,而执行 RPC 又正确拒绝过期租约,形成永久卡死。
|
||||
- 修复:projection 将已过期的 `claimed`/`executing` 租约投影为 `pending`,复用既有加锁 claim RPC 原子接管;未过期租约仍保持 `in_progress`,双设备隔离不变。
|
||||
- 验证:迁移契约测试锁定过期租约恢复语义;生产制造过期 claim 后重新加载、claim、执行模型咨询和 settle。
|
||||
- 防复发:所有租约型状态的读取投影必须同时解释 lease deadline,不允许只依赖枚举 state。
|
||||
- 相关记录:BUG-017、BUG-018
|
||||
- 复发自:无
|
||||
- 修复版本:待提交
|
||||
|
||||
Reference in New Issue
Block a user