Re: Implement waiting for wal lsn replay: reloaded
Alexander Korotkov <aekorotkov@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Clean up 019_replslot_limit.pl comments
- 0b866bb90368 19 (unreleased) landed
-
Stabilize 019_replslot_limit.pl: wait on slot restart_lsn
- cdb1d1cf1de6 19 (unreleased) landed
-
Use WAIT FOR LSN in PostgreSQL::Test::Cluster::wait_for_catchup()
- 7e8aeb9e483d 19 (unreleased) landed
- f30848cb05d4 19 (unreleased) landed
-
Add tab completion for the WAIT FOR LSN MODE option
- 76948337f724 19 (unreleased) landed
-
Add the MODE option to the WAIT FOR LSN command
- 49a181b5d634 19 (unreleased) landed
-
Extend xlogwait infrastructure with write and flush wait types
- 7a39f43d885b 19 (unreleased) landed
-
Unify error messages
- 502e256f2262 19 (unreleased) cited
-
Optimize shared memory usage for WaitLSNProcInfo
- 75e82b2f5a6f 19 (unreleased) landed
-
Fix WaitLSNWakeup() fast-path check for InvalidXLogRecPtr
- ede6acef4967 19 (unreleased) landed
-
Fix incorrect function name in comments
- 23792d738158 19 (unreleased) landed
-
Add infrastructure for efficient LSN waiting
- 3b4e53a075ea 19 (unreleased) landed
-
Add pairingheap_initialize() for shared memory usage
- 8af3ae0d4b36 19 (unreleased) landed
-
Implement WAIT FOR command
- 447aae13b030 19 (unreleased) landed
Attachments
- v3-0001-Optimize-shared-memory-usage-for-WaitLSNProcInfo.patch (application/octet-stream) patch v3-0001
On Sat, Nov 8, 2025 at 12:02 AM Alexander Korotkov <aekorotkov@gmail.com> wrote: > On Wed, Nov 5, 2025 at 4:03 PM Xuneng Zhou <xunengzhou@gmail.com> wrote: > > On Wed, Nov 5, 2025 at 5:51 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > > > On Mon, Nov 3, 2025 at 5:13 PM Andres Freund <andres@anarazel.de> wrote: > > > > On 2025-11-03 16:06:58 +0100, Álvaro Herrera wrote: > > > > > On 2025-Nov-03, Alexander Korotkov wrote: > > > > > > > > > > > I'd like to give this subject another chance for pg19. I'm going to > > > > > > push this if no objections. > > > > > > > > > > Sure. I don't understand why patches 0002 and 0003 are separate though. > > > > > > > > FWIW, I appreciate such splits. Even if the functionality isn't usable > > > > independently, it's still different type of code that's affected. And the > > > > patches are each big enough to make that worthwhile for easier review. > > > > > > Thank you for the feedback, pushed. > > > > Thanks for pushing them! > > > > > > One thing that'd be nice to do once we have WAIT FOR is to make the common > > > > case of wait_for_catchup() use this facility, instead of polling... > > > > > > The draft patch for that is attached. WAIT FOR doesn't handle all the > > > possible use cases of wait_for_catchup(), but I've added usage when > > > it's appropriate. > > > > Interesting, could this approach be extended to the flush and other > > modes as well? I might need to spend some time to understand it before > > I can provide a meaningful review. > > I think we might end up extending WaitLSNType enum. However, I hate > inHeap and heapNode arrays growing in WaitLSNProcInfo as they are > allocated per process. I found that we could optimize WaitLSNProcInfo > struct turning them into simple variables because a single process can > wait only for a single LSN at a time. Please, check the attached > patch. Here is the updated patch integrating minor corrections provided by Xuneng Zhou off-list. I'm going to push this if no objections. ------ Regards, Alexander Korotkov Supabase