Re: Add client connection check during the execution of the query
Stas Kelvich <s.kelvich@postgrespro.ru>
From: Stas Kelvich <s.kelvich@postgrespro.ru>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Tatsuo Ishii <ishii@sraoss.co.jp>,
Tom Lane <tgl@sss.pgh.pa.us>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2019-07-05T12:27:06Z
Lists: pgsql-hackers
> On 5 Jul 2019, at 11:46, Thomas Munro <thomas.munro@gmail.com> wrote: > > On Fri, Jul 5, 2019 at 6:28 PM Tatsuo Ishii <ishii@sraoss.co.jp> wrote: >>> The purpose of this patch is to stop the execution of continuous >>> requests in case of a disconnection from the client. >> >> Pgpool-II already does this by sending a parameter status message to >> the client. It is expected that clients are always prepared to receive >> the parameter status message. This way I believe we could reliably >> detect that the connection to the client is broken or not. > > Hmm. If you send a message, it's basically application-level > keepalive. But it's a lot harder to be sure that the protocol and > socket are in the right state to insert a message at every possible > CHECK_FOR_INTERRUPT() location. Sergey's proposal of recv(MSG_PEEK) > doesn't require any knowledge of the protocol at all, though it > probably does need TCP keepalive to be configured to be useful for > remote connections. Well, indeed in case of cable disconnect only way to detect it with proposed approach is to have tcp keepalive. However if disconnection happens due to client application shutdown then client OS should itself properly close than connection and therefore this patch will detect such situation without keepalives configured. -- Stas Kelvich Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
Commits
-
Add WL_SOCKET_CLOSED for socket shutdown events.
- 50e570a59e7f 15.0 landed
-
Use WL_SOCKET_CLOSED for client_connection_check_interval.
- cba5b994c990 15.0 landed
-
Detect POLLHUP/POLLRDHUP while running queries.
- c30f54ad732c 14.0 landed
-
Improve timeout.c's handling of repeated timeout set/cancel.
- 09cf1d522676 14.0 cited