Fix a race in 035_standby_logical_decoding.pl Buildfarm animals francolin and kestrel reported intermittent failures in 035_standby_logical_decoding.pl.
The test checks that replaying DROP DATABASE on a standby terminates pg_recvlogical with the expected recovery-conflict message and removes the database's replication slots. To exercise this while pg_recvlogical is streaming, the test must wait for streaming to start before dropping the database on the primary. Previously, the test treated an active slot in pg_replication_slots as confirmation that pg_recvlogical was streaming. However, the slot can become active before pg_recvlogical has entered streaming mode. If DROP DATABASE is replayed during this window, pg_recvlogical can report a connection-closed error instead of the recovery-conflict message, causing the test to fail. Run pg_recvlogical with --verbose and wait for "streaming initiated" instead of checking whether the slot is active. This ensures that pg_recvlogical has entered streaming mode before the database is dropped on the primary. Back-patch to v16, where this test was introduced. Reported-by: Alexander Lakhin <[email protected]> Author: Hayato Kuroda <[email protected]> Reviewed-by: Alexander Lakhin <[email protected]> Reviewed-by: Bertrand Drouvot <[email protected]> Reviewed-by: Fujii Masao <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 16 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/487b710bc4784f7a70f8294f376cf2984ebaddb0 Modified Files -------------- src/test/recovery/t/035_standby_logical_decoding.pl | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
