Re: Rework SLRU I/O errors handle
Heikki Linnakangas <hlinnaka@iki.fi>
From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Álvaro Herrera <alvherre@kurilemu.de>
Cc: Maxim Orlov <orlovmg@gmail.com>,
Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-03-06T16:49:22Z
Lists: pgsql-hackers
Attachments
- v4-0001-Add-a-callback-for-I-O-error-messages-in-SLRUs.patch (text/x-patch) patch v4-0001
On 06/03/2026 18:38, Heikki Linnakangas wrote: > On 06/03/2026 18:22, Heikki Linnakangas wrote: >> On 06/03/2026 17:33, Álvaro Herrera wrote: >>> The comment added in 0005 is bogus too. It mentions >>> InvalidTransactionId, >>> but the problem is not that the value is 0 but rather that we get no >>> pointer. Also, in all other callbacks the pointer is asserted to not be >>> NULL, so why don't we do the same here, and avoid an error message >>> that's not going to help anyone? I see however that in the patch we're >>> passing a NULL to SlruReportIOError(), which means if you get an IO >>> error with any SLRU other than xact, you're going to get either a crash >>> on the assertion, or (on non-debug builds) a crash on dereferencing the >>> NULL pointer. >> >> Hmm, I thought we could just never pass a NULL pointer, but if a Write >> fails, slru.c has no context where to pull that opaque_data. Perhaps >> we should just not call the callback in that case. >> >> I'm starting to feel that what SlruReportIOError() currently uses as >> the errdetail, could well be the main error message, and the callback >> could provide the errdetail. I.e. swap the errmsg and errdetail we >> have now. That way, we can just leave out the errdetail for Write >> failures. The current errmsg we have for Write failures is pretty bad: >> "ERROR: could not access status of transaction 0". What's currently >> the errdetail, e.g. "Could not read from file \"%s\" at offset %d: >> %m", is a lot more informative. > > Attached version that does that. That version was a little rushed, with wrong message styles etc. leftovers. Sorry about that, here's yet another, more cleaned-up version. - Heikki
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add callback for I/O error messages in SLRUs
- f9de9bf302d2 19 (unreleased) landed