mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Fix oldest xmin and LSN computation across repslots after advancing
Advancing a replication slot did not recompute the oldest xmin and LSN values across replication slots, preventing resource removal like segments not recycled at checkpoint time. The original commit that introduced the slot advancing in9c7d06d
never did the update of those oldest values, andb0afdca
removed this code. This commit adds a TAP test to check segment recycling with advancing for physical slots, enforcing an extra segment switch before advancing to check if the segment gets correctly recycled after a checkpoint. Reported-by: Andres Freund Reviewed-by: Alexey Kondratov, Kyptaro Horiguchi Discussion: https://postgr.es/m/20200609171904.kpltxxvjzislidks@alap3.anarazel.de Backpatch-through: 11
This commit is contained in:
@ -621,6 +621,13 @@ pg_replication_slot_advance(PG_FUNCTION_ARGS)
|
||||
values[0] = NameGetDatum(&MyReplicationSlot->data.name);
|
||||
nulls[0] = false;
|
||||
|
||||
/*
|
||||
* Recompute the minimum LSN and xmin across all slots to adjust with the
|
||||
* advancing potentially done.
|
||||
*/
|
||||
ReplicationSlotsComputeRequiredXmin(false);
|
||||
ReplicationSlotsComputeRequiredLSN();
|
||||
|
||||
ReplicationSlotRelease();
|
||||
|
||||
/* Return the reached position. */
|
||||
|
Reference in New Issue
Block a user