Re: Add client connection check during the execution of the query
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Tatsuo Ishii <ishii@sraoss.co.jp>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2019-07-05T08:46:36Z
Lists: pgsql-hackers
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. -- Thomas Munro https://enterprisedb.com
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