支持idle_in_transaction_session_timeout

This commit is contained in:
xue_meng_en
2022-08-23 20:53:33 +08:00
parent e94d589c4f
commit 2bcb702760
13 changed files with 234 additions and 14 deletions

View File

@ -83,6 +83,10 @@ typedef struct knl_session_attr_common {
int StatementTimeout;
int SessionTimeout;
int SessionTimeoutCount;
#ifndef ENABLE_MULTIPLE_NODES
int IdleInTransactionSessionTimeout;
int IdleInTransactionSessionTimeoutCount;
#endif
int pgstat_collect_thread_status_interval;
int extra_float_digits;
int effective_io_concurrency;

View File

@ -1715,6 +1715,10 @@ typedef struct knl_u_storage_context {
volatile bool session_timeout_active;
/* session_fin_time is valid only if session_timeout_active is true */
TimestampTz session_fin_time;
#ifndef ENABLE_MULTIPLE_NODES
volatile bool idle_in_transaction_session_timeout_active;
TimestampTz idle_in_transaction_session_fin_time;
#endif
/* Number of file descriptors known to be in use by VFD entries. */
int nfile;

View File

@ -477,7 +477,9 @@ extern TimestampTz GetStatementFinTime();
extern bool enable_sig_alarm(int delayms, bool is_statement_timeout);
extern bool enable_lockwait_sig_alarm(int delayms);
extern bool enable_session_sig_alarm(int delayms);
extern bool enable_idle_in_transaction_session_sig_alarm(int delayms);
extern bool disable_session_sig_alarm(void);
extern bool disable_idle_in_transaction_session_sig_alarm(void);
extern bool disable_sig_alarm(bool is_statement_timeout);
extern bool pause_sig_alarm(bool is_statement_timeout);

View File

@ -60,6 +60,9 @@ public:
void SigHupHandler();
void HandlePoolerReload();
void CheckSessionTimeout();
#ifndef ENABLE_MULTIPLE_NODES
void CheckIdleInTransactionSessionTimeout();
#endif
void CheckPermissionForSendSignal(knl_session_context* sess, sig_atomic_t* lock);
void getSessionMemoryDetail(Tuplestorestate* tupStore, TupleDesc tupDesc, knl_sess_control** sess);
void getSessionClientInfo(Tuplestorestate* tupStore, TupleDesc tupDesc);