Make GUC wal_sender_timeout user-settable

Being able to use a value that can be changed on a connection basis is
useful with clusters distributed geographically, and makes failure
detection more flexible.  A note is added in the documentation about the
use of "options" in primary_conninfo, which can be hard to grasp for
newcomers with the need of two single quotes when listing a set of
parameters.

Author: Tsunakawa Takayuki
Reviewed-by: Masahiko Sawada, Michael Paquier
Discussion: https://postgr.es/m/0A3221C70F24FB45833433255569204D1FAAD3AE@G01JPEXMBYT05
This commit is contained in:
Michael Paquier 2018-09-22 15:23:59 +09:00
parent 4f3b38fe2b
commit db361db2fc
3 changed files with 10 additions and 6 deletions

View File

@ -3127,10 +3127,14 @@ include_dir 'conf.d'
Terminate replication connections that are inactive longer Terminate replication connections that are inactive longer
than the specified number of milliseconds. This is useful for than the specified number of milliseconds. This is useful for
the sending server to detect a standby crash or network outage. the sending server to detect a standby crash or network outage.
A value of zero disables the timeout mechanism. This parameter A value of zero disables the timeout mechanism. The default value
can only be set in is 60 seconds. With a cluster distributed across multiple geographic
the <filename>postgresql.conf</filename> file or on the server command line. locations, using different values per location brings more flexibility
The default value is 60 seconds. in the cluster management. A smaller value is useful for faster
failure detection with a standby having a low-latency network
connection, and a larger value helps in judging better the health
of a standby if located on a remote location, with a high-latency
network connection.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -738,7 +738,7 @@ protocol to make nodes agree on a serializable transactional order.
A simple example of a <filename>recovery.conf</filename> is: A simple example of a <filename>recovery.conf</filename> is:
<programlisting> <programlisting>
standby_mode = 'on' standby_mode = 'on'
primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass options=''-c wal_sender_timeout=5000'''
restore_command = 'cp /path/to/archive/%f %p' restore_command = 'cp /path/to/archive/%f %p'
archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r' archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r'
</programlisting> </programlisting>

View File

@ -2539,7 +2539,7 @@ static struct config_int ConfigureNamesInt[] =
}, },
{ {
{"wal_sender_timeout", PGC_SIGHUP, REPLICATION_SENDING, {"wal_sender_timeout", PGC_USERSET, REPLICATION_SENDING,
gettext_noop("Sets the maximum time to wait for WAL replication."), gettext_noop("Sets the maximum time to wait for WAL replication."),
NULL, NULL,
GUC_UNIT_MS GUC_UNIT_MS