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 1wMidG-000I7E-18 for pgpool-hackers@arkaria.postgresql.org; Tue, 12 May 2026 08:38:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wMidE-0041fO-19 for pgpool-hackers@arkaria.postgresql.org; Tue, 12 May 2026 08:38:24 +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 1wMidE-0041fH-0D for pgpool-hackers@lists.postgresql.org; Tue, 12 May 2026 08:38:24 +0000 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wMidB-00000000AuA-3gSP for pgpool-hackers@lists.postgresql.org; Tue, 12 May 2026 08:38:23 +0000 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2ba928852a5so34529185ad.1 for ; Tue, 12 May 2026 01:38:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778575101; cv=none; d=google.com; s=arc-20240605; b=PpgYGOA+PdOZoP5oLaT0kwvQ2w7xETgVvfMgQcVBWYvj+oxlPg/u538cKvub2FJ11A EtOicr8uHzj7DcZ1OtxNphNnn34MFRhM5rc8olSAJLePa/f8jZpLFKMcaiJdsaqe5IC3 SoWIFkfzNxzt5lDeCZcKvP4C31+3YvnIoq9PPPwU+q085mmR/i/0rPz5KcrEbEi/ztne dHh4xWd3maAHLMbb2oAUoEGq2ztrrYXQWV8QcRuy8YdriMp/wKeKk2ztpDEu2KOqakWZ hsflxCcbgjWaD656VidOb6sL6ghagWGxxncneTXwViv5sPLfbKUECF6g361jOkEF20tk +UeA== 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=3nrreOLVSamx+x1+deXDyG1QL/RLEVzt9ugOtZcTOUk=; fh=2jhwfur09QxWKE0iM/zusf3dSNi20nIVx0rRLoSe3Y8=; b=JzXHby2f6xIaLA6tAT6UlRM8bkaAz31f2rkDMe3LNZDj7X3hcGcQN7plTveBRRQLdH yV5ZGgNljZN4E4NhitjH2OZn8J51akPdgBD3tDgZ7Pf1iMDyZXDiCkpOc6F8VqRgnO51 9b9ctTFJkoasHYz17/IMiKtHoN41E0dklDopheRLa87LScETGRG266c/TPsnK0s52joE /3HZCt/bcSbYp10FcJgUF3LPwXIAWEMLNHpG++/dqLOwLdaNymZSm8RQ8spkJ0DdTZzp M0ijUzlmolphPaLKonSaUbftNhU1xRtMt4UuIVPlrscdRn5mQktHUwMEnziqPmcN6tnG 7qqA==; 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=1778575101; x=1779179901; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=3nrreOLVSamx+x1+deXDyG1QL/RLEVzt9ugOtZcTOUk=; b=CvACo+p7cTg0bAUWG/GoAiiMyat85IjDuPTayq2dD1PMd2gkDr7/wM/yHyVeuLXDLi IEj0Bkg7zqHO/gYcoWMEI6n0qIgZVwuHfrQhXD2+6lv5uggGFfkB1GG1bCJrKE30Bv0E EZIv8F96k2oCzLbFV+urSl8Y0dOtU72RSDeyrlTbJS08jqJAxjjFfe3UPEiy2HLBMk62 PgbnxPpRVao+yyNELH7FYVumoRZvqXAxrjDi3oR7Y42RbECiYNDoS1wi7+wJXh65SoTH 6limxtgbsuXXXC++zDPpXxTVVfAW28HzUSWUny+tsQrx1aPFTZUVI2jffVGXgkVORzwJ prHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778575101; x=1779179901; 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=3nrreOLVSamx+x1+deXDyG1QL/RLEVzt9ugOtZcTOUk=; b=JDFug+0u78gBZrlgaOlob2anx39KNxCPn/Kh/Qt+bOlLEGMw5p2eSjl6l4hgP7VbWr 7LxjhlIqZlTxMVluS2QvhmsOBxcAYaqcn7iAb21l4XFONac2wkltVCtcNPnY6uPNiMJ5 9edlR+uUurwsuDUNAjvXPqlkHyrX+ya069EMKX/mJUjkNPOEIb5AWJSnLgDWtaBJcNwl HReOgah/ebAijMPeGCN9xfCNGBqThxNloO1dsfC4ZskUjc+HbYCGyk6XligLAjSQBRWZ l00NyGDUuUceqzCGd+nHRIzE3XTgWzLLeUZ4DLPPsTwLeRgLNcrZoCVc/Er5k6tDXEnx gTyg== X-Gm-Message-State: AOJu0Yy7gw5kPUT+BvurCojxXMPxKbwQXqlqI4KTzvP9Yh1NCzursuNJ sJCtoAsJgvJAffDvtyHDPkCW7Vn9oCefscxqfqX4gG1RjyJcexNyw4B15lCURWCghHZZYpflyld vum+TOaYMGtX3b5CYoe298WPe8hymjFx/LRPc X-Gm-Gg: Acq92OHusGKFQozKBJApQzmRfx2D6j29N6MEUOPhsgJYHP3NaH6MNB4WZeUpSCj1t2T cwN0c7dhrtWi8VSAACR1G9wSkOLINuLov1aVTDg84/Lah9iCCL5ZMnp69Lq6uGLWrzWref4twTL aeUZ5mVb46YEzx+NnnTrhEPigLTF17aGWZkRjqe1pRS6Ydy239pnnntrV9kgY4AwVVqJGw678d+ 7AzeESd+l6Y0NEo25KR14eMM1YHox9vzZMPki+RiLnWPZuHwFG3ifaRfLJ72q6D961Gv4NUu2oF TqXF/CFD X-Received: by 2002:a17:902:cec7:b0:2ae:ac0c:5a2a with SMTP id d9443c01a7336-2bc7a98e93emr137418645ad.6.1778575101248; Tue, 12 May 2026 01:38:21 -0700 (PDT) MIME-Version: 1.0 From: Emond Papegaaij Date: Tue, 12 May 2026 10:38:08 +0200 X-Gm-Features: AVHnY4LNjZT0BU6zy69XhSAHngVRqhiqlbEChbPVvPhMTLs4poaNk8QL-tZ73pM Message-ID: Subject: Primary node detection race at clean startup To: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001ddf3206519ac942" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001ddf3206519ac942 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 this = 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 --0000000000001ddf3206519ac942 Content-Type: text/x-patch; charset="US-ASCII"; 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_mp2dntzn0 S2VlcCBsb2NhbCBwcmltYXJ5X25vZGVfaWQgd2hlbiBsZWFkZXIgd2F0Y2hkb2cgcmVwb3J0cyB0 aGUgaW5pdGlhbCAtMiBzZW50aW5lbC4KCldoZW4gYWxsIHBncG9vbCBub2RlcyBpbiBhIGNsdXN0 ZXIgYXJlIHN0b3BwZWQgYW5kIHN0YXJ0ZWQgc2ltdWx0YW5lb3VzbHkKKGUuZy4gdmlhIGFuIGFk bWluICJyZXN0YXJ0IGFsbCBwZ3Bvb2wgbm9kZXMiIGFjdGlvbiksIGV2ZXJ5IG5vZGUgaW5pdGlh bGlzZXMKUmVxX2luZm8tPnByaW1hcnlfbm9kZV9pZCB0byAtMiAodGhlIHNlbnRpbmVsKSBhbmQg dGhlbiBydW5zCmZpbmRfcHJpbWFyeV9ub2RlX3JlcGVhdGVkbHkoKSBsb2NhbGx5IHRvIGRpc2Nv dmVyIHRoZSByZWFsIHByaW1hcnkuIFRoZQp3YXRjaGRvZyBlbGVjdHMgYSBMRUFERVIgaW4gcGFy YWxsZWw7IHRoZSBsb3Npbmcgbm9kZXMgdHJhbnNpdGlvbiB0byBTVEFOREJZLApyZWNlaXZlIFNJ R19XQVRDSERPR19TVEFURV9DSEFOR0VELCBhbmQgY2FsbCBzeW5jX2JhY2tlbmRfZnJvbV93YXRj aGRvZygpIHRvCnB1bGwgdGhlIGxlYWRlcidzIHZpZXcuCgpJZiB0aGUgbGVhZGVyJ3Mgb3duIGZp bmRfcHJpbWFyeV9ub2RlX3JlcGVhdGVkbHkoKSBoYXMgbm90IGZpbmlzaGVkIHlldCwgdGhlCmxl YWRlciBzZXJpYWxpc2VzIGl0cyBzdGlsbC11bmluaXRpYWxpc2VkIHByaW1hcnlfbm9kZV9pZCAo LTIpIGFuZCB0aGUKc3RhbmRieSdzIGV4aXN0aW5nIHByb3RlY3RpdmUgYnJhbmNoIG9ubHkgY292 ZXJzIC0xIChxdWFyYW50aW5lKS4gVGhlIC0yCmZhbGxzIHRocm91Z2ggdG8gdGhlIGVsc2UtY2xh dXNlIGFuZCBvdmVyd3JpdGVzIHRoZSBzdGFuZGJ5J3MgZnJlc2hseS0KZGV0ZXJtaW5lZCB2YWxp ZCBwcmltYXJ5X25vZGVfaWQgd2l0aCAtMi4KCnN5bmNfYmFja2VuZF9mcm9tX3dhdGNoZG9nKCkg aXMgb25seSByZS1pbnZva2VkIG9uIFNJR19CQUNLRU5EX1NZTkNfUkVRVUlSRUQsCndoaWNoIGlz IHJhaXNlZCBvbmx5IG9uIFdEX0ZBSUxPVkVSX0VORC4gTm8gc3Vic2VxdWVudCBldmVudCBmaXJl cyBhZnRlciBhCnNpbXVsdGFuZW91cyByZXN0YXJ0LCBzbyB0aGUgc3RhbmRieSBpcyBzdHVjayBh dCAtMiBpbmRlZmluaXRlbHkuCgpBZGQgYSBndWFyZCB0aGF0IGtlZXBzIHRoZSBsb2NhbCBwcmlt YXJ5X25vZGVfaWQgd2hlbiB0aGUgbGVhZGVyJ3MgdmFsdWUgaXMKdGhlIC0yIGluaXRpYWwgc2Vu dGluZWwuCgpkaWZmIC0tZ2l0IGEvc3JjL21haW4vcGdwb29sX21haW4uYyBiL3NyYy9tYWluL3Bn cG9vbF9tYWluLmMKLS0tIGEvc3JjL21haW4vcGdwb29sX21haW4uYworKysgYi9zcmMvbWFpbi9w Z3Bvb2xfbWFpbi5jCkBAIC0zNzE5LDE4ICszNzE5LDM5IEBAIHN5bmNfYmFja2VuZF9mcm9tX3dh dGNoZG9nKHZvaWQpCiAJCSAqIE5vdGUgdGhhdCBSZXFfaW5mby0+cHJpbWFyeV9ub2RlX2lkIGNv dWxkIGJlIC0yLCB3aGljaCBpcyB0aGUKIAkJICogaW5pdGlhbCB2YWx1ZS4gU28gd2UgbmVlZCB0 byBhdm9pZCBjcmFzaCBieSBjaGVja2luZyB0aGUgdmFsdWUgaXMKIAkJICogbm90IGxvd2VyIHRo YW4gMC4gT3RoZXJ3aXNlIHdlIHdpbGwgZ2V0IGNyYXNoIHdoaWxlIGxvb2tpbmcgdXAKIAkJICog QkFDS0VORF9JTkZPIGFycmF5LiBTZWUgTWFudGlzIGJ1ZyBpZCA2MTQgZm9yIG1vcmUgZGV0YWls cy4KIAkJICovCiAJCWlmIChSZXFfaW5mby0+cHJpbWFyeV9ub2RlX2lkID49IDAgJiYKIAkJCWJh Y2tlbmRTdGF0dXMtPnByaW1hcnlfbm9kZV9pZCA9PSAtMSAmJiBCQUNLRU5EX0lORk8oUmVxX2lu Zm8tPnByaW1hcnlfbm9kZV9pZCkuYmFja2VuZF9zdGF0dXMgIT0gQ09OX0RPV04pCiAJCXsKIAkJ CWVyZXBvcnQoTE9HLAogCQkJCQkoZXJybXNnKCJwcmltYXJ5IG5vZGU6JWQgb24gbGVhZGVyIHdh dGNoZG9nIG5vZGUgXCIlc1wiIHNlZW1zIHRvIGJlIHF1YXJhbnRpbmVkIiwKIAkJCQkJCQlSZXFf aW5mby0+cHJpbWFyeV9ub2RlX2lkLCBiYWNrZW5kU3RhdHVzLT5ub2RlTmFtZSksCiAJCQkJCSBl cnJkZXRhaWwoImtlZXBpbmcgdGhlIGN1cnJlbnQgcHJpbWFyeSIpKSk7CiAJCX0KKwkJZWxzZSBp ZiAoUmVxX2luZm8tPnByaW1hcnlfbm9kZV9pZCA+PSAwICYmCisJCQkJIGJhY2tlbmRTdGF0dXMt PnByaW1hcnlfbm9kZV9pZCA9PSAtMikKKwkJeworCQkJLyoKKwkJCSAqIExlYWRlciB3YXRjaGRv ZyBpcyBzdGlsbCBpbml0aWFsaXNpbmcgYW5kIGhhcyBub3QgeWV0IHJ1bgorCQkJICogZmluZF9w cmltYXJ5X25vZGVfcmVwZWF0ZWRseSgpOyBpdHMgcHJpbWFyeV9ub2RlX2lkIGlzIHN0aWxsCisJ CQkgKiB0aGUgaW5pdGlhbCBzZW50aW5lbCAtMi4gRG8gbm90IG92ZXJ3cml0ZSBvdXIgbG9jYWxs eS1kZXRlcm1pbmVkCisJCQkgKiBwcmltYXJ5IHdpdGggdGhlIGxlYWRlcidzIHN0YWxlIGluaXRp YWwgc3RhdGUuCisJCQkgKgorCQkJICogV2l0aG91dCB0aGlzIGd1YXJkLCBhIHNpbXVsdGFuZW91 cyByZXN0YXJ0IG9mIGFsbCBwZ3Bvb2wgbm9kZXMKKwkJCSAqIGxlYXZlcyBldmVyeSBTVEFOREJZ IHdhdGNoZG9nIHdpdGggcHJpbWFyeV9ub2RlX2lkID0gLTIgZm9yZXZlcjoKKwkJCSAqIHN5bmNf YmFja2VuZF9mcm9tX3dhdGNoZG9nKCkgaXMgb25seSByZS1pbnZva2VkIG9uCisJCQkgKiBTSUdf QkFDS0VORF9TWU5DX1JFUVVJUkVEIChyYWlzZWQgZnJvbSBXRF9GQUlMT1ZFUl9FTkQpLCBzbwor CQkJICogdGhlcmUgaXMgbm8gbm9ybWFsIHBhdGggdGhhdCByZXN5bmNzIG9uY2UgdGhlIGxlYWRl cidzIG93bgorCQkJICogZmluZF9wcmltYXJ5X25vZGVfcmVwZWF0ZWRseSgpIGNvbXBsZXRlcy4K KwkJCSAqLworCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coInByaW1hcnkgbm9kZSBvbiBs ZWFkZXIgd2F0Y2hkb2cgbm9kZSBcIiVzXCIgaXMgc3RpbGwgaW4gdGhlIGluaXRpYWwgc3RhdGUi LAorCQkJCQkJCWJhY2tlbmRTdGF0dXMtPm5vZGVOYW1lKSwKKwkJCQkJIGVycmRldGFpbCgia2Vl cGluZyB0aGUgbG9jYWxseS1kZXRlY3RlZCBwcmltYXJ5IG5vZGU6JWQiLCBSZXFfaW5mby0+cHJp bWFyeV9ub2RlX2lkKSkpOworCQl9CiAJCWVsc2UKIAkJewogCQkJUmVxX2luZm8tPnByaW1hcnlf bm9kZV9pZCA9IGJhY2tlbmRTdGF0dXMtPnByaW1hcnlfbm9kZV9pZDsKIAkJCXByaW1hcnlfY2hh bmdlZCA9IHRydWU7CiAJCX0K --0000000000001ddf3206519ac942--