pgsql: Tighten TAP tests' tracking of postmaster state some more. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Tighten TAP tests' tracking of postmaster state some more.
Date
Msg-id E1nAfuz-00081m-Fb@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Tighten TAP tests' tracking of postmaster state some more.

Commits 6c4a8903b et al. had a couple of deficiencies:

* The logic I added to Cluster::start to see if a PID file is present
could be fooled by a stale PID file left over from a previous
postmaster.  To fix, if we're not sure whether we expect to find a
running postmaster or not, validate the PID using "kill 0".

* 017_shm.pl has a loop in which it just issues repeated Cluster::start
calls; this will fail if some invocation fails but leaves self->_pid
set.  Per buildfarm results, the above fix is not enough to make this
safe: we might have "validated" a PID for a postmaster that exits
immediately after we look.  Hence, match each failed start call with
a stop call that will get us back to the self->_pid == undef state.
Add a fail_ok option to Cluster::stop to make this work.

Discussion: https://postgr.es/m/CA+hUKGKV6fOHvfiPt8=dOKzvswjAyLoFoJF1iQXMNpi7+hD1JQ@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4fdbf9af5184d033f07010a1ab573fb329e7b8cd

Modified Files
--------------
src/test/perl/PostgreSQL/Test/Cluster.pm | 40 +++++++++++++++++++++++++++-----
src/test/recovery/t/017_shm.pl           |  3 +++
2 files changed, 37 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: Re: pgsql: TAP tests: check for postmaster.pid anyway when "pg_ctl start" f
Next
From: Tom Lane
Date:
Subject: Re: pgsql: TAP tests: check for postmaster.pid anyway when "pg_ctl start" f