Re: Back-patch of: avoid multiple hard links to same WAL file after a crash
Noah Misch <noah@leadboat.com>
On Sat, Apr 05, 2025 at 07:09:58PM -0700, Noah Misch wrote: > On Sun, Apr 06, 2025 at 07:42:02AM +0900, Michael Paquier wrote: > > On Sat, Apr 05, 2025 at 12:13:39PM -0700, Noah Misch wrote: > > > Since the 2025-02 releases made non-toy-size archive recoveries fail easily, > > > that's not enough. If the proposed 3-second test is the wrong thing, what > > > instead? > > > > I don't have a good idea about that in ~16, TBH, but I am sure to not > > be a fan of the low reproducibility rate of this test as proposed. > > It's not perfect, but as the design to fix the original race condition > > has been introduced in v15, why not begin with a test in 17~ using > > some injection points? > > Two reasons: > > a) The fix ended calls to the whole range of relevant code. Hence, the > injection point placement that would have been relevant before the fix > isn't reached. In other words, there's no right place for the injection > point. (The place for the injection point would be in durable_rename(), in > the checkpointer. After the fix, the checkpointer just doesn't call > durable_rename().) > > b) Stochastic tests catch defects beyond the specific one the test author > targeted. An injection point test is less likely to do that. (That said, > with reason (a), there's no known injection point test design to compete > with the stochastic design.) Tom and Michael, do you still object to the test addition, or not? If there are no new or renewed objections by 2025-04-20, I'll proceed to add the test. As another data point, raising the runtime from 3s to 17s makes it reproduce the problem 25% of the time. You can imagine a plot with axes of runtime and percent detection. One can pick any point on that plot's curve. Given how little wall time it takes for the buildfarm and CI to reach a few hundred runs, I like the trade-off of 3s runtime and 1% detection. In particular, I like it better than 17s runtime for 25% detection. How do you see it?
Commits
-
Test restartpoints in archive recovery.
- 4399d1055627 13.21 landed
- 41ffd9d6a724 14.18 landed
- e297ddcfb7d3 17.5 landed
- 91168a9ae38d 15.13 landed
- 4664de1826a8 16.9 landed
- 714bd9e3a733 18.0 landed
-
Reset InstallXLogFileSegmentActive after walreceiver self-initiated exit.
- 69a498eb6465 13.21 landed
- 3635a0a35aaf 14.18 landed
-
Skip WAL recycling and preallocation during archive recovery.
- a5b0c06daae9 13.21 landed
- 014a508009df 14.18 landed
- cc2c7d65fc27 15.0 cited
-
Don't ERROR on PreallocXlogFiles() race condition.
- cbed472a9341 13.21 landed
- 675b771ca5f2 14.18 landed
-
Revert "Add HINT for restartpoint race with KeepFileRestoredFromArchive()."
- e77d9cd4f52e 13.21 landed
- 47d2d2982729 14.18 landed
-
Remove XLogFileInit() ability to unlink a pre-existing file.
- d0b6acaf04a2 13.21 landed
- b494640e8297 14.18 landed
-
In XLogFileInit(), fix *use_existent postcondition to suit callers.
- 20e5ef3ca70c 13.21 landed
- 8967dddf086e 14.18 landed
-
Remove XLogFileInit() ability to skip ControlFileLock.
- df8ec9634ccd 13.21 landed
- 6b168c1299c5 14.18 landed
-
Replace durable_rename_excl() by durable_rename(), take two
- 26a79cbbdace 13.19 landed
- 1f95181b44c8 14.16 landed
- c1c9df3159cf 15.11 landed
- dac1ff30906b 16.0 landed
-
Add HINT for restartpoint race with KeepFileRestoredFromArchive().
- 8ad6c5dbbe5a 14.5 cited
-
Remove durable_rename_excl()
- eb64ceac7ec3 16.0 landed
- 2c902bbf1911 15.0 landed
-
Replace existing durable_rename_excl() calls with durable_rename()
- ccfbd9287d70 15.0 landed