[CP] BUGFIX: ls service wait ls safe destroy
This commit is contained in:
@ -646,9 +646,6 @@ void ObServer::destroy()
|
|||||||
|
|
||||||
has_destroy_ = true;
|
has_destroy_ = true;
|
||||||
FLOG_INFO("[OBSERVER_NOTICE] destroy observer end");
|
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(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, 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, 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);
|
MTL_BIND2(mtl_new_default, ObTenantCheckpointSlogHandler::mtl_init, mtl_start_default, mtl_stop_default, mtl_wait_default, mtl_destroy_default);
|
||||||
|
|
||||||
// other mtl
|
// other mtl
|
||||||
|
|||||||
@ -181,6 +181,15 @@ int ObLSService::stop()
|
|||||||
return ret;
|
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)
|
int ObLSService::mtl_init(ObLSService* &ls_service)
|
||||||
{
|
{
|
||||||
observer::ObIMetaReport *reporter = GCTX.ob_service_;
|
observer::ObIMetaReport *reporter = GCTX.ob_service_;
|
||||||
|
|||||||
@ -55,6 +55,7 @@ public:
|
|||||||
observer::ObIMetaReport *reporter);
|
observer::ObIMetaReport *reporter);
|
||||||
int start();
|
int start();
|
||||||
int stop();
|
int stop();
|
||||||
|
int wait();
|
||||||
void destroy();
|
void destroy();
|
||||||
bool safe_to_destroy();
|
bool safe_to_destroy();
|
||||||
void inc_ls_safe_destroy_task_cnt();
|
void inc_ls_safe_destroy_task_cnt();
|
||||||
|
|||||||
Reference in New Issue
Block a user