[CP] BUGFIX: ls service wait ls safe destroy
This commit is contained in:
@ -646,9 +646,6 @@ void ObServer::destroy()
|
||||
|
||||
has_destroy_ = true;
|
||||
FLOG_INFO("[OBSERVER_NOTICE] destroy observer end");
|
||||
} else {
|
||||
FLOG_WARN_RET(OB_ERROR, "[OBSERVER_NOTICE] can not destroy observer", K_(has_destroy), K_(has_stopped));
|
||||
LOG_DBA_ERROR(OB_ERR_OBSERVER_STOP, "msg", "observer exits without calling destroy()", K_(has_destroy), K_(has_stopped));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -381,7 +381,7 @@ int ObMultiTenant::init(ObAddr myaddr,
|
||||
MTL_BIND2(ObTenantMetaMemMgr::mtl_new, mtl_init_default, mtl_start_default, mtl_stop_default, mtl_wait_default, mtl_destroy_default);
|
||||
MTL_BIND2(mtl_new_default, ObTransService::mtl_init, mtl_start_default, mtl_stop_default, mtl_wait_default, mtl_destroy_default);
|
||||
MTL_BIND2(mtl_new_default, ObLogService::mtl_init, mtl_start_default, mtl_stop_default, mtl_wait_default, mtl_destroy_default);
|
||||
MTL_BIND2(mtl_new_default, ObLSService::mtl_init, mtl_start_default, mtl_stop_default, nullptr, mtl_destroy_default);
|
||||
MTL_BIND2(mtl_new_default, ObLSService::mtl_init, mtl_start_default, mtl_stop_default, mtl_wait_default, mtl_destroy_default);
|
||||
MTL_BIND2(mtl_new_default, ObTenantCheckpointSlogHandler::mtl_init, mtl_start_default, mtl_stop_default, mtl_wait_default, mtl_destroy_default);
|
||||
|
||||
// other mtl
|
||||
|
||||
@ -181,6 +181,15 @@ int ObLSService::stop()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObLSService::wait()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
while(!safe_to_destroy()) {
|
||||
usleep(100 * 1000); // 100 ms
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObLSService::mtl_init(ObLSService* &ls_service)
|
||||
{
|
||||
observer::ObIMetaReport *reporter = GCTX.ob_service_;
|
||||
|
||||
@ -55,6 +55,7 @@ public:
|
||||
observer::ObIMetaReport *reporter);
|
||||
int start();
|
||||
int stop();
|
||||
int wait();
|
||||
void destroy();
|
||||
bool safe_to_destroy();
|
||||
void inc_ls_safe_destroy_task_cnt();
|
||||
|
||||
Reference in New Issue
Block a user