fixed restart failed because of create ls failed in ObLogService
This commit is contained in:
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user