[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