Re: IPC/MultixactCreation on the Standby server
Álvaro Herrera <alvherre@kurilemu.de>
From: Álvaro Herrera <alvherre@kurilemu.de>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: Dmitry <dsy.075@yandex.ru>, pgsql-hackers@lists.postgresql.org
Date: 2025-07-18T10:30:48Z
Lists: pgsql-hackers
On 2025-Jul-17, Andrey Borodin wrote: > Thinking more about the problem I see 3 ways to deal with this deadlock: > 1. We check for recovery conflict even in presence of > InterruptHoldoffCount. That's what patch v4 does. > 2. Teach page_collect_tuples() to do HeapTupleSatisfiesVisibility() > without holding buffer lock. > 3. Why do we even HOLD_INTERRUPTS() when aquire shared lock?? Hmm, as you say, doing (3) is a very invasive system-wide change, but can we do it more localized? I mean, what if we do RESUME_INTERRUPTS() just before going to sleep on the CV, and restore with HOLD_INTERRUPTS() once the sleep is done? That would only affect this one place rather than the whole system, and should also (AFAICS) solve the issue. > Yet, I see 3 as a correct solution. Can't we just abstain from > HOLD_INTERRUPTS() if taken LWLock is not exclusive? Hmm, the code in LWLockAcquire says /* * Lock out cancel/die interrupts until we exit the code section protected * by the LWLock. This ensures that interrupts will not interfere with * manipulations of data structures in shared memory. */ HOLD_INTERRUPTS(); which means if we want to change this, we would have to inspect every single use of LWLocks in shared mode in order to be certain that such a change isn't problematic. This is a discussion I'm not prepared for. -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/ "Si quieres ser creativo, aprende el arte de perder el tiempo"
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