RE: Slot's restart_lsn may point to removed WAL segment after hard restart unexpectedly
Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>
From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Vitaly Davydov' <v.davydov@postgrespro.ru>, vignesh C <vignesh21@gmail.com>, Alexander Korotkov <aekorotkov@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alexander Lakhin <exclusion@gmail.com>, Amit
Kapila <amit.kapila16@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Masahiko Sawada <sawada.mshk@gmail.com>, "tomas@vondra.me" <tomas@vondra.me>
Date: 2025-06-18T07:25:32Z
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
Dear Vitaly, I've been working on the bug... > This assert was introduced in the patch. Now, I think, it is a wrong one. Let me > please explain one of the possible scenarios when it can be triggered. In case > of physical replication, when walsender receives a standby reply message, it > calls PhysicalConfirmReceivedLocation function which updates slots' restart_lsn > from received flush_lsn value. This value may be older than the saved value. To confirm, can you tell me the theory why the walsender received old LSN? It is sent by the walreceiver, so is there a case that LogstreamResult.Flush can go backward? Not sure we can accept the situation. Best regards, Hayato Kuroda FUJITSU LIMITED