On Wed, Aug 5, 2020 at 9:50 PM Andrey M. Borodin <x4mmm@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