1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-31 22:04:40 +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 6ccab9242b
commit 5e74471320
4 changed files with 88 additions and 106 deletions

View File

@ -593,8 +593,8 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
Specifies the number of seconds before sending a keepalive packet on
an otherwise idle connection. 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.
@ -617,9 +617,9 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
Specifies the number of seconds between sending keepalives on an
otherwise idle connection. 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>
@ -640,9 +640,10 @@ SET ENABLE_SEQSCAN TO OFF;
<listitem>
<para>
Specifies the number of keepalive packets to send on an otherwise idle
connection. 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.
connection. 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

@ -1043,10 +1043,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>
@ -1059,9 +1059,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>
@ -1074,8 +1074,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>