On Mon, Mar 16, 2020 at 7:08 AM Michail Nikolaev <michail.nikol...@gmail.com> wrote: > While working on support for index hint bits on standby [1] I have > started to getting > "ERROR: could not find left sibling of block XXXX in index XXXX" > during stress tests.
I reproduced the bug using your steps (including the pg_usleep() hack) today. It was fairly easy to confirm the problem. Attached is a revised version of your patch. It renames the buffer variable names, and changes the precise order in which the locks are released (for consistency with _bt_unlink_halfdead_page()). It also changes the comments, and adds a new paragraph to the README. The existing paragraph was about cross-level differences, this new one is about same-level differences (plus a second new paragraph to talk about backwards scans + page deletion). This revised version is essentially the same as your original patch -- I have only made superficial adjuments. I think that I will be able to commit this next week, barring objections. -- Peter Geoghegan
v3-0001-Avoid-backwards-scan-page-deletion-standby-race.patch
Description: Binary data