On Mon, Mar 23, 2026 at 11:21 AM Fujii Masao <[email protected]> wrote:
>
> On Sun, Mar 22, 2026 at 1:52 AM Amit Kapila <[email protected]> wrote:
> >
> > On Wed, Mar 18, 2026 at 9:35 PM Fujii Masao <[email protected]> wrote:
> > >
> > > I noticed that during standby promotion the startup process sends SIGUSR1 
> > > to
> > > the slotsync worker to make it exit. Is there a reason for using SIGUSR1?
> > >
> >
> > IIRC, this same signal is used for both the backend executing
> > pg_sync_replication_slots() and slotsync worker. We want the worker to
> > exit and error_out backend. Using SIGTERM for backend could result in
> > its exit.
>
> Why do we want the backend running pg_sync_replication_slots() to throw
> an error here, rather than just exit? If emitting an error is really required,
> another option would be to store the process type in SlotSyncCtx and send
> different signals accordingly, for example, SIGTERM for the slotsync worker
> and another signal for a backend. But it seems simpler and sufficient to have
> the backend exit in this case as well.
>

As we want to retain the existing behavior for API, so instead of
using two signals, we can achieve what you intend to achieve by one
signal (SIGUSR1) only. We can use SendProcSignal mechanism as is used
ParallelWorkerShutdown. On promotion, we send a SIGUSR1 signal to
slotsync worker/backend via SendProcSignal. Then in
procsignal_sigusr1_handler(), it will call HandleSlotSyncInterrupt.
HandleSlotSyncInterrupt() will set the InterruptPending and
SlotSyncPending flag. Then ProcessInterrupt() will call a slotsync
specific function based on the flag and do what we currently do in
ProcessSlotSyncInterrupts. I think this should address the issue you
are worried about.

-- 
With Regards,
Amit Kapila.


Reply via email to