MultiXact stuff
Standby MultiXact creation, corruption edges, and deadlock.
The session reproduced a standby deadlock involving MultiXact lookup: a reader holds a heap buffer lock while waiting for a not-yet-replayed MultiXact offset, and the startup process needs that buffer before it can supply the offset. The team demonstrated the hang on Postgres 13 and current branches, confirmed that SIGINT cannot break it, evaluated three unsafe fixes, then implemented a localized WAL-redo fix that pre-populates the next offset on the same SLRU page.
[timecodes · 8]
- Follow-up fixes for pg_dump policy comments
- MultiXacts and the standby deadlock report
- How MultiXact offsets and members are stored
- Circular wait between a reader and startup process
- Building a deterministic reproduction
- Debugging both sides of the deadlock
- Why three obvious fixes are unsafe
- Localized WAL-redo fix and successful test
direct mapping