public inbox for [email protected]  
help / color / mirror / Atom feed
From: Alexander Korotkov <[email protected]>
To: Xuneng Zhou <[email protected]>
Cc: Noah Misch <[email protected]>
Cc: [email protected]
Subject: Re: wait_event_type for WAIT FOR LSN
Date: Tue, 7 Jul 2026 17:38:32 +0300
Message-ID: <CAPpHfdtF3E5jtWKWUVj+Lm+Jm48_6b=RHtPPJtvFa-Wpr5w2Dg@mail.gmail.com> (raw)
In-Reply-To: <CABPTF7WQ1mQ_YC=G+T=oraRKjatH7v8YDaBqYyh-FST05wBtLw@mail.gmail.com>
References: <[email protected]>
	<CABPTF7VAubA+b32dnGGwi3rR2DA=8Lyz4R-hOxvuZLCeCTPPYw@mail.gmail.com>
	<[email protected]>
	<CABPTF7WQ1mQ_YC=G+T=oraRKjatH7v8YDaBqYyh-FST05wBtLw@mail.gmail.com>

Hi!

On Tue, Jul 7, 2026 at 5:08 PM Xuneng Zhou <[email protected]> wrote:
>
> On Tue, Jul 7, 2026 at 4:29 AM Noah Misch <[email protected]> wrote:
> >
> > On Mon, Jul 06, 2026 at 01:41:35PM +0800, Xuneng Zhou wrote:
> > > On Mon, Jul 6, 2026 at 9:26 AM Noah Misch <[email protected]> wrote:
> > > > commit 7a39f43 wrote:
> > > > > --- a/src/backend/utils/activity/wait_event_names.txt
> > > > > +++ b/src/backend/utils/activity/wait_event_names.txt
> > > > > @@ -76,34 +76,35 @@ ABI_compatibility:
> > > > >  # Wait Events - Client
> > > > >  #
> > > > >  # Use this category when a process is waiting to send data to or receive data
> > > > >  # from the frontend process to which it is connected.  This is never used for
> > > > >  # a background process, which has no client connection.
> > > > >  #
> > > > >
> > > > >  Section: ClassName - WaitEventClient
> > > > >
> > > > >  CLIENT_READ  "Waiting to read data from the client."
> > > > >  CLIENT_WRITE "Waiting to write data to the client."
> > > > >  GSS_OPEN_SERVER      "Waiting to read data from the client while establishing a GSSAPI session."
> > > > >  LIBPQWALRECEIVER_CONNECT     "Waiting in WAL receiver to establish connection to remote server."
> > > > >  LIBPQWALRECEIVER_RECEIVE     "Waiting in WAL receiver to receive data from remote server."
> > > > >  SSL_OPEN_SERVER      "Waiting for SSL while attempting connection."
> > > > >  WAIT_FOR_STANDBY_CONFIRMATION        "Waiting for WAL to be received and flushed by the physical standby."
> > > > > -WAIT_FOR_WAL_FLUSH   "Waiting for WAL flush to reach a target LSN on a primary."
> > > > > +WAIT_FOR_WAL_FLUSH   "Waiting for WAL flush to reach a target LSN on a primary or standby."
> > > > >  WAIT_FOR_WAL_REPLAY  "Waiting for WAL replay to reach a target LSN on a standby."
> > > > > +WAIT_FOR_WAL_WRITE   "Waiting for WAL write to reach a target LSN on a standby."
> > > > >  WAL_SENDER_WAIT_FOR_WAL      "Waiting for WAL to be flushed in WAL sender process."
> > > > >  WAL_SENDER_WRITE_DATA        "Waiting for any activity when processing replies from WAL receiver in WAL sender process."
> > > > >
> > > > >  ABI_compatibility:
> > > >
> > > > WaitEventClient is about waiting for a socket to become readable or writable,
> > > > so I think WAIT_FOR_WAL_* events don't fit in its scope.  Sockets are just one
> > > > of the ways to be in WAIT_FOR_WAL_*; other delay sources include local fsync
> > > > and local replay, which could be disk-bound or CPU-bound.
> > > >
> > > > I think WAIT_FOR_WAL_* belong in WaitEventIPC.  In the absence of objections,
> > > > I'll change it that way:
> > >
> > > Thanks for raising this. It makes sense to me to move these events to
> > > the WaitEventIPC session. I'm wondering whether this reasoning also
> > > applies to WAIT_FOR_STANDBY_CONFIRMATION.
> >
> > It partially does.  In favor of WAIT_FOR_STANDBY_CONFIRMATION in WaitEventIPC:
> >
> > - It's much like SYNC_REP, which is in WaitEventIPC.
> > - It's a condition variable wait, not a socket wait.
> >
> > In favor of keeping WAIT_FOR_STANDBY_CONFIRMATION in WaitEventClient:
> >
> > - The standard for reclassifying a wait event post-release is higher, since it
> >   impedes comparing waits across versions.
> > - The condition variable is set based on a socket read, and it's fair to treat
> >   the condition variable layer as an implementation detail of little concern
> >   to users.
> >
> > Overall, I lean toward not changing WAIT_FOR_STANDBY_CONFIRMATION.
>
> Thanks for clarification. I'm also ok with the status quo.

Thanks to Noah for raising this.  Thanks to Xuneng for the feedback.

OK, let's leave WAIT_FOR_STANDBY_CONFIRMATION as is, but move
WAIT_FOR_WAL_* to WaitEventIPC.  The patch is attached.  I'm going to
push it if no objections.

------
Regards,
Alexander Korotkov
Supabase


Attachments:

  [application/octet-stream] v1-0001-Move-WAIT_FOR_WAL_-wait-events-from-Client-to-IPC.patch (2.7K, ../CAPpHfdtF3E5jtWKWUVj+Lm+Jm48_6b=RHtPPJtvFa-Wpr5w2Dg@mail.gmail.com/2-v1-0001-Move-WAIT_FOR_WAL_-wait-events-from-Client-to-IPC.patch)
  download | inline diff:
From c7f788a21d627e36e1b0ec9dc5ca0a5a06a52c19 Mon Sep 17 00:00:00 2001
From: Alexander Korotkov <[email protected]>
Date: Tue, 7 Jul 2026 17:32:47 +0300
Subject: [PATCH v1] Move WAIT_FOR_WAL_* wait events from Client to IPC class

WAIT_FOR_WAL_FLUSH, WAIT_FOR_WAL_REPLAY, and WAIT_FOR_WAL_WRITE were
placed in the WaitEventClient class.  But WaitEventClient is about
waiting for a socket to become readable or writable, while these events
have other delay sources as well: local fsync and local replay, which
may be disk- or CPU-bound.  WaitEventIPC is a better fit, so move them
there.

Reported-by: Noah Misch <[email protected]>
Discussion: https://postgr.es/m/[email protected]
---
 src/backend/utils/activity/wait_event_names.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/utils/activity/wait_event_names.txt b/src/backend/utils/activity/wait_event_names.txt
index 560659f9568..1016502d042 100644
--- a/src/backend/utils/activity/wait_event_names.txt
+++ b/src/backend/utils/activity/wait_event_names.txt
@@ -89,9 +89,6 @@ LIBPQWALRECEIVER_CONNECT	"Waiting in WAL receiver to establish connection to rem
 LIBPQWALRECEIVER_RECEIVE	"Waiting in WAL receiver to receive data from remote server."
 SSL_OPEN_SERVER	"Waiting for SSL while attempting connection."
 WAIT_FOR_STANDBY_CONFIRMATION	"Waiting for WAL to be received and flushed by the physical standby."
-WAIT_FOR_WAL_FLUSH	"Waiting for WAL flush to reach a target LSN on a primary or standby."
-WAIT_FOR_WAL_REPLAY	"Waiting for WAL replay to reach a target LSN on a standby."
-WAIT_FOR_WAL_WRITE	"Waiting for WAL write to reach a target LSN on a standby."
 WAL_SENDER_WAIT_FOR_WAL	"Waiting for WAL to be flushed in WAL sender process."
 WAL_SENDER_WRITE_DATA	"Waiting for any activity when processing replies from WAL receiver in WAL sender process."
 
@@ -162,6 +159,9 @@ REPLICATION_SLOT_DROP	"Waiting for a replication slot to become inactive so it c
 RESTORE_COMMAND	"Waiting for <xref linkend="guc-restore-command"/> to complete."
 SAFE_SNAPSHOT	"Waiting to obtain a valid snapshot for a <literal>READ ONLY DEFERRABLE</literal> transaction."
 SYNC_REP	"Waiting for confirmation from a remote server during synchronous replication."
+WAIT_FOR_WAL_FLUSH	"Waiting for WAL flush to reach a target LSN on a primary or standby."
+WAIT_FOR_WAL_REPLAY	"Waiting for WAL replay to reach a target LSN on a standby."
+WAIT_FOR_WAL_WRITE	"Waiting for WAL write to reach a target LSN on a standby."
 WAL_RECEIVER_EXIT	"Waiting for the WAL receiver to exit."
 WAL_RECEIVER_WAIT_START	"Waiting for startup process to send initial data for streaming replication."
 WAL_SUMMARY_READY	"Waiting for a new WAL summary to be generated."
-- 
2.50.1 (Apple Git-155)



view thread (7+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: wait_event_type for WAIT FOR LSN
  In-Reply-To: <CAPpHfdtF3E5jtWKWUVj+Lm+Jm48_6b=RHtPPJtvFa-Wpr5w2Dg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox