Thread: pg_upgrade test script creates port conflicts in parallel testing

pg_upgrade test script creates port conflicts in parallel testing

From
Tom Lane
Date:
I've been getting complaints lately about failures of parallel builds
of the Fedora Postgres RPMs on the same machine.  I just figured out
what's going on: the pg_upgrade regression test script starts test
postmasters using the default value of listen_addresses, which means
that they try to bind to TCP port 50432 on localhost, which means the
test fails if there's more than one concurrent instance.  This does
not happen for the main regression tests, nor for any other contrib
module, because pg_regress.c's postmaster-starting code explicitly
sets listen_addresses to empty, so that only the Unix socket is
active.  (RPM building in Fedora generally happens in a chroot, so
there is no conflict of Unix sockets - they're not in the same /tmp.)

pg_upgrade itself also sets listen_addresses to empty; it's only
the test script that hasn't gotten the memo.

Does anyone have an objection to fixing the pg_upgrade test script
to suppress the TCP socket?
        regards, tom lane



Re: pg_upgrade test script creates port conflicts in parallel testing

From
Andrew Dunstan
Date:
On 01/03/2013 12:58 PM, Tom Lane wrote:
> I've been getting complaints lately about failures of parallel builds
> of the Fedora Postgres RPMs on the same machine.  I just figured out
> what's going on: the pg_upgrade regression test script starts test
> postmasters using the default value of listen_addresses, which means
> that they try to bind to TCP port 50432 on localhost, which means the
> test fails if there's more than one concurrent instance.  This does
> not happen for the main regression tests, nor for any other contrib
> module, because pg_regress.c's postmaster-starting code explicitly
> sets listen_addresses to empty, so that only the Unix socket is
> active.  (RPM building in Fedora generally happens in a chroot, so
> there is no conflict of Unix sockets - they're not in the same /tmp.)
>
> pg_upgrade itself also sets listen_addresses to empty; it's only
> the test script that hasn't gotten the memo.
>
> Does anyone have an objection to fixing the pg_upgrade test script
> to suppress the TCP socket?
>
>             

Should be OK. We can't do that on Windows, though, so please make it 
conditional so we don't break Mingw buildfarm members. The test script 
already contains a few Windows variants.

cheers

andrew




Re: pg_upgrade test script creates port conflicts in parallel testing

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 01/03/2013 12:58 PM, Tom Lane wrote:
>> Does anyone have an objection to fixing the pg_upgrade test script
>> to suppress the TCP socket?

> Should be OK. We can't do that on Windows, though, so please make it 
> conditional so we don't break Mingw buildfarm members. The test script 
> already contains a few Windows variants.

I'm planning to do it like this:
testhost=`uname -s`
+case $testhost in
+    MINGW*)    LISTEN_ADDRESSES="localhost" ;;
+    *)        LISTEN_ADDRESSES="" ;;
+esac
+
+POSTMASTER_OPTS="-F -c listen_addresses=$LISTEN_ADDRESSES"
+temp_root=$PWD/tmp_check

which matches the existing Windows-specific switches.
        regards, tom lane