Re: XLogReadRecord() error in XlogReadTwoPhaseData()
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@lists.postgresql.org, Thomas Munro <thomas.munro@gmail.com>, pgbf@twiska.com, Tom Lane <tgl@sss.pgh.pa.us>, Michael Paquier <michael@paquier.xyz>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-01-24T08:02:43Z
Lists: pgsql-hackers
On Sun, Jan 23, 2022 at 06:34:32PM -0800, Andres Freund wrote:
> On 2022-01-23 18:10:07 -0800, Noah Misch wrote:
> > On Sun, Jan 23, 2022 at 05:40:54PM -0800, Andres Freund wrote:
> > > Test::more's description: "If it's something the programmer hasn't done yet,
> > > use TODO. This is for any code you haven't written yet, or bugs you have yet
> > > to fix, but want to put tests in your testing script (always a good idea)."
> >
> > Could do that. Every run that doesn't get the flaky failure will print a
> > message like "TODO passed: 3-5", though the test file could mitigate that by
> > declaring the TODO only on configurations where we expect a failure.
>
> Yea, that's what I was thinking we'd do.
>
> > The
> > 027_stream_regress.pl trouble involves reaching a die(), not failing a test in
> > this sense, so that one would take more work.
>
> I'm really not a perl person... But my understanding is that todo_skip() would
> address this? I.e. something like
>
> TODO:
> {
> $todo_skip "linux/sparc has unaddressed problems with partial page overwrites"
> if ($^O eq 'linux' and $Config{archname'} ~= 'sparc');
>
> ok(whatever is broken);
> }
Yes. todo_skip() behaves much like regular skip(). The enclosed tests don't
run. Hence, it prevents die() and BAIL_OUT() failures. $TODO is a different
beast; tests still run, and it changes the reporting. For 003_cic_2pc.pl, I'm
fine using $TODO so we continue to run all test commands and quietly log their
results. For 027_stream_regress.pl, which would need deep changes to use
$TODO, it works to use any of todo_skip, skip, or skip_all. I prefer
skip_all, because it prints the skip reason to gmake's stdout. (If the number
of affected users is zero as theorized, the choice doesn't matter.) Any
objections? Here's the appearance of each strategy on gmake's stdout:
=== todo_skip
[23:56:45] t/003_cic_2pc.pl .. ok 60 ms ( 0.00 usr 0.00 sys + 0.05 cusr 0.00 csys = 0.05 CPU)
[23:56:45]
All tests successful.
Files=1, Tests=5, 1 wallclock secs ( 0.01 usr 0.00 sys + 0.05 cusr 0.00 csys = 0.06 CPU)
Result: PASS
=== skip
[23:55:47] t/003_cic_2pc.pl .. ok 59 ms ( 0.00 usr 0.00 sys + 0.05 cusr 0.00 csys = 0.05 CPU)
[23:55:48]
All tests successful.
Files=1, Tests=5, 1 wallclock secs ( 0.01 usr 0.00 sys + 0.05 cusr 0.00 csys = 0.06 CPU)
Result: PASS
=== skip_all
[23:31:04] t/003_cic_2pc.pl .. skipped: filesystem bug
[23:31:04]
Files=1, Tests=0, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.05 cusr 0.00 csys = 0.07 CPU)
Result: NOTESTS
=== $TODO, test 1 is expected fail, tests 2-5 are unexpected pass
[23:32:32] t/003_cic_2pc.pl .. ok 1371 ms ( 0.01 usr 0.00 sys + 0.51 cusr 0.24 csys = 0.76 CPU)
[23:32:33]
All tests successful.
Test Summary Report
-------------------
t/003_cic_2pc.pl (Wstat: 0 Tests: 5 Failed: 0)
TODO passed: 2-5
Files=1, Tests=5, 1 wallclock secs ( 0.02 usr 0.00 sys + 0.51 cusr 0.24 csys = 0.77 CPU)
Result: PASS
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