pgsql: Use signals for postmaster death on Linux.

Started by Thomas Munroabout 8 years ago3 messagescomitters
Jump to latest
#1Thomas Munro
thomas.munro@gmail.com

Use signals for postmaster death on Linux.

Linux provides a way to ask for a signal when your parent process dies.
Use that to make PostmasterIsAlive() very cheap.

Based on a suggestion from Andres Freund.

Author: Thomas Munro, Heikki Linnakangas
Reviewed-By: Michael Paquier
Discussion: /messages/by-id/7261eb39-0369-f2f4-1bb5-62f3b6083b5e@iki.fi
Discussion: /messages/by-id/20180411002643.6buofht4ranhei7k@alap3.anarazel.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/9f09529952ac41a10e5874cba745c1c24e67ac79

Modified Files
--------------
configure | 2 +-
configure.in | 2 +-
src/backend/storage/ipc/latch.c | 6 +-
src/backend/storage/ipc/pmsignal.c | 125 +++++++++++++++++++++++++++++++++----
src/backend/utils/init/miscinit.c | 4 ++
src/include/pg_config.h.in | 3 +
src/include/pg_config.h.win32 | 3 +
src/include/storage/pmsignal.h | 33 +++++++++-
8 files changed, 159 insertions(+), 19 deletions(-)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Thomas Munro (#1)
Re: pgsql: Use signals for postmaster death on Linux.

Thomas Munro <tmunro@postgresql.org> writes:

Use signals for postmaster death on Linux.

One or the other of these patches seems to have caused pmsignal.h
to fail to compile standalone:

./src/include/storage/pmsignal.h:79: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'postmaster_possibly_dead'
./src/include/storage/pmsignal.h: In function 'PostmasterIsAlive':
./src/include/storage/pmsignal.h:84: error: 'postmaster_possibly_dead' undeclared (first use in this function)
./src/include/storage/pmsignal.h:84: error: (Each undeclared identifier is reported only once
./src/include/storage/pmsignal.h:84: error: for each function it appears in.)

Apparently, this header needs a reference to wherever sig_atomic_t
is declared.

regards, tom lane

#3Thomas Munro
thomas.munro@gmail.com
In reply to: Tom Lane (#2)
Re: pgsql: Use signals for postmaster death on Linux.

On Thu, Aug 2, 2018 at 8:07 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Thomas Munro <tmunro@postgresql.org> writes:

Use signals for postmaster death on Linux.

One or the other of these patches seems to have caused pmsignal.h
to fail to compile standalone:

./src/include/storage/pmsignal.h:79: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'postmaster_possibly_dead'
./src/include/storage/pmsignal.h: In function 'PostmasterIsAlive':
./src/include/storage/pmsignal.h:84: error: 'postmaster_possibly_dead' undeclared (first use in this function)
./src/include/storage/pmsignal.h:84: error: (Each undeclared identifier is reported only once
./src/include/storage/pmsignal.h:84: error: for each function it appears in.)

Apparently, this header needs a reference to wherever sig_atomic_t
is declared.

Thanks, will fix.

--
Thomas Munro
http://www.enterprisedb.com