来源: docs/design.md §3.2 WAL Oracle 架构审查
Periodic 和 Never 策略下,WAL Batch 在 fsync 之前就可以发布 publishedSequence 并返回成功。这意味着:
Periodic
Never
publishedSequence
时间线: t1: Batch A 写入 WAL,Periodic 模式下立即发布 publishedSequence 并返回成功 t2: Batch B 写入 WAL,同样立即发布并返回成功 t3: 后台 fsync 触发,覆盖 A+B 的 WAL bytes,但 fsync 失败 → A 和 B 的调用方已经收到成功确认 → 但 WAL bytes 可能未持久化
durable high-water mark
durableSequence
至少需要跟踪 durableSequence(最后一次成功 fsync 的 batch sequence),并在 API 层暴露:
GetDurableSequence() uint64
No dependencies set.
The note is not visible to the blocked user.
来源: docs/design.md §3.2 WAL Oracle 架构审查
问题描述
Periodic和Never策略下,WAL Batch 在 fsync 之前就可以发布publishedSequence并返回成功。这意味着:具体场景
需要明确
Periodic模式下durable high-water mark如何跟踪?是否需要独立的durableSequence?建议
至少需要跟踪
durableSequence(最后一次成功 fsync 的 batch sequence),并在 API 层暴露:GetDurableSequence() uint64— 调用方可以判断哪些确认是真正持久的