diff options
author | Robert Haas | 2016-03-16 15:30:45 +0000 |
---|---|---|
committer | Robert Haas | 2016-03-16 15:30:45 +0000 |
commit | c6dda1f48e573cc60fe25d8d470a05bfabed0252 (patch) | |
tree | 0c04e3abde478ad77e2237ec7211c71b9116c997 /src/backend/utils/init/postinit.c | |
parent | 5871b88487cfd07966e2ce08609a4d6d5ee9718e (diff) |
Add idle_in_transaction_session_timeout.
Vik Fearing, reviewed by Stéphane Schildknecht and me, and revised
slightly by me.
Diffstat (limited to 'src/backend/utils/init/postinit.c')
-rw-r--r-- | src/backend/utils/init/postinit.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 6b760d4265b..b3f1bc46d97 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -70,6 +70,7 @@ static void InitCommunication(void); static void ShutdownPostgres(int code, Datum arg); static void StatementTimeoutHandler(void); static void LockTimeoutHandler(void); +static void IdleInTransactionSessionTimeoutHandler(void); static bool ThereIsAtLeastOneRole(void); static void process_startup_options(Port *port, bool am_superuser); static void process_settings(Oid databaseid, Oid roleid); @@ -597,6 +598,8 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username, RegisterTimeout(DEADLOCK_TIMEOUT, CheckDeadLockAlert); RegisterTimeout(STATEMENT_TIMEOUT, StatementTimeoutHandler); RegisterTimeout(LOCK_TIMEOUT, LockTimeoutHandler); + RegisterTimeout(IDLE_IN_TRANSACTION_SESSION_TIMEOUT, + IdleInTransactionSessionTimeoutHandler); } /* @@ -1178,6 +1181,13 @@ LockTimeoutHandler(void) kill(MyProcPid, SIGINT); } +static void +IdleInTransactionSessionTimeoutHandler(void) +{ + IdleInTransactionSessionTimeoutPending = true; + InterruptPending = true; + SetLatch(MyLatch); +} /* * Returns true if at least one role is defined in this database cluster. |