summaryrefslogtreecommitdiff
path: root/src/include/utils/timeout.h
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2021-04-03 08:52:30 +1300
committerThomas Munro <tmunro@postgresql.org>2021-04-03 09:02:41 +1300
commitc30f54ad732ca5c8762bb68bbe0f51de9137dd72 (patch)
tree5086aba82cce9832ed537b726af643d8edf9b89c /src/include/utils/timeout.h
parent174edbe9f9c1538ab3347474e96d176223591cd1 (diff)
Detect POLLHUP/POLLRDHUP while running queries.
Provide a new GUC check_client_connection_interval that can be used to check whether the client connection has gone away, while running very long queries. It is disabled by default. For now this uses a non-standard Linux extension (also adopted by at least one other OS). POLLRDHUP is not defined by POSIX, and other OSes don't have a reliable way to know if a connection was closed without actually trying to read or write. In future we might consider trying to send a no-op/heartbeat message instead, but that could require protocol changes. Author: Sergey Cherkashin <s.cherkashin@postgrespro.ru> Author: Thomas Munro <thomas.munro@gmail.com> Reviewed-by: Thomas Munro <thomas.munro@gmail.com> Reviewed-by: Tatsuo Ishii <ishii@sraoss.co.jp> Reviewed-by: Konstantin Knizhnik <k.knizhnik@postgrespro.ru> Reviewed-by: Zhihong Yu <zyu@yugabyte.com> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Maksim Milyutin <milyutinma@gmail.com> Reviewed-by: Tsunakawa, Takayuki/綱川 貴之 <tsunakawa.takay@fujitsu.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> (much earlier version) Discussion: https://postgr.es/m/77def86b27e41f0efcba411460e929ae%40postgrespro.ru
Diffstat (limited to 'src/include/utils/timeout.h')
-rw-r--r--src/include/utils/timeout.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/include/utils/timeout.h b/src/include/utils/timeout.h
index ecb2a366a5f..93e6a691b3f 100644
--- a/src/include/utils/timeout.h
+++ b/src/include/utils/timeout.h
@@ -32,6 +32,7 @@ typedef enum TimeoutId
STANDBY_LOCK_TIMEOUT,
IDLE_IN_TRANSACTION_SESSION_TIMEOUT,
IDLE_SESSION_TIMEOUT,
+ CLIENT_CONNECTION_CHECK_TIMEOUT,
/* First user-definable timeout reason */
USER_TIMEOUT,
/* Maximum number of timeout reasons */