Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEL0y-003tj6-25 for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Apr 2026 05:48:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEKzw-00EM0v-2O for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Apr 2026 05:47:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEKzw-00EM0m-0H for pgsql-hackers@lists.postgresql.org; Sun, 19 Apr 2026 05:47:12 +0000 Received: from mail-yx1-xb131.google.com ([2607:f8b0:4864:20::b131]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wEKzt-00000001jQS-3GPC for pgsql-hackers@lists.postgresql.org; Sun, 19 Apr 2026 05:47:11 +0000 Received: by mail-yx1-xb131.google.com with SMTP id 956f58d0204a3-6501c9903edso2007984d50.1 for ; Sat, 18 Apr 2026 22:47:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776577629; cv=none; d=google.com; s=arc-20240605; b=QluEuJpCCQtbHMSl8pMju15umNxs/xOb18kl/0R9SIMLuC7k4ie/lvAO1HfURF7DhL 4zedNciztjjddcO3pVJURxPopYqPLu5ycwl0GCcq5N/jrJHoLmNrwI/LvvSUo4yaHuFR juNWJyCy0nciGh2Fdo3QiSnS6uv4t+N8qjKSEl2a6AM7YfOzEJIp078wMiqZSIxvykxm xqDdbL3MutzoR8Ltm9j/q59sl1GKEyxQwa8QCkmj3sNkvLNUMqlcb1JsrqEuB+G8vdyS iPHzqqB1uwRNiQGTaMnHRY3aMeHDlI/NDSoWOK+snkakaGGy4MgsCyTibqV2onks+qOX pvuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=2n3leMQq81cwaG+bCPf4H7UFFPcavESX6NKMDyLBC48=; fh=B9yDRt5VClUf1sIPgwcNQA9EqGoD49QhefIpyGvcca0=; b=afLO5WTe2Os0VuwJGBrsE80E73B+zn6JlPHt3YD4DVKM/yRjdwew+1MHgZc6+UHXy9 dIYbjuCDv6PEhoGCMFT6d7lQOUVR0PF2c4QSueAE9WXHJHmZN5RRAUwwwxDpS4m/M3ow NrmZJRWv0mo+6YLCKqKO4YkeMWGpFzAC8h5higrHakrm4qupugzUQrRyb6dfoCIyHzEl Uhh7G+idpa+BLy4BIUB81WcBHsFJ4oW2Nq7SGMZmLyNywAvBaYuOBfwskrkZnje6NKCT q2ycuG3v+J1thLJGv0ou5liVdrlPM41B9JT4++RSvpoET5cD5ylc2UJxvyfLTPEh6gk9 ETzQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776577629; x=1777182429; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=2n3leMQq81cwaG+bCPf4H7UFFPcavESX6NKMDyLBC48=; b=Op7tx/hNVNQYDx8XAldtBv/+0x5bdlFDUDni8m5MAgW2x/s7R9agRfZZSq7Lho1/9Z IdDnYpxNZxbGwZMCEje4Yy/lLDnzccyjU+bX2otBCCODzAABERcmhMGxzQ3oYidJeKRi ea7faZ8ku2wMh33iAASVSlBxrnTvYdtW3SZypVQlcJI0YSAiju+yF98hcbDv9jgo35CD IP6OH6tPPVIM1aHFph+G0yIcW9rQRu86/2HdjN8qhChMpcYgGvSgswXOALkv/NRht0LU rTK46f+kVI3shpmy04a5z4YGODVCJ5+XF4KjNglt2+QITFmen/sUClhKQswqO3OZEriR vzIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776577629; x=1777182429; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2n3leMQq81cwaG+bCPf4H7UFFPcavESX6NKMDyLBC48=; b=q6nYxN4HdgiUqLpT7tqzh8sG2n8/WGEt/Yk0BXYSc2n4QWqmpupnCABRvjfvy2+0aJ MmknJWRH0gEi6dx6ZxWIhxor7soF56kbxbsAMT8J4WO2WgX1Kb8TKJ70irE0TXiMRa4X RG1FMVDixvq3ocxN02tK06e4ubRSOVsegp/PAnN0Eb9kbhdxV4ysLVhzyrS/z0j9F+v0 HF+DphzxM8fOTGI9ZyLeBBJiR2ohgxYNbYbRVUzF3zcbfPmeEX05UXOL4WnipVZPtuJF /37oFs8evh4saF9MopwPhKILhhhAIpFRf/tkjRGqt1TH6+DQ3kgXJ9RecXXVSMT4WcJQ 4T4g== X-Gm-Message-State: AOJu0Yxjk4E/HSQFRzc0hk99suQuR8kWkhiKwRk+1dCc0xGMKMmxFzIK 2f10mf1FNt4pOC2nx8ONskls3DBrjFbeIYxQhrWJa+rj2tT78E6Mtr0fsjtxF0k4dRKWpBUNuRC lMEHYOQzl0rZhJ9YAr7bEapJs9UHUZjt03OgW X-Gm-Gg: AeBDiesYXe7x/Xt+aZEL4WAnxD4nH5HAxSru5sNY5VZmvrGd1M490sNqvDVom89uEdO sNRNhyL6V4rnT4OlT5s1mzDMCU7/TZOI13/UEsOnQlzEetujM8CuefpNxJKbGOx2ztYu5wLEIoK eLnc2+wiGvQwMRjZX6ZKgDxuG0/7LAB94e57mpEatzpxbYZ7/JV06j0udIfWsZHrKvUVK8toFw4 eAWMWGaTLZ5WX+nTEUJmea+sZ/CSOZ+Do9t1GiDIJmtTAuEjRqWvYxUNftCC7vaxAo569g3wYSf I1rckAS9r+nZB4Vgvuvzmm39iM4aLlGG7qupoKbxGNesg7A5QxHrlc2X/RT6oA== X-Received: by 2002:a53:cb51:0:b0:651:db4c:8066 with SMTP id 956f58d0204a3-65310a0ba06mr6371773d50.39.1776577628971; Sat, 18 Apr 2026 22:47:08 -0700 (PDT) MIME-Version: 1.0 From: JoongHyuk Shin Date: Sun, 19 Apr 2026 14:46:57 +0900 X-Gm-Features: AQROBzCmgXMlWtcOPe0zs_7FOlTW3EbMNEBtn0blAfGd5UM121KOiKZ8vexevEg Message-ID: Subject: [PATCH] Prevent repeated deadlock-check signals in standby buffer pin waits To: "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="0000000000007e8c84064fc9b6c4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007e8c84064fc9b6c4 Content-Type: multipart/alternative; boundary="0000000000007e8c83064fc9b6c2" --0000000000007e8c83064fc9b6c2 Content-Type: text/plain; charset="UTF-8" In ResolveRecoveryConflictWithBufferPin(), when deadlock_timeout fires, the function sends RECOVERY_CONFLICT_BUFFERPIN_DEADLOCK and returns. The caller (LockBufferForCleanup) loops back, sets up another deadlock_timeout, and the signal gets sent again every interval. The lock-conflict path had the same problem and was fixed in 8900b5a9d59a by adding a second ProcWaitForSignal() after the deadlock-check signal. The buffer-pin path was left with an XXX comment asking "should we fix this?". The attached patch applies the same fix: after sending the deadlock-check signal, reset got_standby_deadlock_timeout and call ProcWaitForSignal() so the startup process waits for UnpinBuffer() rather than looping and re-signaling. Patch attached. --0000000000007e8c83064fc9b6c2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
In ResolveRecoveryConflictWithBufferPin(), when deadlock_t= imeout fires,
the function sends RECOVERY_CONFLICT_BUFFERPIN_DEADLOCK an= d returns.
The caller (LockBufferForCleanup) loops back, sets up another= deadlock_timeout,
and the signal gets sent again every interval.
The lock-conflict path had the same problem and was fixed in 8900b5a9d59a<= br>by adding a second ProcWaitForSignal() after the deadlock-check signal.<= br>The buffer-pin path was left with an XXX comment asking "should we = fix this?".

The attached patch applies the same fix: after send= ing the deadlock-check
signal, reset got_standby_deadlock_timeout and ca= ll ProcWaitForSignal()
so the startup process waits for UnpinBuffer() ra= ther than looping
and re-signaling.

Patch attached.
--0000000000007e8c83064fc9b6c2-- --0000000000007e8c84064fc9b6c4 Content-Type: application/octet-stream; name="0001-Prevent-repeated-deadlock-check-signals-in-standby-b.patch" Content-Disposition: attachment; filename="0001-Prevent-repeated-deadlock-check-signals-in-standby-b.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo5cfhuq0 RnJvbSA1ODIzOTcwMGVkZjBjNjY5ZjQ4MDdkYTYxNDBhNTk1YzJhMWU4YTVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb29uZ0h5dWsgU2hpbiA8c2poOTEwODA1QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAxNyBBcHIgMjAyNiAxNjo1ODozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIFBy ZXZlbnQgcmVwZWF0ZWQgZGVhZGxvY2stY2hlY2sgc2lnbmFscyBpbiBzdGFuZGJ5IGJ1ZmZlciBw aW4KIHdhaXRzCgpBZnRlciBzZW5kaW5nIFJFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTl9ERUFE TE9DSywgdGhlIHN0YXJ0dXAgcHJvY2VzcwpyZXR1cm5lZCB3aXRob3V0IHdhaXRpbmcsIHNvIHRo ZSBjYWxsZXIncyBsb29wIHdvdWxkIGZpcmUgYW5vdGhlcgpkZWFkbG9ja190aW1lb3V0IGFuZCBy ZS1zZW5kIHRoZSBzaWduYWwgZXZlcnkgaW50ZXJ2YWwuICBUaGlzIGFkZGVkCnVubmVjZXNzYXJ5 IG92ZXJoZWFkIGluIGJvdGggdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbmQgYmFja2VuZHMuCgpGaXgg YnkgYWRkaW5nIGEgUHJvY1dhaXRGb3JTaWduYWwoKSBjYWxsIGFmdGVyIHRoZSBkZWFkbG9jay1j aGVjawpzaWduYWwsIG1pcnJvcmluZyB0aGUgYXBwcm9hY2ggYWxyZWFkeSB1c2VkIGluIHRoZSBs b2NrLWNvbmZsaWN0IHBhdGgKKGNvbW1pdCA4OTAwYjVhOWQ1OWEpLiAgVGhpcyBlbnN1cmVzIHRo ZSBzaWduYWwgaXMgc2VudCBhdCBtb3N0IG9uY2UKcGVyIGRlYWRsb2NrX3RpbWVvdXQgcGVyaW9k IHJhdGhlciB0aGFuIHJlcGVhdGVkbHkuCgpBbHNvIHJlbW92ZSB0aGUgWFhYIGNvbW1lbnQgdGhh dCBub3RlZCB0aGlzIHByb2JsZW0uCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jIHwgMjAgKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRp b25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCAy OWFmNzczMzk0OC4uOTc0NGRiNTcxNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAg LTg1MSwxNyArODUxLDE5IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbih2 b2lkKQogCQkvKgogCQkgKiBTZW5kIG91dCBhIHJlcXVlc3QgZm9yIGhvdC1zdGFuZGJ5IGJhY2tl bmRzIHRvIGNoZWNrIHRoZW1zZWx2ZXMgZm9yCiAJCSAqIGRlYWRsb2Nrcy4KLQkJICoKLQkJICog WFhYIFRoZSBzdWJzZXF1ZW50IFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbigp IHdpbGwgd2FpdAotCQkgKiB0byBiZSBzaWduYWxlZCBieSBVbnBpbkJ1ZmZlcigpIGFnYWluIGFu ZCBzZW5kIGEgcmVxdWVzdCBmb3IKLQkJICogZGVhZGxvY2tzIGNoZWNrIGlmIGRlYWRsb2NrX3Rp bWVvdXQgaGFwcGVucy4gVGhpcyBjYXVzZXMgdGhlCi0JCSAqIHJlcXVlc3QgdG8gY29udGludWUg dG8gYmUgc2VudCBldmVyeSBkZWFkbG9ja190aW1lb3V0IHVudGlsIHRoZQotCQkgKiBidWZmZXIg aXMgdW5waW5uZWQgb3IgbHRpbWUgaXMgcmVhY2hlZC4gVGhpcyB3b3VsZCBpbmNyZWFzZSB0aGUK LQkJICogd29ya2xvYWQgaW4gdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbmQgYmFja2VuZHMuIEluIHBy YWN0aWNlIGl0IG1heQotCQkgKiBub3QgYmUgc28gaGFybWZ1bCBiZWNhdXNlIHRoZSBwZXJpb2Qg dGhhdCB0aGUgYnVmZmVyIGlzIGtlcHQgcGlubmVkCi0JCSAqIGlzIGJhc2ljYWxseSBubyBzbyBs b25nLiBCdXQgd2Ugc2hvdWxkIGZpeCB0aGlzPwogCQkgKi8KIAkJU2VuZFJlY292ZXJ5Q29uZmxp Y3RXaXRoQnVmZmVyUGluKFJFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTl9ERUFETE9DSyk7CisK KwkJLyoKKwkJICogV2FpdCBoZXJlIHRvIGJlIHNpZ25hbGVkIGJ5IFVucGluQnVmZmVyKCksIHRv IHByZXZlbnQgdGhlCisJCSAqIHN1YnNlcXVlbnQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo QnVmZmVyUGluKCkgY2FsbCAoZnJvbSB0aGUKKwkJICogY2FsbGVyJ3MgbG9vcCkgZnJvbSBmaXJp bmcgYW5vdGhlciBkZWFkbG9ja190aW1lb3V0IGFuZCByZS1zZW5kaW5nCisJCSAqIHRoZSBkZWFk bG9jay1jaGVjayBzaWduYWwuICBXaXRob3V0IHRoaXMsIHRoZSBzaWduYWwgd291bGQgYmUgc2Vu dAorCQkgKiBldmVyeSBkZWFkbG9ja190aW1lb3V0IGludGVydmFsIHVudGlsIHRoZSBidWZmZXIg aXMgdW5waW5uZWQgb3IKKwkJICogbHRpbWUgaXMgcmVhY2hlZC4KKwkJICovCisJCWdvdF9zdGFu ZGJ5X2RlYWRsb2NrX3RpbWVvdXQgPSBmYWxzZTsKKwkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9F VkVOVF9CVUZGRVJfQ0xFQU5VUCk7CiAJfQogCiAJLyoKLS0gCjIuNTIuMAoK --0000000000007e8c84064fc9b6c4--