On Thu, Oct 12, 2023 at 7:09 PM Michael Paquier <mich...@paquier.xyz> wrote: > On Thu, Oct 12, 2023 at 01:32:29PM -0400, Robert Haas wrote: > > IPC seems right to me. Yeah, a timeout is being used, but as you say, > > that's an implementation detail. > > > > +1 for the idea, too. > > Agreed that timeout makes little sense in this context, and IPC looks > correct. > > + pgstat_report_wait_start(WAIT_EVENT_CHECKPOINT_DELAY_START); > do > { > pg_usleep(10000L); /* wait for 10 msec */ > } while (HaveVirtualXIDsDelayingChkpt(vxids, nvxids, > DELAY_CHKPT_START)); > + pgstat_report_wait_end(); > > HaveVirtualXIDsDelayingChkpt() does immediately a LWLockAcquire() > which would itself report a wait event for ProcArrayLock, overwriting > this new one, no?
Ah, right: the wait event should be set and cleared around pg_usleep, not the whole loop. -- Robert Haas EDB: http://www.enterprisedb.com