2.2 KiB
FAIL
crates/ely-office/src/recover.rs:66 — 解封或载入失败的恢复点会在正常退出后的下一次启动被删除。held、reopening 虽保留在索引中,end() 仍清掉崩溃标记,随后 start() 第 57 行按 Clean 删除整个恢复目录。实测:提供有效封存 PDF 恢复点,钥匙串暂不可用时窗口提示恢复失败,索引和恢复点仍在;直接 Cmd+Q 正常退出,再启动时恢复点从 1 个变为 0(/tmp/c065-r2-held-result.log、/tmp/c065-r2-held-first-ax.log)。用户尚未保存或明确放弃该副本,唯一持久内容已丢失,R1 的失败保留修复仍存在此缺口。修复方向:持久记录尚待处理的恢复条目,正常退出后继续保留并重试,直到成功交接、保存或用户明确放弃。
crates/ely-office/src/recover.rs:216 — 恢复索引写入失败只进日志,恢复任务继续成功写点,界面隐去影响崩溃恢复的错误。实测:以空崩溃索引启动,将 index.json 设为 0444,打开 PDF 并旋转页面;生成 1 个 .bin,索引仍为 [],日志报告 Permission denied,AX 树没有恢复失败提示;杀掉应用、恢复索引权限后重启,恢复点文件仍在,窗口没有恢复标签(/tmp/c065-r2-index-result.log、/tmp/c065-r2-index-first-app.log、/tmp/c065-r2-index-first-ax.log)。违反 §6.2 的恢复要求及暴露错误规则。修复方向:将索引持久化失败传回界面,保留待写条目并重试,确保报告成功的恢复点具有可供下次启动读取的持久索引。
crates/ely-office/src/recover.rs:291 — 接过旧恢复点时仅用 at 显示恢复提示,Keeping.last 仍为 None,故障条只读取这个值。实测:ElyPDF 从已有恢复点打开未命名副本,在下一轮快照前 SIGKILL worker;AX 树同时显示副本的恢复时间和 Last recovery point: none yet(/tmp/c065-r2-recovered-time-ax.log)。恢复点实际存在,§6.3 要求的最近恢复时间显示错误。修复方向:恢复交接时同步已有持久恢复点的时间,让故障条读取当前保留恢复点的实际最近成功时间,并覆盖首次恢复后立即停止引擎的场景。