Fix oldest xmin and LSN computation across repslots after advancing
authorMichael Paquier <michael@paquier.xyz>
Thu, 18 Jun 2020 07:35:29 +0000 (16:35 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 18 Jun 2020 07:35:29 +0000 (16:35 +0900)
commit43e70addf5a65f1b99c286f82e2e4970b0c2fda7
treedba4297d9785e48ddf62ee4ed22b56ec364f093f
parentf2236d087eb8df9f15c016c02c92aa2bed7c2889
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 in 9c7d06d never did the update of those
oldest values, and b0afdca 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
src/backend/replication/slotfuncs.c
src/test/recovery/t/001_stream_rep.pl