Re: BUG #17103: WAL segments are not removed after exceeding max_slot_wal_keep_size
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: jeff.janes@gmail.com
Cc: mk@071.ovh, pgsql-bugs@lists.postgresql.org
Date: 2021-07-15T07:33:48Z
Lists: pgsql-bugs
Attachments
At Thu, 15 Jul 2021 14:22:35 +0900 (JST), Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote in > At Wed, 14 Jul 2021 19:10:26 -0400, Jeff Janes <jeff.janes@gmail.com> wrote in > > They should be, but they are not. That is the bug. They just hang > > around, checkpoint after checkpoint. Some of them do get cleaned up, to > > make up for new ones created during that cycle. It treats > > max_slot_wal_keep the same way it treats wal_keep_size (but only if a > > "lost" slot is hanging around). If you drop the lost slot, only then does > > it remove all the accumulated WAL at the next checkpoint. > > Thanks! I saw the issue here. Some investigation showd me a doubious > motion of XLogCtl->repliationSlotMinLSN. Slot invalidation is > forgetting to recalculate it and that misbehavior retreats the segment > horizon. > > So the attached worked for me. I'll repost the polished version > including test. This is it. It is for the master branch but also applicable to 14 as is. Not needed for earlier version. I believe the test works for Windows but haven't checked. regards. -- Kyotaro Horiguchi NTT Open Source Software Center
Commits
-
Close yet another race condition in replication slot test code
- 41d27ee7b870 13.4 landed
- f951f6f69c7e 14.0 landed
- ce197e91d02c 15.0 landed
-
Make new replication slot test code even less racy
- ce413eba4116 13.4 landed
- 1e8751380836 14.0 landed
- 0d2cb6b2bbc3 15.0 landed
-
Make new replication slot test code less racy
- d8f3b021c618 14.0 landed
- 8589299e03ff 15.0 landed
- 7099ba058035 13.4 landed
-
Advance old-segment horizon properly after slot invalidation
- ead9e51e8236 15.0 landed
- e5bcbb10707b 14.0 landed
- 866237a6fa01 13.4 landed