fix palf handle hold while sys ls gc

This commit is contained in:
maosy
2023-08-23 10:10:26 +00:00
committed by ob-robot
parent 931ebb3ad3
commit 6f363580e2
2 changed files with 12 additions and 10 deletions

View File

@ -147,18 +147,12 @@ void ObRecoveryLSService::do_work()
LOG_WARN("not init", K(ret), K(inited_), KP(proxy_));
} else {
ObLSRecoveryStatOperator ls_recovery;
palf::PalfBufferIterator iterator;
palf::PalfHandleGuard palf_handle_guard;
palf::PalfBufferIterator iterator;//can not use without palf_guard
int tmp_ret = OB_SUCCESS;
int64_t idle_time_us = 100 * 1000L;
SCN start_scn;
last_report_ts_ = OB_INVALID_TIMESTAMP;
uint64_t thread_idx = get_thread_idx();
if (0 != thread_idx) {
if (OB_FAIL(init_palf_handle_guard_(palf_handle_guard))) {
LOG_WARN("failed to init palf handle guard", KR(ret));
}
}
while (!has_set_stop() && OB_SUCC(ret)) {
ObCurTraceId::init(GCONF.self_addr_);
ObTenantInfoLoader *tenant_info_loader = MTL(ObTenantInfoLoader*);
@ -200,7 +194,10 @@ void ObRecoveryLSService::do_work()
}
} else {
DEBUG_SYNC(STOP_RECOVERY_LS_THREAD1);
if (!start_scn.is_valid()) {
palf::PalfHandleGuard palf_handle_guard;
if (OB_FAIL(init_palf_handle_guard_(palf_handle_guard))) {
LOG_WARN("failed to init palf handle guard", KR(ret));
} else if (!start_scn.is_valid()) {
ObLSRecoveryStat ls_recovery_stat;
if (OB_FAIL(ls_recovery.get_ls_recovery_stat(tenant_id_,
SYS_LS, false, ls_recovery_stat, *proxy_))) {

View File

@ -85,13 +85,18 @@ int ObTenantThreadHelper::start()
return ret;
}
ERRSIM_POINT_DEF(ERRSIM_SKIP_TENANT_THREAD_STOP);
void ObTenantThreadHelper::stop()
{
int ret = OB_SUCCESS;
LOG_INFO("[TENANT THREAD] thread stop start", K(tg_id_), K(thread_name_));
if (-1 != tg_id_) {
ret = ERRSIM_SKIP_TENANT_THREAD_STOP;
if (OB_UNLIKELY(ERRSIM_SKIP_TENANT_THREAD_STOP)) {
LOG_ERROR("[TENANT THREAD] skip tenant thread stop");
} else if (-1 != tg_id_) {
TG_REENTRANT_LOGICAL_STOP(tg_id_);
}
LOG_INFO("[TENANT THREAD] thread stop finish", K(tg_id_), K(thread_name_));
LOG_INFO("[TENANT THREAD] thread stop finish", K(tg_id_), K(thread_name_), KR(ret));
}
void ObTenantThreadHelper::wait()