Re: ssl tests aren't concurrency safe due to get_free_port()

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Andrew Dunstan <andrew@dunslane.net>, pgsql-hackers@postgresql.org
Date: 2022-11-23T01:36:06Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes:
> While looking into a weird buildfarm failure ([1]), I noticed this:

> # Checking port 62707
> Use of uninitialized value $pid in scalar chomp at /mnt/resource/bf/build/grassquit/REL_11_STABLE/pgsql.build/../pgsql/src/test/perl/PostgresNode.pm line 1247.
> Use of uninitialized value $pid in addition (+) at /mnt/resource/bf/build/grassquit/REL_11_STABLE/pgsql.build/../pgsql/src/test/perl/PostgresNode.pm line 1248.

Yeah, my animals are showing that too.

> Not quite sure how $pid ends up uninitialized, given the code:
> 	# see if someone else has or had a reservation of this port
> 	my $pid = <$portfile>;
> 	chomp $pid;
> 	if ($pid +0 > 0)

I guess the <$portfile> might return undef if the file is empty?

			regards, tom lane



Commits

  1. Fix prove_installcheck when used with PGXS

  2. Prevent port collisions between concurrent TAP tests