fix bottom-up mechanism of lock wait mgr doesn't take effect in multi-tenant scenarios

This commit is contained in:
obdev
2023-05-05 11:41:57 +00:00
committed by ob-robot
parent 46ef83cdb8
commit d0162343f0
2 changed files with 4 additions and 3 deletions

View File

@ -120,6 +120,7 @@ int ObLockWaitMgr::init()
TRANS_LOG(WARN, "can't init row_holder", KR(ret));
} else {
share::ObThreadPool::set_run_wrapper(MTL_CTX());
last_check_session_idle_ts_ = ObClockGenerator::getClock();
is_inited_ = true;
}
TRANS_LOG(INFO, "LockWaitMgr.init", K(ret));
@ -423,7 +424,6 @@ ObLink* ObLockWaitMgr::check_timeout()
ObLink* tail = NULL;
Node* iter = NULL;
Node* node2del = NULL;
static int64_t last_check_session_idle_ts = 0;
bool need_check_session = false;
const int64_t MAX_WAIT_TIME_US = 10 * 1000 * 1000;
DeadlockedSessionArray *deadlocked_session = NULL;
@ -431,9 +431,9 @@ ObLink* ObLockWaitMgr::check_timeout()
// FIX:
// lower down session idle check frequency to 10s
int64_t curr_ts = ObClockGenerator::getClock();
if (curr_ts - last_check_session_idle_ts > MAX_WAIT_TIME_US) {
if (curr_ts - last_check_session_idle_ts_ > MAX_WAIT_TIME_US) {
need_check_session = true;
last_check_session_idle_ts = curr_ts;
last_check_session_idle_ts_ = curr_ts;
}
{
CriticalGuard(get_qs());

View File

@ -332,6 +332,7 @@ private:
Hash hash_;
int64_t sequence_[LOCK_BUCKET_COUNT];
char hash_buf_[sizeof(SpHashNode) * LOCK_BUCKET_COUNT];
int64_t last_check_session_idle_ts_;
public:
int fullfill_row_key(uint64_t hash, char *row_key, int64_t length);