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.94.2) (envelope-from ) id 1vGWc5-00H3ys-Q4 for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Nov 2025 06:03:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vGWc4-000WF5-CC for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Nov 2025 06:03:19 +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.94.2) (envelope-from ) id 1vGWc3-000WEw-Ud for pgsql-hackers@lists.postgresql.org; Wed, 05 Nov 2025 06:03:19 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vGWc1-005X2s-0R for pgsql-hackers@postgresql.org; Wed, 05 Nov 2025 06:03:18 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-71d60157747so66109397b3.0 for ; Tue, 04 Nov 2025 22:03:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762322595; x=1762927395; darn=postgresql.org; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=E3fVe/6VSwppqMufFtPrSRCYDZZOmoodHXXDvLnS9JE=; b=JzQB4qvhb11fNyUTZCUYZHqKBVarQKyGa9oqtTAdhT+secJ+C44rKOvG9rM+VP6TYs YcPYnbDsIAZx8JvU5pD+we2K/lkj/nHSEtttvnc980yX2dsLCwgqyoq+ZbFhbu5UWLp6 5zpRfEcg4X2w05/XcXLzZXSwKksnGV3yeItS43JzK1TOhLyHGM2Qt+1z9ccJ55Q8oeVg VY5uUf3GI8ooDP7KipX9vwQi1OAvOZLEKnPoJsJ5zvhImJbIl0zoaW2JTUo7bOFE3v5l zAjeyN6FrwKNwLATEYT6mTc3yhFqkY7W7c41XTdEupwn0D2laUk1Aj/hn3KV9BYom1qV NIeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762322595; x=1762927395; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E3fVe/6VSwppqMufFtPrSRCYDZZOmoodHXXDvLnS9JE=; b=HnDxKSsgDXpwMzjoroqOVD0hr/BXhibNzO5bKTEnPMvm549cfVxtAK7g0U7RUQucYt NYxjhoinv1bHDad5bY2qC04klL+Q48yKWwnJ/sHCQWVdnmpfwQhFtRlpcFvZFIZgSxE8 vrV6/oU1t0vj0V3/4rRnoIyK8l68heBHgnND4MycosWdcoXDYMNXJiItluiQMFK9P3mn adYqZ14KArIxt0B5h1l0OCSScCFhdjrVXgyl3/4j+wt2irqFb0C7YKEXn6EdM8rHdGd+ pPqnLmYNf6AN2EbbCbdcmgvL4NleCTcooNdd5pL9Sv29U4P+1wMW1nTVxrP9MwKOMgFO Uqog== X-Gm-Message-State: AOJu0YzcmSC/s2AexccqKvxa6Jc2FmjI1MkR9KYsdotA69LsnszsKlH4 lC6zgJzVjYF2gbK19aFc2uxlJDImRCqVxSvvbw/Mw8whKQvRPj3k0bygksBYIeUJF4ckHw== X-Gm-Gg: ASbGnctQxlzQvJVHhvBGKZUKMztWE34o1lkjhR4hz8uiJF/c2LT+vhj6PBy9V3+CuSB zkme1ZI7RIAfOr70GHuPeMUbezYl5dpCRRR0xyi7y/39jNoZuak6nXgiFROiDHxO7WmkD+2hlQF EUVFoDyklxmtJPotr4mrhBrlWJgJFZBXtNaejLbWXxBW8vF9kPu1r709t7v0v//ebcL3KL6ejgM UwNi65vg1wckGm1oeQhdBZah9QCgLX5fgwHTtEeLbK9ZEWkVABzOIZeiTHZ+OuI8xdUKIQKqE2F PhjAhIyJqZoCY3PGzwG4lMf77NirAh4zwQKyNti9+EcrN7NSYB8P1hw7ScvWv5PtO3WGNJYvX+q KHAacWBRO0te4qqN2SrWkgpCAb1HiZYjC6y39oZLMrf5G99M14gEMy9e46XmpyVUu2ZGZYMlKUG +glaYvUcCvBZ2Ki6KpW6HOuZwLDVIkCXzHwZicagPsNQI69uRbfWazuQ== X-Google-Smtp-Source: AGHT+IHFkzOZfKN/txR9DlMPFL/tA3g7HRDG2fPMFTW7hs/ljZDsIF+jKPIa7jXWcZM6MO8YfM6wbw== X-Received: by 2002:a05:690c:6f13:b0:786:5c90:922b with SMTP id 00721157ae682-786a422b977mr18979407b3.35.1762322595025; Tue, 04 Nov 2025 22:03:15 -0800 (PST) Received: from ?IPV6:2600:1700:8952:80:d4ac:40e9:5ae8:a25b? ([2600:1700:8952:80:d4ac:40e9:5ae8:a25b]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7869200495csm16290827b3.44.2025.11.04.22.03.12 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Nov 2025 22:03:13 -0800 (PST) Content-Type: multipart/mixed; boundary="------------NURRuljFo7G8HSmeKv7VdE24" Message-ID: <9d00b597-d64a-4f1e-802e-90f9dc394c70@gmail.com> Date: Wed, 5 Nov 2025 00:03:29 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers From: Bryan Green Subject: [PATCH] Fix fragile walreceiver test. List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------NURRuljFo7G8HSmeKv7VdE24 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit The recovery/004_timeline_switch test has been failing for me on Windows. The test is wrong. The test does this: $node_standby_2->restart; # ... timeline switch happens ... ok( !$node_standby_2->log_contains( "FATAL: .* terminating walreceiver process due to administrator command" ), 'WAL receiver should not be stopped across timeline jumps'); Problem: restart() kills the walreceiver (as it should), which writes that exact FATAL message to the log. The test then searches the log and finds it. The test has a comment claiming "a new log file is used on node restart". TAP tests use pg_ctl with a fixed filename that gets reused across restarts. No log rotation. I added logging to confirm what's actually happening. The walreceiver works correctly - same PID handles both timelines: 2025-11-04 23:05:28.539 CST walreceiver[83824] LOG: started streaming WAL from primary at 0/03000000 on timeline 1 2025-11-04 23:05:28.543 CST startup[42764] LOG: new target timeline is 2 2025-11-04 23:05:28.544 CST walreceiver[83824] LOG: restarted WAL streaming at 0/03000000 on timeline 2 That's PID 83824 throughout. Works fine. Earlier in the same log, from the restart: 2025-11-04 23:05:27.261 CST walreceiver[52440] FATAL: terminating walreceiver process due to administrator command Different PID (52440), expected shutdown. This is what the test finds. The fix is obvious: check that the walreceiver PID stays constant. That's what we actually care about anyway. This matters because changes to I/O behavior elsewhere in the code can make this test fail spuriously. I hit it while working on O_CLOEXEC handling for Windows. Patch attached. -- Bryan Green EDB: https://www.enterprisedb.com --------------NURRuljFo7G8HSmeKv7VdE24 Content-Type: text/plain; charset=UTF-8; name="0001-Fix-timing-dependent-failure-in-recovery-004_timelin.patch" Content-Disposition: attachment; filename*0="0001-Fix-timing-dependent-failure-in-recovery-004_timelin.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZjRiNTk3NjBhOTEwZmJmZDNlYTg4MDExMzA3YzNhZjE4OGMyYjQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCcnlhbiBHcmVlbiA8ZGJyeWFuLmdyZWVuQGdtYWls LmNvbT4KRGF0ZTogVHVlLCA0IE5vdiAyMDI1IDIzOjQxOjI5IC0wNjAwClN1YmplY3Q6IFtQ QVRDSF0gRml4IHRpbWluZy1kZXBlbmRlbnQgZmFpbHVyZSBpbiByZWNvdmVyeS8wMDRfdGlt ZWxpbmVfc3dpdGNoLgoKVGhlIHRlc3QgdmVyaWZpZWQgd2FscmVjZWl2ZXIgc3Vydml2YWwg Ynkgc2VhcmNoaW5nIGxvZ3MgZm9yIHRlcm1pbmF0aW9uCm1lc3NhZ2VzLiBIb3dldmVyLCBp dCBjYWxsZWQgcmVzdGFydCgpIGJlZm9yZSB0aGUgdGltZWxpbmUgc3dpdGNoLCB3aGljaApr aWxscyB3YWxyZWNlaXZlciBhbmQgbG9ncyB0aGUgZXhhY3QgbWVzc2FnZSBiZWluZyBjaGVj a2VkLiBUQVAgdGVzdHMKcmV1c2UgdGhlIHNhbWUgbG9nIGZpbGUgYWNyb3NzIHJlc3RhcnRz LCBzbyBsb2dfY29udGFpbnMoKSBmaW5kcyB0aGF0Cm1lc3NhZ2UgYW5kIHRoZSB0ZXN0IGZh aWxzLgoKRXhjZXB0IHNvbWV0aW1lcyBpdCBkaWRuJ3QgZmFpbCwgYmVjYXVzZSB0aGUgbWVz c2FnZSB3YXNuJ3QgZmx1c2hlZCB5ZXQuClJlY2VudCBjaGFuZ2VzIHRvIGZpbGUgaGFuZGxl IGluaGVyaXRhbmNlIGFsdGVyZWQgSS9PIHRpbWluZyBlbm91Z2ggdG8KbWFrZSB0aGlzIGZh aWwgY29uc2lzdGVudGx5IHdoaWxlIHRlc3RpbmcgYW5vdGhlciBwYXRjaC4KClJlcGxhY2Ug dGhlIGxvZyBjaGVjayB3aXRoIGEgUElEIGNvbXBhcmlzb24sIHdoaWNoIGFjdHVhbGx5IHRl c3RzIHdoYXQKd2UgY2FyZSBhYm91dC4KLS0tCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAwNF90 aW1lbGluZV9zd2l0Y2gucGwgfCAyOCArKysrKysrKysrKysrKysrLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwNF90aW1lbGluZV9zd2l0Y2gucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAwNF90aW1lbGluZV9zd2l0Y2gucGwKaW5kZXggMTM4NzRmZjg2Ni4u MjFlOTRhMWRlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDRfdGltZWxp bmVfc3dpdGNoLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA0X3RpbWVsaW5lX3N3 aXRjaC5wbApAQCAtNTYsNiArNTYsMTYgQEAgcHJpbWFyeV9jb25uaW5mbz0nJGNvbm5zdHJf MScKICkpOwogJG5vZGVfc3RhbmRieV8yLT5yZXN0YXJ0OwogCisjIFdhaXQgZm9yIHdhbHJl Y2VpdmVyIHRvIHJlY29ubmVjdCBhZnRlciB0aGUgcmVzdGFydC4gIFRoZSByZXN0YXJ0Cisj IHdpbGwgaGF2ZSBraWxsZWQgdGhlIG9sZCB3YWxyZWNlaXZlciwgd2hpY2ggaXMgZXhwZWN0 ZWQuICBXZSB3YW50IHRvCisjIHZlcmlmeSB0aGF0IGFmdGVyIHJlY29ubmVjdGlvbiwgdGhl IHdhbHJlY2VpdmVyIHN0YXlzIGFsaXZlIGR1cmluZworIyB0aGUgdGltZWxpbmUgc3dpdGNo LgorJG5vZGVfc3RhbmRieV8yLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19zdGF0X3dhbF9yZWNlaXZlcikiKTsKK215 ICR3cl9waWRfYmVmb3JlX3N3aXRjaCA9ICRub2RlX3N0YW5kYnlfMi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3dhbF9yZWNlaXZlciIpOwor CisKICMgSW5zZXJ0IHNvbWUgZGF0YSBpbiBzdGFuZGJ5IDEgYW5kIGNoZWNrIGl0cyBwcmVz ZW5jZSBpbiBzdGFuZGJ5IDIKICMgdG8gZW5zdXJlIHRoYXQgdGhlIHRpbWVsaW5lIHN3aXRj aCBoYXMgYmVlbiBkb25lLgogJG5vZGVfc3RhbmRieV8xLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKQEAgLTY2LDEzICs3NiwxNyBAQCBteSAkcmVzdWx0ID0KICAgJG5vZGVfc3RhbmRieV8y LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRhYl9pbnQi KTsKIGlzKCRyZXN1bHQsIHFxKDIwMDApLCAnY2hlY2sgY29udGVudCBvZiBzdGFuZGJ5IDIn KTsKIAotIyBDaGVjayB0aGUgbG9ncywgV0FMIHJlY2VpdmVyIHNob3VsZCBub3QgaGF2ZSBi ZWVuIHN0b3BwZWQgd2hpbGUKLSMgdHJhbnNpdGlvbmluZyB0byBpdHMgbmV3IHRpbWVsaW5l LiAgVGhlcmUgaXMgbm8gbmVlZCB0byByZWx5IG9uIGFuCi0jIG9mZnNldCBpbiB0aGlzIGNo ZWNrIG9mIHRoZSBzZXJ2ZXIgbG9nczogYSBuZXcgbG9nIGZpbGUgaXMgdXNlZCBvbgotIyBu b2RlIHJlc3RhcnQgd2hlbiBwcmltYXJ5X2Nvbm5pbmZvIGlzIHVwZGF0ZWQgYWJvdmUuCi1v ayggISRub2RlX3N0YW5kYnlfMi0+bG9nX2NvbnRhaW5zKAotCQkiRkFUQUw6IC4qIHRlcm1p bmF0aW5nIHdhbHJlY2VpdmVyIHByb2Nlc3MgZHVlIHRvIGFkbWluaXN0cmF0b3IgY29tbWFu ZCIKLQkpLAorCisjIFZlcmlmeSB0aGF0IHRoZSB3YWxyZWNlaXZlciBwcm9jZXNzIHN0YXll ZCBhbGl2ZSBhY3Jvc3MgdGhlIHRpbWVsaW5lCisjIHN3aXRjaC4gIFdlIHJlY29yZGVkIHRo ZSBQSUQgYWZ0ZXIgcmVjb25uZWN0aW9uIGFuZCBub3cgY2hlY2sgdGhhdAorIyBpdCdzIHRo ZSBzYW1lIGFmdGVyIGNvbXBsZXRpbmcgdGhlIHRpbWVsaW5lIHN3aXRjaC4gIFRoaXMgaXMg bW9yZQorIyByZWxpYWJsZSB0aGFuIGNoZWNraW5nIGxvZyBtZXNzYWdlcywgd2hpY2ggbWF5 IGluY2x1ZGUgZXhwZWN0ZWQKKyMgc2h1dGRvd24gbWVzc2FnZXMgZnJvbSB0aGUgcmVzdGFy dC4KK215ICR3cl9waWRfYWZ0ZXJfc3dpdGNoID0gJG5vZGVfc3RhbmRieV8yLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfd2FsX3JlY2VpdmVy Iik7CisKK2lzKCAkd3JfcGlkX2JlZm9yZV9zd2l0Y2gsCisJJHdyX3BpZF9hZnRlcl9zd2l0 Y2gsCiAJJ1dBTCByZWNlaXZlciBzaG91bGQgbm90IGJlIHN0b3BwZWQgYWNyb3NzIHRpbWVs aW5lIGp1bXBzJyk7CiAKICMgRW5zdXJlIHRoYXQgYSBzdGFuZGJ5IGlzIGFibGUgdG8gZm9s bG93IGEgcHJpbWFyeSBvbiBhIG5ld2VyIHRpbWVsaW5lCi0tIAoyLjQ2LjAud2luZG93cy4x Cgo= --------------NURRuljFo7G8HSmeKv7VdE24--