mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Fix rare missing cancellations in Hot Standby.
The machinery around XLOG_HEAP2_CLEANUP_INFO failed to correctly pass through the necessary information on latestRemovedXid, avoiding cancellations in some infrequent concurrent update/cleanup scenarios. Backpatchable fix to 9.0 Detailed bug report and fix by Noah Misch, backpatchable version by me.
This commit is contained in:
parent
bd6aca8a77
commit
5c54f63fd6
@ -173,7 +173,7 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin,
|
|||||||
* initialize the rest of our working state.
|
* initialize the rest of our working state.
|
||||||
*/
|
*/
|
||||||
prstate.new_prune_xid = InvalidTransactionId;
|
prstate.new_prune_xid = InvalidTransactionId;
|
||||||
prstate.latestRemovedXid = InvalidTransactionId;
|
prstate.latestRemovedXid = *latestRemovedXid;
|
||||||
prstate.nredirected = prstate.ndead = prstate.nunused = 0;
|
prstate.nredirected = prstate.ndead = prstate.nunused = 0;
|
||||||
memset(prstate.marked, 0, sizeof(prstate.marked));
|
memset(prstate.marked, 0, sizeof(prstate.marked));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user