From cde77c8ddaf2b57c39f23f2a5c1431c970e3851c Mon Sep 17 00:00:00 2001 From: Maxim Orlov Date: Wed, 25 Feb 2026 18:20:01 +0300 Subject: [PATCH v2 4/5] Use custom SLRU IO error msg for multixact --- src/backend/access/transam/multixact.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index 63d5256823e..34daacae82b 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -881,7 +881,8 @@ RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset, LWLockAcquire(lock, LW_EXCLUSIVE); prevlock = lock; } - slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true, &multi); + slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true, + &offset); prev_pageno = pageno; } @@ -1309,7 +1310,8 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, lock = newlock; } - slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true, &multi); + slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true, + &offset); prev_pageno = pageno; } @@ -1720,6 +1722,20 @@ MultiXactShmemSize(void) return size; } +static inline char * +MultiXactOffsetIoErrorMsg(const void *opaque_data) +{ + return psprintf("could not access status of multixact offset %u", + *(MultiXactId *) opaque_data); +} + +static inline char * +MultiXactMemberIoErrorMsg(const void *opaque_data) +{ + return psprintf("could not access status of multixact member %" PRIu64, + *(MultiXactOffset *) opaque_data); +} + void MultiXactShmemInit(void) { @@ -1730,8 +1746,8 @@ MultiXactShmemInit(void) MultiXactOffsetCtl->PagePrecedes = MultiXactOffsetPagePrecedes; MultiXactMemberCtl->PagePrecedes = MultiXactMemberPagePrecedes; - MultiXactOffsetCtl->IoErrorMsg = TransactionIdIoErrorMsg; - MultiXactMemberCtl->IoErrorMsg = TransactionIdIoErrorMsg; + MultiXactOffsetCtl->IoErrorMsg = MultiXactOffsetIoErrorMsg; + MultiXactMemberCtl->IoErrorMsg = MultiXactMemberIoErrorMsg; SimpleLruInit(MultiXactOffsetCtl, "multixact_offset", multixact_offset_buffers, 0, -- 2.50.1 (Apple Git-155)