Re: XLogReadRecord() error in XlogReadTwoPhaseData()
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Noah Misch <noah@leadboat.com>
Cc: pgbf@twiska.com, Tom Lane <tgl@sss.pgh.pa.us>, Michael Paquier <michael@paquier.xyz>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-01-23T20:42:13Z
Lists: pgsql-hackers
On Sun, Jan 23, 2022 at 7:52 AM Noah Misch <noah@leadboat.com> wrote: > Attached. With this, kittiwake has survived 8.5hr of 003_cic_2pc.pl. Without > the patch, it failed many times, always within 1.3hr. For easier review, this > patch uses the new behavior on all platforms. Before commit and back-patch, I > plan to limit use of the new behavior to sparc Linux. Future work can > benchmark the new behavior and, if it performs well, make it unconditional in > v15+. I would expect performance to be unchanged or slightly better, because > the new behavior requests less futile work from the OS. One detail is that wal_level=open_datasync, wal_senders=0, wal_level=minimal will panic, because O_DIRECT requires fs page-aligned access (and fails in various other ways on other OSes, eg expensive read-before-write every time). That's an ultra-niche concern likely affecting nobody, especially when multiplied by the odds that anyone is using that stack at all (considering that streaming rep has apparently been borked for years on linux/sparc/ext4 and nobody told us). I was +1 for the control file locking change in that other thread (I view the atomicity stuff as Linux-realpolitik-vs-POSIX, not to mention that we run Windows too, which requires separate analysis). I'm less sure it makes sense to do anything to support the presumed bogus zeroes bug for (probably) no real users, especially before we've even reported it and heard some analysis, for example acceptance that it's broken and confirmation that this really is just a sparc problem.
Commits
-
Under has_wal_read_bug, skip recovery/t/032_relfilenode_reuse.pl.
- 3395cc1dbae5 15.1 landed
- a9f8ca6005f1 16.0 landed
-
Under has_wal_read_bug, skip contrib/bloom/t/001_wal.pl.
- c027e51d0fa3 10.21 landed
- 8fa3386431a7 11.16 landed
- 49d63b2e361c 12.11 landed
- 23213f53ba20 13.7 landed
- aca4d561cb9f 14.3 landed
- ad76c9708bd1 15.0 landed
-
Use Test::Builder::todo_start(), replacing $::TODO.
- b3558cc96cd9 13.7 landed
- 6da62ff14c57 10.21 landed
- 3a32e53e1f38 12.11 landed
- 2373429975ac 11.16 landed
- 1a83297d2224 14.3 landed
- adbd00f7a59b 15.0 landed
-
On sparc64+ext4, suppress test failures from known WAL read failure.
- e092f00d061e 11.15 landed
- d94a95cce9eb 14.2 landed
- a2a4992215c5 10.20 landed
- 785a28e422ea 13.6 landed
- 279956817ff4 12.10 landed
- ce6d79368efa 15.0 landed
-
Report any XLogReadRecord() error in XlogReadTwoPhaseData().
- 2f60fd647d81 10.20 landed
- cae393f0f9fc 11.15 landed
- 2d60ce3e1a46 12.10 landed
- d4e9d6946995 13.6 landed
- 675cd765c2a5 14.2 landed
- 335474691054 15.0 landed