Re: BF animal dikkop reported a failure in 035_standby_logical_decoding
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>
Cc: "Yu Shi (Fujitsu)" <shiy.fnst@fujitsu.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>,
tomas.vondra@enterprisedb.com, Andres Freund <andres@anarazel.de>
Date: 2023-05-29T11:03:05Z
Lists: pgsql-hackers
"Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com> writes: > On 5/26/23 9:27 AM, Yu Shi (Fujitsu) wrote: >> Is it possible that the vacuum command didn't remove tuples and then the >> conflict was not triggered? > The flush_wal table added by Andres should guarantee that the WAL is flushed, so > the only reason I can think about is indeed that the vacuum did not remove tuples ( > but I don't get why/how that could be the case). This test is broken on its face: CREATE TABLE conflict_test(x integer, y text); DROP TABLE conflict_test; VACUUM full pg_class; There will be something VACUUM can remove only if there were no other transactions holding back global xmin --- and there's not even a delay here to give any such transaction a chance to finish. Background autovacuum is the most likely suspect for breaking that, but I wouldn't be surprised if something in the logical replication mechanism itself could be running a transaction at the wrong instant. Some of the other recovery tests set autovacuum = off to try to control such problems, but I'm not sure how much of a solution that really is. regards, tom lane
Commits
-
Improve stability of recovery test 035_standby_logical_decoding
- cae25d110e08 16.2 landed
- 46d8587b5041 17.0 landed