Subject: Re: Use standard SIGHUP and SIGTERM handlers in autoprewarm module

From: Andres Freund <[email-masked]>
Date: Fri, 29 Apr 2022 12:18:15 -0700

Hi,

On 2020-12-16 18:12:39 +0900, Fujii Masao wrote:
> -	/* Wait to be signaled by UnpinBuffer() */
> +	/*
> +	 * Wait to be signaled by UnpinBuffer().
> +	 *
> +	 * We assume that only UnpinBuffer() and the timeout requests established
> +	 * above can wake us up here. WakeupRecovery() called by walreceiver or
> +	 * SIGHUP signal handler, etc cannot do that because it uses the different
> +	 * latch from that ProcWaitForSignal() waits on.
> +	 */
>  	ProcWaitForSignal(PG_WAIT_BUFFER_PIN);
>  
>  	/*

Isn't this comment bogus?  The latch could e.g. be set by
procsignal_sigusr1_handler(), which the startup process uses. Or it could
already be set, when entering ResolveRecoveryConflictWithBufferPin().

Why is it even relevant that we only get woken up by UnpinBuffer()?

Greetings,

Andres Freund