3.2 WAL:补充 ErrCommitUnknown 的 API 层提交状态确认约束 #4
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?
背景
第 3.2 节定义了
ErrCommitUnknown:当 WAL bytes 已写入但 fsync 返回错误时,提交结果是不确定的。调用方不能把它当作写入一定失败并盲目重试。问题
当前文档说明了调用方需要通过读取 key 或事务层提供的事务 ID / commit record 查询提交状态,但尚未定义 API 层最小约束。
单 key autocommit 阶段可以通过读 key 做弱确认,但以下场景会有歧义:
风险
如果 API 层不明确,用户可能在
ErrCommitUnknown后盲目重试,导致事务重复提交、Delete 状态误判或业务层非幂等副作用。建议
在 3.2 或后续 API / 事务章节中补充:
ErrCommitUnknown只支持弱状态确认参考
docs/design.md:119fsync unknown 处理docs/design.md:121ErrCommitUnknown 调用方语义docs/design.md:322事务边界与 commit sequence