BUGFIX: break deadlock at ls map

This commit is contained in:
obdev
2023-08-02 02:12:24 +00:00
committed by ob-robot
parent d8b5835427
commit 5967f08b54
2 changed files with 9 additions and 9 deletions

View File

@ -275,8 +275,8 @@ int ObLSMap::del_ls(const share::ObLSID &ls_id)
}
ls->next_ = NULL;
}
del_ls_impl(ls);
}
del_ls_impl(ls);
}
return ret;

View File

@ -430,9 +430,6 @@ int ObLSService::create_ls(const obrpc::ObCreateLSArg &arg)
if (IS_NOT_INIT) {
ret = OB_NOT_INIT;
LOG_WARN("the ls service has not been inited", K(ret));
} else if (OB_UNLIKELY(!is_running_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("ls service is not running.", K(ret));
} else if (OB_UNLIKELY(!ObServerCheckpointSlogHandler::get_instance().is_started())) {
ret = OB_NOT_RUNNING;
LOG_WARN("ls service does not service before slog replay finished", K(ret));
@ -444,7 +441,10 @@ int ObLSService::create_ls(const obrpc::ObCreateLSArg &arg)
LOG_WARN("get timeout ts failed", KR(ret));
} else {
ObMutexGuardWithTimeout change_guard(change_lock_, abs_timeout_ts);
if (OB_FAIL(change_guard.get_ret())) {
if (OB_UNLIKELY(!is_running_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("ls service is not running.", K(ret));
} else if (OB_FAIL(change_guard.get_ret())) {
LOG_WARN("lock failed, try again later", K(ret));
ret = OB_EAGAIN;
} else if (OB_FAIL(check_ls_exist(arg.get_ls_id(), ls_exist))) {
@ -1038,9 +1038,6 @@ int ObLSService::create_ls_for_ha(
if (IS_NOT_INIT) {
ret = OB_NOT_INIT;
LOG_WARN("the ls service has not been inited", K(ret));
} else if (OB_UNLIKELY(!is_running_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("ls service is not running.", K(ret));
} else if (OB_UNLIKELY(!ObServerCheckpointSlogHandler::get_instance().is_started())) {
ret = OB_NOT_RUNNING;
LOG_WARN("ls service does not service before slog replay finished", K(ret));
@ -1055,7 +1052,10 @@ int ObLSService::create_ls_for_ha(
LOG_WARN("get timeout ts failed", KR(ret));
} else {
ObMutexGuardWithTimeout change_guard(change_lock_, abs_timeout_ts);
if (OB_FAIL(change_guard.get_ret())) {
if (OB_UNLIKELY(!is_running_)) {
ret = OB_NOT_RUNNING;
LOG_WARN("ls service is not running.", K(ret));
} else if (OB_FAIL(change_guard.get_ret())) {
LOG_WARN("lock failed, try again later", K(ret));
ret = OB_EAGAIN;
} else if (OB_FAIL(check_ls_exist(arg.ls_id_, ls_exist))) {