Re: BUG #17064: Parallel VACUUM operations cause the error "global/pg_filenode.map contains incorrect checksum"
Alexander Law <exclusion@gmail.com>
From: Alexander Lakhin <exclusion@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>,
Heikki Linnakangas <hlinnaka@iki.fi>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2021-06-22T17:00:04Z
Lists: pgsql-bugs
Hello, 22.06.2021 16:00, Thomas Munro wrote: > On Tue, Jun 22, 2021 at 9:30 PM Heikki Linnakangas <hlinnaka@iki.fi> wrote: >> Hmm, the simplest explanation would be that the read() or write() on the >> relmapper file is not atomic. We assume that it is, and don't use a lock >> in load_relmap_file() because of that. Is there anything unusual about >> the filesystem, mount options or the kernel you're using? I could not >> reproduce this on my laptop. Does the attached patch fix it for you? > I have managed to reproduce this twice on a laptop running Linux > 5.10.0-2-amd64, after trying many things for several hours. Both > times I was using ext4 in a loopback file (underlying is xfs, I had no > luck there hence hunch that I should try ext4, may not be significant > though) with fsync=off (ditto). I'm sorry, I forgot that I've set "fsync=off" in my postgresql.conf (to avoid NVME-specific slowdown on fsyncs). It really does matter. With fsync=on the demo script passes 20 iterations successfully. I reproduce the issue on Ubuntu 20.04 with the kernel 5.9.15, ext4 (without any specific options) on NVME storage, and Ryzen 3700x. It was first encountered on Debian 10 with the kernel 4.19.0, ext4 on software RAID built on NVME storage too, and Xeon 5220. The attached patch fixes it for me (with fsync=off). 3 runs by 20 iterations completed without the error (without the patch I get the error on the first iteration). Best regards, Alexander
Commits
-
Another fix to relmapper race condition.
- 5956795cb5be 9.6.23 landed
- fbbc48995d05 10.18 landed
- eb3bd243a245 11.13 landed
- 8b01a403c5cc 12.8 landed
- 6fb377e5f74b 13.4 landed
- 9b8ed0f52bff 14.0 landed
-
Prevent race condition while reading relmapper file.
- 85ae8ccb2fb3 9.6.23 landed
- a5eacd86b715 10.18 landed
- c78bb32c19fe 11.13 landed
- caac1965077f 12.8 landed
- 2a0ab13f8dd1 13.4 landed
- b6d8d2073f22 14.0 landed