Re: Slot's restart_lsn may point to removed WAL segment after hard restart unexpectedly
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Alexander Korotkov <aekorotkov@gmail.com>
Cc: Vitaly Davydov <v.davydov@postgrespro.ru>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-04-29T17:25:00Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Update comment for ReplicationSlot.last_saved_restart_lsn
- 0810fbb02dbe 19 (unreleased) landed
-
Fix CheckPointReplicationSlots() with max_replication_slots == 0
- 7195c804bd12 18.0 landed
-
Remove excess assert from InvalidatePossiblyObsoleteSlot()
- 70d8a91f82f1 18.0 landed
-
Improve runtime and output of tests for replication slots checkpointing.
- 5ed50f9386f0 17.6 landed
- 4464fddf7b50 18.0 landed
-
Keep WAL segments by slot's last saved restart LSN
- ca307d5cec90 18.0 landed
-
Fix an assert in CheckPointReplicationSlots().
- d1ffcc7fa3c5 17.0 cited
On Mon, Apr 28, 2025 at 6:39 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > > On Tue, Apr 29, 2025 at 4:03 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > > > On Mon, Apr 28, 2025 at 8:17 AM Alexander Korotkov <aekorotkov@gmail.com> wrote: > > > > > > > I have a question - is there any interest to backport the solution into > > > > existing major releases? > > > > > > As long as this is the bug, it should be backpatched to all supported > > > affected releases. > > > > Yes, but I think we cannot back-patch the proposed fix to back > > branches as it changes the ReplicationSlot struct defined in slot.h, > > which breaks ABI compatibility. > > Yes, and I think Vitaly already proposed to address this issue. This > aspect also needs to be carefully reviewed for sure. > > On Thu, Apr 24, 2025 at 5:32 PM Vitaly Davydov <v.davydov@postgrespro.ru> wrote: > > I can prepare a patch where restart_lsn_flushed stored > > outside of ReplicationSlot structure and doesn't affect the existing API. Oh, I totally missed this part. Sorry for making noise. I'll review the patch once submitted. Regarding the proposed patch, I think we can somewhat follow last_saved_confirmed_flush field of ReplicationSlot. For example, we can set restart_lsn_flushed when restoring the slot from the disk, etc. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com