发布于 2026-09-10T10:59:48.503326Z · Surya Poondla · PostgreSQL hackers

Surya Poondla 审查 WAL 记录压缩补丁时发现违反 WAL-before-data 规则的问题:补丁为纯提示位变更写紧凑记录时没有更新页面 LSN,而 FlushBuffer() 完全靠页面 LSN 保证顺序,跳过 PageSetLSN() 会让 XLogFlush() 变成空操作,页面可能先于对应的 WAL 记录落盘。一旦崩溃,页面上已有的提示位无法通过 WAL 恢复。
Surya Poondla 审查 WAL 记录压缩补丁时发现违反 WAL-before-data 规则的问题:补丁为纯提示位变更写紧凑记录时没有更新页面 LSN,而 FlushBuffer() 完全靠页面 LSN 保证顺序,跳过 PageSetLSN() 会让 XLogFlush() 变成空操作,页面可能先于对应的 WAL 记录落盘。一旦崩溃,页面上已有的提示位无法通过 WAL 恢复。
来源记录
- center.info_item · 074a8f04d229e48f · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · 074a8f04d229e48f · 2026-10-03T04:08:55.967155Z