Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kppL7-0005GT-5z for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Dec 2020 09:12:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kppL6-0004gF-3c for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Dec 2020 09:12:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kppL5-0004g8-TG for pgsql-hackers@lists.postgresql.org; Thu, 17 Dec 2020 09:12:47 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kppL2-0001lL-6P for pgsql-hackers@postgresql.org; Thu, 17 Dec 2020 09:12:46 +0000 Received: from hnk.local (sp183-74-204-109.msb.spmode.ne.jp [183.74.204.109]) by oss.nttdata.com (Postfix) with ESMTPSA id 43C7262720; Thu, 17 Dec 2020 18:12:40 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com Subject: Re: Use standard SIGHUP and SIGTERM handlers in autoprewarm module From: Fujii Masao To: Kyotaro Horiguchi Cc: bharath.rupireddyforpostgres@gmail.com, pgsql-hackers@postgresql.org References: <6b561c73-27ce-7079-b6e5-440e49653810@oss.nttdata.com> <20201216.162459.1543880840255001035.horikyota.ntt@gmail.com> <68571154-5bd5-dc00-1322-92bbf92de806@oss.nttdata.com> Message-ID: Date: Thu, 17 Dec 2020 18:12:39 +0900 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <68571154-5bd5-dc00-1322-92bbf92de806@oss.nttdata.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 2020/12/16 18:12, Fujii Masao wrote: > > > On 2020/12/16 16:24, Kyotaro Horiguchi wrote: >> At Tue, 15 Dec 2020 23:10:28 +0900, Fujii Masao wrote in >>>> I pushed the following two patches. >>>> - v1-use-standard-SIGHUP-hanlder-in-syslogger-process.patch >>>> - v1-use-MyLatch-and-standard-SIGHUP-handler-in-startup-process.patch >>> >>> As I told in other thread [1], I'm thinking to revert this patch >>> because this change could have bad side-effect on the startup >>> process waiting for recovery conflict. >>> >>> Before applying the patch, the latch that the startup process >>> used to wait for recovery conflict was different from the latch >>> that SIGHUP signal handler or walreceiver process, etc set to >>> wake the startup process up. So SIGHUP or walreceiver didn't >>> wake the startup process waiting for recovery conflict up unnecessary. >>> >>> But the patch got rid of the dedicated latch for signaling >>> the startup process. This change forced us to use the same latch >>> to make the startup process wait or wake up. Which caused SIGHUP >>> signal handler or walreceiver proces to wake the startup process >>> waiting on the latch for recovery conflict up unnecessarily >>> frequently. >>> >>> While waiting for recovery conflict on buffer pin, deadlock needs >>> to be checked at least every deadlock_timeout. But that frequent >>> wakeups could prevent the deadlock timer from being triggered and >>> could delay that deadlock checks. >> >> I thought that spurious wakeups don't harm. But actually >> ResolveRecoveryConflictWithBufferPin doesn't consider spurious >> wakeups.  Only the timer woke up ResolveRecoveryConflictWithBufferPin >> before the patch comes. Currently SIGHUP and XLogFlush() (on >> walreceiver) also wake up startup process. >> >> For a moment I thought that ResolveRecoveryConflictWithBufferPin >> should wake up at shutdown time by the old recovery latch but it's not >> the case since it wakes up after all blockers go away.  It seems to me >> simpler to revert the patches than making the function properly handle >> spurious wakeups. >> >>> Therefore, I'm thinking to revert the commit ac22929a26 and >>> 113d3591b8. >>> >>> [1] >>> https://www.postgresql.org/message-id/a802f1c0-58d9-bd3f-bc3e-bdad54726855@oss.nttdata.com >> >> As the result, I agree to revert them. But I think we need to add a >> comment for the reason we don't use MyLatch for recovery-wakeup after >> reverting them. > > Agreed. Attached is the patch that reverts those patches and > adds the comments about why both procLatch and recoveryWakeupLatch > are necessary. Pushed. Thanks! Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION