Skip to content

Commit 6b0d69d

Browse files
committed
Fix race condition in subscription TAP test 021_twophase
The test did not wait for all the subscriptions to have caught up when dropping the subscription "tab_copy". In a slow environment, it could be possible for the replay of the COMMIT PREPARED transaction "mygid" to not be confirmed yet, causing one prepared transaction to be left around before moving to the next steps of the test. One failure noticed is a transaction found in pg_prepared_xacts for the cases where copy_data = false and two_phase = true, but there should be none after dropping the subscription. As an extra safety measure, a check is added before dropping the subscription, scanning pg_prepared_xacts to make sure that no prepared transactions are left once both subscriptions have caught up. Issue introduced by a8fd13c, fixing a problem similar to eaf5321. Per buildfarm member kestrel. Author: Vignesh C <vignesh21@gmail.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Discussion: https://postgr.es/m/CALDaNm329QaZ+bwU--bW6GjbNSZ8-38cDE8QWofafub7NV67oA@mail.gmail.com Backpatch-through: 15
1 parent 0f29022 commit 6b0d69d

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/test/subscription/t/021_twophase.pl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,14 @@
361361
$node_publisher->safe_psql('postgres', "SELECT count(*) FROM tab_copy;");
362362
is($result, qq(6), 'publisher inserted data');
363363

364+
# Wait for both subscribers to catchup
364365
$node_publisher->wait_for_catchup($appname_copy);
366+
$node_publisher->wait_for_catchup($appname);
367+
368+
# Make sure there are no prepared transactions on the subscriber
369+
$result = $node_subscriber->safe_psql('postgres',
370+
"SELECT count(*) FROM pg_prepared_xacts;");
371+
is($result, qq(0), 'should be no prepared transactions on subscriber');
365372

366373
$result =
367374
$node_subscriber->safe_psql('postgres', "SELECT count(*) FROM tab_copy;");

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy