
Noah Misch 指出提交 c06d1a4 改掉了恢复期间的 FSM 不变量。在开启校验和与整页写的默认配置下,restartpoint 之后的 heap_xlog_* 可以把 FSM 页面标记为脏;此时崩溃留下的撕裂页面不会在恢复中被修复,恢复却能正常结束。FSM 自己用 RBM_ZERO_ON_ERROR 静默接受坏页,heapam_relation_copy_data 这类调用方却假定读取一定成功。长期方案是恢复旧不变量,或要求所有读 FSM 的调用方一律容错。
Noah Misch 指出提交 c06d1a4 改掉了恢复期间的 FSM 不变量。在开启校验和与整页写的默认配置下,restartpoint 之后的 heap_xlog_* 可以把 FSM 页面标记为脏;此时崩溃留下的撕裂页面不会在恢复中被修复,恢复却能正常结束。FSM 自己用 RBM_ZERO_ON_ERROR 静默接受坏页,heapam_relation_copy_data 这类调用方却假定读取一定成功。长期方案是恢复旧不变量,或要求所有读 FSM 的调用方一律容错。
来源记录
- center.info_item · 4c1f09e5986b9d2d · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · 4c1f09e5986b9d2d · 2026-10-03T04:08:55.967155Z