Hi, In tap tests for logical replication, we have the following code in many places:
$node_publisher->wait_for_catchup('tap_sub'); my $synced_query = "SELECT count(1) = 0 FROM pg_subscription_rel WHERE srsubstate NOT IN ('r', 's');"; $node_subscriber->poll_query_until('postgres', $synced_query) or die "Timed out while waiting for subscriber to synchronize data"; Also, we sometime forgot to check either one, like we fixed in commit 1f50918a6fb02207d151e7cb4aae4c36de9d827c. I think we can have a new function to wait for all subscriptions to synchronize data. The attached patch introduce a new function wait_for_subscription_sync(). With this function, we can replace the above code with this one function as follows: $node_subscriber->wait_for_subscription_sync($node_publisher, 'tap_sub'); Regards, -- Masahiko Sawada EDB: https://www.enterprisedb.com/
v1-0001-Introduce-wait_for_subscription_sync-for-TAP-test.patch
Description: Binary data