Re: IPC/MultixactCreation on the Standby server

Álvaro Herrera <alvherre@kurilemu.de>

From: Álvaro Herrera <alvherre@kurilemu.de>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Dmitry Yurichev <dsy.075@yandex.ru>, Andrey Borodin <x4mmm@yandex-team.ru>, pgsql-hackers@lists.postgresql.org, Ivan Bykov <i.bykov@modernsys.ru>, Kirill Reshke <reshkekirill@gmail.com>
Date: 2025-12-04T14:36:01Z
Lists: pgsql-hackers
On 2025-Dec-04, Heikki Linnakangas wrote:

> While working on the 64-bit multixid offsets patch, I noticed one more bug
> with this. At offset wraparound, when we set the next multixid's offset in
> RecordNewMultiXact, we incorrectly set it to 0 instead of 1. We're supposed
> to skip over offset 1, because 0 is reserved to mean invalid. We do that
> correctly when setting the "current" multixid's offset, because the caller
> of RecordNewMultiXact has already skipped over offset 0, but I missed it for
> the next offset.

Ouch.

> I tried to modify the new wraparound TAP test to reproduce that, but it
> turned out to be difficult because you need to have multiple backends
> assigning multixids concurrently to hit that.

Hmm, would it make sense to add a pgbench-based test on
src/test/modules/xid_wraparound?  That module is already known to be
expensive, and it doesn't run unless explicitly enabled, so I think it's
not a bad fit.

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix test to work with non-8kB block sizes

  2. Fix setting next multixid's offset at offset wraparound

  3. Add test for multixid wraparound

  4. Set next multixid's offset when creating a new multixid

  5. psql: Improve tab completion for large objects.

  6. Refactor some repetitive SLRU code

  7. Transaction IDs wrap around, per my proposal of 13-Aug-01. More