Re: IPC/MultixactCreation on the Standby server
Ivan Bykov <i.bykov@modernsys.ru>
From: Ivan Bykov <i.bykov@modernsys.ru>
To: pgsql-hackers@lists.postgresql.org
Cc: Andrey Borodin <x4mmm@yandex-team.ru>
Date: 2025-11-24T15:09:03Z
Lists: pgsql-hackers
The following review has been posted through the commitfest application: make installcheck-world: tested, passed Implements feature: tested, passed Spec compliant: tested, passed Documentation: not tested Hi, Andrey! The patch applies correctly to d4c0f91f (master) Here is some minor review comments. *** It's worth adding a comment explaining why we don't use the lock swap protocol for MultiXactOffsetCtl in RecordNewMultiXact, unlike for MultiXactMemberCtl (where we check whether rotation is required before swapping the lock). That the lock will be the same at wraparound only (when MultiXactOffsetCtl->nbanks = 1). Since this is a rare case, it's not worth handling in the code, but it should be documented with a comment. It seems even more confusing if we inspect GetMultiXactIdMembers where MultiXactOffsetCtl checks wraparound case before rotate lock (rotation only required at wraparound). So it would be better to simplify MultiXactOffsetCtl lock swapping at GetMultiXactIdMembers in the same manner as it is done at RecordNewMultiXact (exclude extra checks because it returns that swap required almost every time). *** I believe we should use int64 instead of int for next_pageno in RecordNewMultiXact(). There's a specific reason for using int64 - see below: 4ed8f09 Index SLRUs by 64-bit integers rather than by 32-bit integers https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com *** We should delete MULTIXACT_CREATION wait event type from src/backend/utils/activity/wait_event_names.txt because we delete corresponding conditional variable. *** I also noticed some minor typos; here is the corrected version. ---- /* Also we record next offset here */ Kill9 works unpredictably on Windows / exta 'a' was in unpredictably # Verify that recorded multi is readable, this call must not hang. recorded multi is readable # Test mxid wraparound The new status of this patch is: Waiting on Author
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix test to work with non-8kB block sizes
- 7c2061bdfba7 19 (unreleased) landed
-
Fix setting next multixid's offset at offset wraparound
- 48969555447f 14.21 landed
- b9a02b9780bc 15.16 landed
- 4d689a17693e 16.12 landed
- cad40cec24f3 17.8 landed
- 02ba5e3be4f3 18.2 landed
- 4d936c3fff1a 19 (unreleased) landed
-
Add test for multixid wraparound
- 7b81be9b4267 19 (unreleased) landed
-
Set next multixid's offset when creating a new multixid
- 81416e1016dd 14.21 landed
- 8cfb174a61eb 15.16 landed
- 635166913078 16.12 landed
- 8ba61bc06386 17.8 landed
- e46041fd973c 18.2 landed
- 789d65364cde 19 (unreleased) landed
-
psql: Improve tab completion for large objects.
- 14ee8e640300 19 (unreleased) cited
-
Refactor some repetitive SLRU code
- c61678551699 19 (unreleased) cited
-
Transaction IDs wrap around, per my proposal of 13-Aug-01. More
- bc7d37a525c0 7.2.1 cited