1.1 KiB
1.1 KiB
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)。