On Wed, Aug 5, 2020 at 9:50 PM Andrey M. Borodin <x4...@yandex-team.ru> wrote: > Sounds great! Thanks!
I'm afraid that there is another problem, this time with btree_xlog_split(). It's possible to get false positives when running the new test continually on a standby. You can see this by running verification on a standby continually, while the primary runs with a workload that gets many page splits. It's easy to see if you apply this patch: --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -435,6 +435,9 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record) UnlockReleaseBuffer(lbuf); UnlockReleaseBuffer(rbuf); + /* trick */ + pg_usleep(10 * 1000L); + The only thing that we can do is adjust the locking in btree_xlog_split() to match the primary (kind of like commit 9a9db08a, except with page splits instead of page deletion). Attached is a revised version of the patch, along with the changes that we'd need to REDO to make the amcheck patch really work. I'm not sure if this change to the REDO routine is worth the overhead or trouble, though. I have to think about it some more. BTW, the first patch in the series now has a new check for page deletion -- that was missing from v4. -- Peter Geoghegan
v5-0002-Adjust-btree_xlog_split-locking.patch
Description: Binary data
v5-0001-Add-amcheck-sibling-link-checks.patch
Description: Binary data