pgsql: Make PQcancel use the PGconn's tcp_user_timeout and keepalives s

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Make PQcancel use the PGconn's tcp_user_timeout and keepalives s
Дата
Msg-id E1n9tv6-0005GV-Hc@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Make PQcancel use the PGconn's tcp_user_timeout and keepalives settings.

If connectivity to the server has been lost or become flaky, the
user might well try to send a query cancel.  It's highly annoying
if PQcancel hangs up in such a case, but that's exactly what's likely
to happen.  To ameliorate this problem, apply the PGconn's
tcp_user_timeout and keepalives settings to the TCP connection used
to send the cancel.  This should be safe on Unix machines, since POSIX
specifies that setsockopt() is async-signal-safe.  We are guessing
that WSAIoctl(SIO_KEEPALIVE_VALS) is similarly safe on Windows.
(Note that at least in psql and our other frontend programs, there's
no safety issue involved anyway, since we run PQcancel in its own
thread rather than in a signal handler.)

Most of the value here comes from the expectation that tcp_user_timeout
will be applied as a connection timeout.  That appears to happen on
Linux, even though its tcp(7) man page claims differently.  The
keepalive options probably won't help much, but as long as we can
apply them for not much code, we might as well.

Jelte Fennema, reviewed by Fujii Masao and myself

Discussion: https://postgr.es/m/AM5PR83MB017870DE81FC84D5E21E9D1EF7AA9@AM5PR83MB0178.EURPRD83.prod.outlook.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5987feb70b5bbb1fc4e64d433f490df08d91dd45

Modified Files
--------------
doc/src/sgml/libpq.sgml           |   4 +-
src/interfaces/libpq/fe-connect.c | 249 +++++++++++++++++++++++++++++---------
src/interfaces/libpq/libpq-int.h  |   7 ++
3 files changed, 204 insertions(+), 56 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: Re: pgsql: Test replay of regression tests, attempt II.
Следующее
От: Tom Lane
Дата:
Сообщение: Re: pgsql: Test replay of regression tests, attempt II.