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

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>, pgsql-hackers@postgresql.org
Date: 2022-11-23T02:52:22Z
Lists: pgsql-hackers
> On Nov 22, 2022, at 8:36 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> 
> 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?
> 

Probably, will fix in the morning 

Cheers

Andrew


Commits

  1. Fix prove_installcheck when used with PGXS

  2. Prevent port collisions between concurrent TAP tests