[Important] publishedSequence 需要明确的内存序约束 #14
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
来源
Oracle 审核
docs/design.mdSection 3.2 WAL位置
Section 3.2 "可见性语义"(~line 148)
问题描述
publishedSequence作为普通变量描述其语义,但未说明其在 Go 内存模型中的操作类型。多 goroutine 并发读写需要明确的 happens-before 关系。当前文档只描述了逻辑语义("普通读只返回
sequence <= publishedSequence的 entry"),但缺少实现层面的内存序约束。这与 C5(Go 内存模型)相关但更聚焦于publishedSequence变量本身。建议修复
在 "可见性语义" 小节补充内存序约束:
atomic.Uint64(或等效原子变量)Store只在 WAL durability 和所有 MemTable 节点原子发布都完成后执行Load在遍历 MemTable 前执行,获得可见性 high-water mark