Files
ElyOffice/tasks/reviews/C06.5-r3.md
T

4 lines
1.1 KiB
Markdown

FAIL
crates/ely-office/src/recover.rs:96 — 恢复索引直接覆写原文件,短写失败会破坏上一份有效清单,使已成功持久化的恢复点在下一次启动无法恢复,违反 §6.2、§6.3。具体复现:已有一个恢复点及有效索引,调用生产 `Keeping::save_index()`,用 `RLIMIT_FSIZE=16` 注入文件写入中途失败;调用返回 `FileTooLarge`,原索引只剩 `[{"slot":"old","`,恢复点仍有 1 个。恢复写入条件并正常退出后,`Keeping::start_in()` 返回 `InvalidData: EOF while parsing a string`;应用因第 138 行的启动错误关闭本次恢复功能,索引重试也无法在下次运行执行(/tmp/c065-r3-index-probe.log)。磁盘耗尽或进程在索引覆写期间退出同样会留下不完整索引。修复方向:先完整写入并校验暂存索引,再原子替换,失败时保留上一份有效索引,并覆盖短写与重启场景;临时副本采用暂存后替换,在同一故障下注入失败后原索引仍完整、再次启动成功(/tmp/c065-r3-index-atomic-control.log)。