Skip to content

Commit b68e356

Browse files
committed
worker_spi: Fix race condition in newly-added TAP tests
The second portion of the tests had a race condition where it would be possible for the startup of the dynamic workers to fail, in the event where the static workers started before them with the library loading in shared_preload_libraries did not finish to create their respective schemas. The conflict is caused by the fact that the dynamic and static workers used the same IDs, overlapping each other, so, for now, switch the dynamic workers to use different IDs, leading to different schemas created. Reported-by: Andres Freund Discussion: https://postgr.es/m/20230728022332.egqzobhskmlf6ntr@awork3.anarazel.de
1 parent 6d982e3 commit b68e356

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/test/modules/worker_spi/t/001_worker_spi.pl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,11 @@
6565
) or die "Timed out while waiting for bgworkers to be launched";
6666

6767
# Ask worker_spi to launch dynamic bgworkers with the library loaded, then
68-
# check their existence.
69-
my $worker1_pid = $node->safe_psql('mydb', 'SELECT worker_spi_launch(1);');
70-
my $worker2_pid = $node->safe_psql('mydb', 'SELECT worker_spi_launch(2);');
68+
# check their existence. Use IDs that do not overlap with the schemas created
69+
# by the previous workers.
70+
my $worker1_pid = $node->safe_psql('mydb', 'SELECT worker_spi_launch(10);');
71+
my $worker2_pid = $node->safe_psql('mydb', 'SELECT worker_spi_launch(11);');
72+
7173
ok( $node->poll_query_until(
7274
'mydb',
7375
qq[SELECT datname, count(datname) FROM pg_stat_activity

0 commit comments

Comments
 (0)