Re: FSM Corruption (was: Could not read block at end of the relation)

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Ronan Dunklau <ronan.dunklau@aiven.io>
Cc: Michael Paquier <michael@paquier.xyz>, pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Date: 2024-04-11T15:38:43Z
Lists: pgsql-bugs
On Thu, Apr 11, 2024 at 09:36:50AM +0200, Ronan Dunklau wrote:
> Le dimanche 7 avril 2024, 00:30:37 CEST Noah Misch a écrit :
> > Your v3 has the right functionality.  As further confirmation of the fix, I
> > tried reverting the non-test parts of commit 917dc7d "Fix WAL-logging of FSM
> > and VM truncation".  That commit's 008_fsm_truncation.pl fails with 917dc7d
> > reverted from master, and adding this patch makes it pass again.  I ran
> > pgindent and edited comments.  I think the attached version is ready to go.
> 
> Thank you Noah, the updated comments are much better. I think it should be 
> backported at least to 16 since the chances of tripping on that behaviour are 
> quite high here, but what about previous versions ?

It should be reachable in all branches, just needing concurrent extension lock
waiters to reach before v16.  Hence, my plan is to back-patch it all the way.
It applies with negligible conflicts back to v12.



Commits

  1. freespace: Don't return blocks past the end of the main fork.

  2. Fix WAL-logging of FSM and VM truncation.

  3. Extend relations multiple blocks at a time to improve scalability.