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 1wMkgP-000Je7-2B for pgpool-hackers@arkaria.postgresql.org; Tue, 12 May 2026 10:49:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wMkgO-004Lt4-0f for pgpool-hackers@arkaria.postgresql.org; Tue, 12 May 2026 10:49:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wMkgO-004Lsw-02 for pgpool-hackers@lists.postgresql.org; Tue, 12 May 2026 10:49:48 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wMkgL-00000000Cgl-0rIk for pgpool-hackers@lists.postgresql.org; Tue, 12 May 2026 10:49:47 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2ad9f316d68so24345355ad.2 for ; Tue, 12 May 2026 03:49:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778582983; cv=none; d=google.com; s=arc-20240605; b=cFgxTw1Is/ZhvSbokrVhw8hengmNoY60xNC36x+cbN8kuPb2I6xHpiUzG2ky7HsUNP wUIX53NiNlRIWUQ7pzAAewoN8aZF4yikfs4ZIMZzxCfhMjBJLRKQ/5pNvGUMyddFdQhq 79f8cH+zEOI4HvNpa4agmJ9BA9tuxEEe2Wj0XX4HGh29bm8fzWjH55+nu8gM1cEDw8/3 40wWqyOT2EB3XETtVznDL3tSKwv5QlqRQRehTCw6gMWPlmKCf+8+w4ZKVyvbi2JdAbcs iVqT3bZheYbu8JFyvPyCgfcBMghT5zivP0yrDuGNWEbe8KhBSxYK/NzPejhcDxqxGEWq fVhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=uismwzsuLvRcuQbD0//hbPG47kXwiZ2U+R/b+tpFKEQ=; fh=2jhwfur09QxWKE0iM/zusf3dSNi20nIVx0rRLoSe3Y8=; b=A3dvb8ONS9twUjTuJMa8vkVGExaqP2gQkc4ziZc6YnNn6IJoj2zWvhICArsTcbXqEI 2zq4LxTmnldLKgGT98CllZOHZEbylYI+wD4SnvUtfwCSyA6ufLAYOrUWb7ZRJBBBqVeA E9nfxh+hjNP7nKtDCw0QsXQXBKGGdni2d4vev0Au2TkNOTA9UaTkPEEPgs4PjHk2hiV0 sDsTacWUco95jc0wkehVslA7xygc40fLSYGI7JBmR9YPmd+tMu/+nb7NAv9hL+TOB6X/ qJxiqpzn2PJHTQUyFV5MfOEB5nRCQ12KDDQtwJnonRijUhunOTpt+b8dY4OkI6os3t+x 49yg==; 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=1778582983; x=1779187783; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=uismwzsuLvRcuQbD0//hbPG47kXwiZ2U+R/b+tpFKEQ=; b=fYSdPgQwnqPvxin+Zr6Yi1M8j7OQUcPVI5aaeqO9aFxj8xO2R2Wqn8WsrQsMDzVlGw dUcU8KZKGfcvmmuQi1ZnucireG2ADk0P/1CyekPwsMi2zGRvaI//uTaFITRepi9viHhP fOcOGKFkYDNBLS9x/boHow6t98Zu5XzYIpapsadQ1uVo+ZOziXl8FjZ+kKk8sJStuh9a +gqUkmXQXtjg6qkwvCSnCYle5icBTj0Uj6V97C3VmoJYCuY6If1zn1VFpS5La4NKotZl gUnUAFKcVm64lA/KcQwy2trSF0mjontDtF8vP6mVCvy8DF4eO7c8KumX9gDXS8eySm97 ZpBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778582983; x=1779187783; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uismwzsuLvRcuQbD0//hbPG47kXwiZ2U+R/b+tpFKEQ=; b=bR0nkAmyEeatDgMP9Umv3akP7DhUJbKCuK9aoaLpQ8TlbWjvzYgGMOtKoRBF5K6l6E kmc+Usr2SDM7u/D6PLDo5bNi6ol58Rcef7nGP53YeWNGX2wLJxg4b7ST9pUUZ0yxy6LS ASRBaamvor0KjSA3mOsMxREQ4fZZCzq8luhr+j2mn1fj0lc9TDetIFBGU9qS5xEOYbdt TYXz8kHZluMCANhyiF0/6hvJsOkKBQg+yOVqDnr9nxWJINXpJ9Ps5q6om+BYKAFeR3n+ ENixvZak1cpUsq4t0njAXVCiNUyP/8ulgS3VpqbCXchEVzGjoD7eWoD2V5JLJYFMPpc0 pyKw== X-Gm-Message-State: AOJu0YwSnHROANwyIsQZ3THVg7pBp6MNGR3xdhtiredzkk6SS7IgtBST P5W9V+v0X8SfwG/FhuoYhmihyIikiU1ICbAUJx/5vHGZ6n891U77fglQrswrS/35ZUONcuZlBHg KUsEd80WnxCvYgbDTiklFxRONGujts0/rIQ== X-Gm-Gg: Acq92OGSrSYigPwJQYzrwdeoAuIM+xU9829r8HyF/ecNWl/C1A21W7k1Y6tn07t2A+2 mWA8Kur+VioBiNrLRYEWKy5VbqAiVHLcpSLUPyX/JtdlrlfUM47YWYxTuqaYtzTa19Jw8RpRIBv Mp8pAG5+5Y07fNbBDSS2xjrmPWfkv5cstgaJaH15IGkconeMg5oEXFuYhKnG82mpzUmH9df62QV OLB3odjZipxduBwqug0T/BMmkRvkU9rPQdmnHz3Lzj+2kNxiqxV/YToOqrPzpT5HZ5uAXOs8a6K DO+uJFJ1s59Dw6iYCxQ= X-Received: by 2002:a17:903:48f:b0:2ba:4f37:d3a7 with SMTP id d9443c01a7336-2ba794c4db4mr228671545ad.27.1778582983191; Tue, 12 May 2026 03:49:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Emond Papegaaij Date: Tue, 12 May 2026 12:49:31 +0200 X-Gm-Features: AVHnY4I_opa7tkPD7rEpc9zWG4Svd571VAt7BYWZ8iyRHhveFDBuLQFmuCn8vSg Message-ID: Subject: Re: Primary node detection race at clean startup To: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000eac79106519c9e26" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eac79106519c9e26 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Something was wrong with the attached patch. It is rejected by patch, probably because of the large context. Attached is a new version that also works with patch. Best regards, Emond Papegaaij Op di 12 mei 2026 om 10:38 schreef Emond Papegaaij : > > Hi, > > In our tests, we've found an issue that can cause all Pgpool nodes to > report an incorrect 'Role: standby': > Role : standby =E2=86=90 stale, never updated on thi= s node > Backend Role : primary =E2=86=90 actual SR-check result > > This can happen if all nodes in a watchdog cluster start with a clean > state at the same time. If the first node is still trying to determine > the primary database, it's primary_node_id is -2. This value is then > synced to other nodes in the cluster, causing all nodes to report the > stale state indefinitely. Attached is a patch against 4.7 that should > fix this. > > Note that this analysis was done by Claude Code and it also created > the patch. The failure on our CI was real though and I think the > explanation makes sense. > > Best regards, > Emond Papegaaij --000000000000eac79106519c9e26 Content-Type: application/x-patch; name="pgpool-keep-local-primary-when-leader-initial.patch" Content-Disposition: attachment; filename="pgpool-keep-local-primary-when-leader-initial.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp2fk08n0 S2VlcCBsb2NhbCBwcmltYXJ5X25vZGVfaWQgd2hlbiBsZWFkZXIgd2F0Y2hkb2cgcmVwb3J0cyB0 aGUgaW5pdGlhbCAtMiBzZW50aW5lbC4KCldoZW4gYWxsIHBncG9vbCBub2RlcyBpbiBhIGNsdXN0 ZXIgYXJlIHN0b3BwZWQgYW5kIHN0YXJ0ZWQgc2ltdWx0YW5lb3VzbHkKKGUuZy4gdmlhIGFuIGFk bWluICJyZXN0YXJ0IGFsbCBwZ3Bvb2wgbm9kZXMiIGFjdGlvbiksIGV2ZXJ5IG5vZGUgaW5pdGlh bGlzZXMKUmVxX2luZm8tPnByaW1hcnlfbm9kZV9pZCB0byAtMiAodGhlIHNlbnRpbmVsKSBhbmQg dGhlbiBydW5zCmZpbmRfcHJpbWFyeV9ub2RlX3JlcGVhdGVkbHkoKSBsb2NhbGx5IHRvIGRpc2Nv dmVyIHRoZSByZWFsIHByaW1hcnkuIFRoZQp3YXRjaGRvZyBlbGVjdHMgYSBMRUFERVIgaW4gcGFy YWxsZWw7IHRoZSBsb3Npbmcgbm9kZXMgdHJhbnNpdGlvbiB0byBTVEFOREJZLApyZWNlaXZlIFNJ R19XQVRDSERPR19TVEFURV9DSEFOR0VELCBhbmQgY2FsbCBzeW5jX2JhY2tlbmRfZnJvbV93YXRj aGRvZygpIHRvCnB1bGwgdGhlIGxlYWRlcidzIHZpZXcuCgpJZiB0aGUgbGVhZGVyJ3Mgb3duIGZp bmRfcHJpbWFyeV9ub2RlX3JlcGVhdGVkbHkoKSBoYXMgbm90IGZpbmlzaGVkIHlldCwgdGhlCmxl YWRlciBzZXJpYWxpc2VzIGl0cyBzdGlsbC11bmluaXRpYWxpc2VkIHByaW1hcnlfbm9kZV9pZCAo LTIpIGFuZCB0aGUKc3RhbmRieSdzIGV4aXN0aW5nIHByb3RlY3RpdmUgYnJhbmNoIG9ubHkgY292 ZXJzIC0xIChxdWFyYW50aW5lKS4gVGhlIC0yCmZhbGxzIHRocm91Z2ggdG8gdGhlIGVsc2UtY2xh dXNlIGFuZCBvdmVyd3JpdGVzIHRoZSBzdGFuZGJ5J3MgZnJlc2hseS0KZGV0ZXJtaW5lZCB2YWxp ZCBwcmltYXJ5X25vZGVfaWQgd2l0aCAtMi4KCnN5bmNfYmFja2VuZF9mcm9tX3dhdGNoZG9nKCkg aXMgb25seSByZS1pbnZva2VkIG9uIFNJR19CQUNLRU5EX1NZTkNfUkVRVUlSRUQsCndoaWNoIGlz IHJhaXNlZCBvbmx5IG9uIFdEX0ZBSUxPVkVSX0VORC4gTm8gc3Vic2VxdWVudCBldmVudCBmaXJl cyBhZnRlciBhCnNpbXVsdGFuZW91cyByZXN0YXJ0LCBzbyB0aGUgc3RhbmRieSBpcyBzdHVjayBh dCAtMiBpbmRlZmluaXRlbHkuCgpBZGQgYSBndWFyZCB0aGF0IGtlZXBzIHRoZSBsb2NhbCBwcmlt YXJ5X25vZGVfaWQgd2hlbiB0aGUgbGVhZGVyJ3MgdmFsdWUgaXMKdGhlIC0yIGluaXRpYWwgc2Vu dGluZWwuCgpkaWZmIC0tZ2l0IGEvc3JjL21haW4vcGdwb29sX21haW4uYyBiL3NyYy9tYWluL3Bn cG9vbF9tYWluLmMKLS0tIGEvc3JjL21haW4vcGdwb29sX21haW4uYworKysgYi9zcmMvbWFpbi9w Z3Bvb2xfbWFpbi5jCkBAIC0zNzI5LDYgKzM3MjksMjcgQEAgc3luY19iYWNrZW5kX2Zyb21fd2F0 Y2hkb2codm9pZCkKIAkJCQkJCQlSZXFfaW5mby0+cHJpbWFyeV9ub2RlX2lkLCBiYWNrZW5kU3Rh dHVzLT5ub2RlTmFtZSksCiAJCQkJCSBlcnJkZXRhaWwoImtlZXBpbmcgdGhlIGN1cnJlbnQgcHJp bWFyeSIpKSk7CiAJCX0KKwkJZWxzZSBpZiAoUmVxX2luZm8tPnByaW1hcnlfbm9kZV9pZCA+PSAw ICYmCisJCQkJIGJhY2tlbmRTdGF0dXMtPnByaW1hcnlfbm9kZV9pZCA9PSAtMikKKwkJeworCQkJ LyoKKwkJCSAqIExlYWRlciB3YXRjaGRvZyBpcyBzdGlsbCBpbml0aWFsaXNpbmcgYW5kIGhhcyBu b3QgeWV0IHJ1bgorCQkJICogZmluZF9wcmltYXJ5X25vZGVfcmVwZWF0ZWRseSgpOyBpdHMgcHJp bWFyeV9ub2RlX2lkIGlzIHN0aWxsCisJCQkgKiB0aGUgaW5pdGlhbCBzZW50aW5lbCAtMi4gRG8g bm90IG92ZXJ3cml0ZSBvdXIgbG9jYWxseS1kZXRlcm1pbmVkCisJCQkgKiBwcmltYXJ5IHdpdGgg dGhlIGxlYWRlcidzIHN0YWxlIGluaXRpYWwgc3RhdGUuCisJCQkgKgorCQkJICogV2l0aG91dCB0 aGlzIGd1YXJkLCBhIHNpbXVsdGFuZW91cyByZXN0YXJ0IG9mIGFsbCBwZ3Bvb2wgbm9kZXMKKwkJ CSAqIGxlYXZlcyBldmVyeSBTVEFOREJZIHdhdGNoZG9nIHdpdGggcHJpbWFyeV9ub2RlX2lkID0g LTIgZm9yZXZlcjoKKwkJCSAqIHN5bmNfYmFja2VuZF9mcm9tX3dhdGNoZG9nKCkgaXMgb25seSBy ZS1pbnZva2VkIG9uCisJCQkgKiBTSUdfQkFDS0VORF9TWU5DX1JFUVVJUkVEIChyYWlzZWQgZnJv bSBXRF9GQUlMT1ZFUl9FTkQpLCBzbworCQkJICogdGhlcmUgaXMgbm8gbm9ybWFsIHBhdGggdGhh dCByZXN5bmNzIG9uY2UgdGhlIGxlYWRlcidzIG93bgorCQkJICogZmluZF9wcmltYXJ5X25vZGVf cmVwZWF0ZWRseSgpIGNvbXBsZXRlcy4KKwkJCSAqLworCQkJZXJlcG9ydChMT0csCisJCQkJCShl cnJtc2coInByaW1hcnkgbm9kZSBvbiBsZWFkZXIgd2F0Y2hkb2cgbm9kZSBcIiVzXCIgaXMgc3Rp bGwgaW4gdGhlIGluaXRpYWwgc3RhdGUiLAorCQkJCQkJCWJhY2tlbmRTdGF0dXMtPm5vZGVOYW1l KSwKKwkJCQkJIGVycmRldGFpbCgia2VlcGluZyB0aGUgbG9jYWxseS1kZXRlY3RlZCBwcmltYXJ5 IG5vZGU6JWQiLCBSZXFfaW5mby0+cHJpbWFyeV9ub2RlX2lkKSkpOworCQl9CiAJCWVsc2UKIAkJ ewogCQkJUmVxX2luZm8tPnByaW1hcnlfbm9kZV9pZCA9IGJhY2tlbmRTdGF0dXMtPnByaW1hcnlf bm9kZV9pZDsK --000000000000eac79106519c9e26--