1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Handle SIGTERM in pg_receivewal and pg_recvlogical

In pg_receivewal, compressed output is only flushed on clean exits.  The
reason to support SIGTERM as well as SIGINT (which is currently handled)
is that pg_receivewal might well be running as a daemon, and systemd's
default KillSignal is SIGTERM.

Since pg_recvlogical is also supposed to run as a daemon, teach it about
SIGTERM as well and update the documentation to match.  While in there,
change pg_receivewal's time_to_stop to be sig_atomic_t like it is in
pg_recvlogical.

Author: Christoph Berg <myon@debian.org>
Reviewed-by: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/Yvo/5No5S0c4EFMj@msg.df7cb.de
This commit is contained in:
Daniel Gustafsson
2022-09-14 16:32:24 +02:00
parent 0e733278e3
commit 8b60db7743
4 changed files with 34 additions and 12 deletions

View File

@ -118,8 +118,9 @@ PostgreSQL documentation
<para>
In the absence of fatal errors, <application>pg_receivewal</application>
will run until terminated by the <systemitem>SIGINT</systemitem> signal
(<keycombo action="simul"><keycap>Control</keycap><keycap>C</keycap></keycombo>).
will run until terminated by the <systemitem>SIGINT</systemitem>
(<keycombo action="simul"><keycap>Control</keycap><keycap>C</keycap></keycombo>)
or <systemitem>SIGTERM</systemitem> signal.
</para>
</refsect1>
@ -457,7 +458,8 @@ PostgreSQL documentation
<para>
<application>pg_receivewal</application> will exit with status 0 when
terminated by the <systemitem>SIGINT</systemitem> signal. (That is the
terminated by the <systemitem>SIGINT</systemitem> or
<systemitem>SIGTERM</systemitem> signal. (That is the
normal way to end it. Hence it is not an error.) For fatal errors or
other signals, the exit status will be nonzero.
</para>

View File

@ -46,6 +46,13 @@ PostgreSQL documentation
a slot without consuming it, use
<link linkend="functions-replication"><function>pg_logical_slot_peek_changes</function></link>.
</para>
<para>
In the absence of fatal errors, <application>pg_recvlogical</application>
will run until terminated by the <systemitem>SIGINT</systemitem>
(<keycombo action="simul"><keycap>Control</keycap><keycap>C</keycap></keycombo>)
or <systemitem>SIGTERM</systemitem> signal.
</para>
</refsect1>
<refsect1>
@ -407,6 +414,17 @@ PostgreSQL documentation
</para>
</refsect1>
<refsect1>
<title>Exit Status</title>
<para>
<application>pg_recvlogical</application> will exit with status 0 when
terminated by the <systemitem>SIGINT</systemitem> or
<systemitem>SIGTERM</systemitem> signal. (That is the
normal way to end it. Hence it is not an error.) For fatal errors or
other signals, the exit status will be nonzero.
</para>
</refsect1>
<refsect1>
<title>Environment</title>