#839·openwiki

.last-update.json 不是原子式写入; 失败或并发写入可能会使其损坏

作者: Yashwanth-Kumar-Kotla创建于 2026年9月8日更新于 2026年9月8日

错误描述 src/agent/utils.ts 中的 writeLastUpdateMetadata 使用 mkdir + writeFile 来写入 .last-update.json,没有使用临时文件和重命名。如果写入失败或同时进行写入,则可能会导致文件被截断或损坏,readLastUpdate 中的 catch (SyntaxError) → return null 会默默地将其视为“没有先前的元数据”,从而丢弃文件实际记录的内容。这与 #407 中为 ~/.openwiki/.env 已经修复的错误类似:writeFile 会以 O_TRUNC 打开目标文件,在写入新内容之前将其截短为零,因此在写入过程中出现任何故障(磁盘满、崩溃、电源中断)都会导致文件为空。在该修复发布时,.last-update.json 就被忽略了。

内容来源: langchain-ai/openwiki