mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +03:00
Add TAP tests for timeouts
This commit adds new tests to verify that transaction_timeout, idle_session_timeout, and idle_in_transaction_session_timeout work as expected. We introduce new injection points in before throwing a timeout FATAL error and check these injection points are reached. Discussion: https://postgr.es/m/CAAhFRxiQsRs2Eq5kCo9nXE3HTugsAAJdSQSmxncivebAxdmBjQ%40mail.gmail.com Author: Andrey Borodin Reviewed-by: Alexander Korotkov
This commit is contained in:
@ -72,6 +72,7 @@
|
||||
#include "tcop/tcopprot.h"
|
||||
#include "tcop/utility.h"
|
||||
#include "utils/guc_hooks.h"
|
||||
#include "utils/injection_point.h"
|
||||
#include "utils/lsyscache.h"
|
||||
#include "utils/memutils.h"
|
||||
#include "utils/ps_status.h"
|
||||
@ -3411,9 +3412,12 @@ ProcessInterrupts(void)
|
||||
* interrupt.
|
||||
*/
|
||||
if (IdleInTransactionSessionTimeout > 0)
|
||||
{
|
||||
INJECTION_POINT("idle-in-transaction-session-timeout");
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT),
|
||||
errmsg("terminating connection due to idle-in-transaction timeout")));
|
||||
}
|
||||
else
|
||||
IdleInTransactionSessionTimeoutPending = false;
|
||||
}
|
||||
@ -3422,9 +3426,12 @@ ProcessInterrupts(void)
|
||||
{
|
||||
/* As above, ignore the signal if the GUC has been reset to zero. */
|
||||
if (TransactionTimeout > 0)
|
||||
{
|
||||
INJECTION_POINT("transaction-timeout");
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_TRANSACTION_TIMEOUT),
|
||||
errmsg("terminating connection due to transaction timeout")));
|
||||
}
|
||||
else
|
||||
TransactionTimeoutPending = false;
|
||||
}
|
||||
@ -3433,9 +3440,12 @@ ProcessInterrupts(void)
|
||||
{
|
||||
/* As above, ignore the signal if the GUC has been reset to zero. */
|
||||
if (IdleSessionTimeout > 0)
|
||||
{
|
||||
INJECTION_POINT("idle-session-timeout");
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_IDLE_SESSION_TIMEOUT),
|
||||
errmsg("terminating connection due to idle-session timeout")));
|
||||
}
|
||||
else
|
||||
IdleSessionTimeoutPending = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user