fixed restart failed because of create ls failed in ObLogService

This commit is contained in:
HaHaJeff
2024-02-10 08:55:39 +00:00
committed by ob-robot
parent d6af81e763
commit a41bedc587
5 changed files with 113 additions and 60 deletions

View File

@ -62,7 +62,6 @@ int ObLogHandler::init(const int64_t id,
ObLogApplyService *apply_service,
ObLogReplayService *replay_service,
ObRoleChangeService *rc_service,
PalfHandle &palf_handle,
PalfEnv *palf_env,
PalfLocationCacheCb *lc_cb,
obrpc::ObLogServiceRpcProxy *rpc_proxy)
@ -73,18 +72,19 @@ int ObLogHandler::init(const int64_t id,
share::ObLSID ls_id(id);
if (IS_INIT) {
ret = OB_INIT_TWICE;
} else if (false == palf_handle.is_valid() ||
OB_ISNULL(palf_env) ||
} else if (OB_ISNULL(palf_env) ||
OB_ISNULL(apply_service) ||
OB_ISNULL(lc_cb) ||
OB_ISNULL(rpc_proxy)) {
ret = OB_INVALID_ARGUMENT;
CLOG_LOG(WARN, "invalid arguments", K(palf_handle), KP(palf_env), KP(lc_cb), KP(rpc_proxy));
CLOG_LOG(WARN, "invalid arguments", K(id), KP(palf_env), KP(lc_cb), KP(rpc_proxy));
} else if (OB_FAIL(apply_service->get_apply_status(ls_id, guard))) {
CLOG_LOG(WARN, "guard get apply status failed", K(ret), K(id));
} else if (NULL == (apply_status_ = guard.get_apply_status())) {
ret = OB_ERR_UNEXPECTED;
CLOG_LOG(WARN, "apply status is not exist", K(ret), K(id));
} else if (OB_FAIL(palf_env->open(id, palf_handle_))) {
CLOG_LOG(WARN, "open palf failed", K(ret), K(id));
} else {
get_max_decided_scn_debug_time_ = OB_INVALID_TIMESTAMP;
apply_service_ = apply_service;
@ -95,7 +95,6 @@ int ObLogHandler::init(const int64_t id,
append_cost_stat_.set_extra_info(EXTRA_INFOS);
id_ = id;
self_ = self;
palf_handle_ = palf_handle;
palf_env_ = palf_env;
role_ = FOLLOWER;
lc_cb_ = lc_cb;
@ -103,7 +102,10 @@ int ObLogHandler::init(const int64_t id,
is_in_stop_state_ = false;
is_offline_ = true; // offline at default.
is_inited_ = true;
FLOG_INFO("ObLogHandler init success", K(id), K(palf_handle));
FLOG_INFO("ObLogHandler init success", K(id));
}
if (OB_FAIL(ret) && OB_INIT_TWICE != ret) {
destroy();
}
return ret;
}
@ -180,26 +182,25 @@ int ObLogHandler::safe_to_destroy(bool &is_safe_destroy)
void ObLogHandler::destroy()
{
WLockGuard guard(lock_);
int ret = OB_SUCCESS;
if (IS_INIT) {
is_inited_ = false;
is_offline_ = false;
is_in_stop_state_ = true;
common::TCWLockGuard deps_guard(deps_lock_);
is_inited_ = false;
is_offline_ = false;
is_in_stop_state_ = true;
common::TCWLockGuard deps_guard(deps_lock_);
if (NULL != apply_service_ && NULL != apply_status_) {
apply_service_->revert_apply_status(apply_status_);
apply_status_ = NULL;
apply_service_ = NULL;
replay_service_ = NULL;
if (true == palf_handle_.is_valid()) {
palf_env_->close(palf_handle_);
}
rc_service_ = NULL;
lc_cb_ = NULL;
rpc_proxy_ = NULL;
palf_env_ = NULL;
id_ = -1;
get_max_decided_scn_debug_time_ = OB_INVALID_TIMESTAMP;
}
apply_status_ = NULL;
apply_service_ = NULL;
replay_service_ = NULL;
if (NULL != palf_env_ && true == palf_handle_.is_valid()) {
palf_env_->close(palf_handle_);
}
rc_service_ = NULL;
lc_cb_ = NULL;
rpc_proxy_ = NULL;
palf_env_ = NULL;
id_ = -1;
get_max_decided_scn_debug_time_ = OB_INVALID_TIMESTAMP;
}
int ObLogHandler::append(const void *buffer,