1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-13 07:41:39 +03:00

Second try at fixing tcp_keepalives_idle option on Solaris.

Buildfarm evidence shows that TCP_KEEPALIVE_THRESHOLD doesn't exist
after all on Solaris < 11.  This means we need to take positive action to
prevent the TCP_KEEPALIVE code path from being taken on that platform.
I've chosen to limit it with "&& defined(__darwin__)", since it's unclear
that anyone else would follow Apple's precedent of spelling the symbol
that way.

Also, follow a suggestion from Michael Paquier of eliminating code
duplication by defining a couple of intermediate symbols for the
socket option.

In passing, make some effort to reduce the number of translatable messages
by replacing "setsockopt(foo) failed" with "setsockopt(%s) failed", etc,
throughout the affected files.  And update relevant documentation so
that it doesn't claim to provide an exhaustive list of the possible
socket option names.

Like the previous commit (f0256c774), back-patch to all supported branches.

Discussion: https://postgr.es/m/20170627163757.25161.528@wrigleys.postgresql.org
This commit is contained in:
Tom Lane
2017-06-28 12:30:16 -04:00
parent c2cb606a2e
commit e97b7372bf
4 changed files with 89 additions and 107 deletions

View File

@ -848,8 +848,8 @@ include_dir 'conf.d'
Specifies the number of seconds of inactivity after which TCP
should send a keepalive message to the client. A value of 0 uses
the system default.
This parameter is supported only on systems that support the
<symbol>TCP_KEEPIDLE</> or <symbol>TCP_KEEPALIVE</> symbols, and on
This parameter is supported only on systems that support
<symbol>TCP_KEEPIDLE</> or an equivalent socket option, and on
Windows; on other systems, it must be zero.
In sessions connected via a Unix-domain socket, this parameter is
ignored and always reads as zero.
@ -874,9 +874,9 @@ include_dir 'conf.d'
Specifies the number of seconds after which a TCP keepalive message
that is not acknowledged by the client should be retransmitted.
A value of 0 uses the system default.
This parameter is supported only on systems that support the
<symbol>TCP_KEEPINTVL</> symbol, and on Windows; on other systems, it
must be zero.
This parameter is supported only on systems that support
<symbol>TCP_KEEPINTVL</> or an equivalent socket option, and on
Windows; on other systems, it must be zero.
In sessions connected via a Unix-domain socket, this parameter is
ignored and always reads as zero.
</para>
@ -898,10 +898,11 @@ include_dir 'conf.d'
<listitem>
<para>
Specifies the number of TCP keepalives that can be lost before
the server's connection to the client is considered dead. A value of 0
uses the system default. This parameter is
supported only on systems that support the <symbol>TCP_KEEPCNT</>
symbol; on other systems, it must be zero.
the server's connection to the client is considered dead.
A value of 0 uses the system default.
This parameter is supported only on systems that support
<symbol>TCP_KEEPCNT</> or an equivalent socket option;
on other systems, it must be zero.
In sessions connected via a Unix-domain socket, this parameter is
ignored and always reads as zero.
</para>

View File

@ -1070,10 +1070,10 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname
Controls the number of seconds of inactivity after which TCP should
send a keepalive message to the server. A value of zero uses the
system default. This parameter is ignored for connections made via a
Unix-domain socket, or if keepalives are disabled. It is only supported
on systems where the <symbol>TCP_KEEPIDLE</> or <symbol>TCP_KEEPALIVE</>
socket option is available, and on Windows; on other systems, it has no
effect.
Unix-domain socket, or if keepalives are disabled.
It is only supported on systems where <symbol>TCP_KEEPIDLE</> or
an equivalent socket option is available, and on Windows; on other
systems, it has no effect.
</para>
</listitem>
</varlistentry>
@ -1086,9 +1086,9 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname
that is not acknowledged by the server should be retransmitted. A
value of zero uses the system default. This parameter is ignored for
connections made via a Unix-domain socket, or if keepalives are disabled.
It is only supported on systems where the <symbol>TCP_KEEPINTVL</>
socket option is available, and on Windows; on other systems, it has no
effect.
It is only supported on systems where <symbol>TCP_KEEPINTVL</> or
an equivalent socket option is available, and on Windows; on other
systems, it has no effect.
</para>
</listitem>
</varlistentry>
@ -1101,8 +1101,9 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname
client's connection to the server is considered dead. A value of
zero uses the system default. This parameter is ignored for
connections made via a Unix-domain socket, or if keepalives are disabled.
It is only supported on systems where the <symbol>TCP_KEEPCNT</>
socket option is available; on other systems, it has no effect.
It is only supported on systems where <symbol>TCP_KEEPCNT</> or
an equivalent socket option is available; on other systems, it has no
effect.
</para>
</listitem>
</varlistentry>