Oracle 审核 docs/design.md Section 3.2 WAL
docs/design.md
Section 3.2 "CURRENT / MANIFEST 权威性"(~line 420)与 "WAL 元数据持久化协议"(~line 181)
设计明确声明 CURRENT 只是写入侧辅助文件,recovery 权威源是 MANIFEST + 目录扫描。但 durable-ready 协议要求在 segment 可承载写入前更新 CURRENT 并 fsync(步骤 6-7)。这意味着 CURRENT 更新是 batch 确认成功的前提之一,但 recovery 又不依赖它。
CURRENT
MANIFEST + 目录扫描
两个路径对 CURRENT 的依赖程度不一致:
方案 A(推荐):简化 durable-ready 协议,移除 CURRENT 更新作为 batch 确认前提。
Recovery 通过 MANIFEST + 目录扫描发现 segment,CURRENT 仅作为写入侧快速定位优化。 新 segment 只需 rename + WAL directory fsync 即可进入 durable-ready。
方案 B:让 CURRENT 成为 recovery 的必要组件。
这样需要处理 CURRENT 损坏/缺失的 fallback,增加恢复复杂度。不推荐。
No dependencies set.
The note is not visible to the blocked user.
来源
Oracle 审核
docs/design.mdSection 3.2 WAL位置
Section 3.2 "CURRENT / MANIFEST 权威性"(~line 420)与 "WAL 元数据持久化协议"(~line 181)
问题描述
设计明确声明
CURRENT只是写入侧辅助文件,recovery 权威源是MANIFEST + 目录扫描。但 durable-ready 协议要求在 segment 可承载写入前更新CURRENT并 fsync(步骤 6-7)。这意味着CURRENT更新是 batch 确认成功的前提之一,但 recovery 又不依赖它。两个路径对 CURRENT 的依赖程度不一致:
建议修复
方案 A(推荐):简化 durable-ready 协议,移除 CURRENT 更新作为 batch 确认前提。
方案 B:让 CURRENT 成为 recovery 的必要组件。