发布于 2026-09-10T10:59:46.878449Z · Michael Paquier · PostgreSQL hackers

备库的冲突解决存在缺陷:ResolveRecoveryConflictWithSnapshot 只调用一次 GetConflictingVirtualXIDs,随后逐个等待返回的虚拟事务号消失。可是在 ProcArrayLock 释放之后,别的后端还能从这些冲突事务里导入快照,产生新的冲突事务号,这个函数完全看不到。后果是备库可能删掉仍被导入快照使用的元组版本或索引项。提议的修法是循环调用直到结果为空。
备库的冲突解决存在缺陷:ResolveRecoveryConflictWithSnapshot 只调用一次 GetConflictingVirtualXIDs,随后逐个等待返回的虚拟事务号消失。可是在 ProcArrayLock 释放之后,别的后端还能从这些冲突事务里导入快照,产生新的冲突事务号,这个函数完全看不到。后果是备库可能删掉仍被导入快照使用的元组版本或索引项。提议的修法是循环调用直到结果为空。
来源记录
- center.info_item · b9c8030945d93f17 · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · b9c8030945d93f17 · 2026-10-03T04:08:55.967155Z