add destroy thread for kill 15

This commit is contained in:
zhjc1124
2023-06-01 10:12:00 +00:00
committed by ob-robot
parent 6788f0a210
commit 58ab2d88cb
21 changed files with 231 additions and 43 deletions

View File

@ -473,6 +473,11 @@ void ObServer::destroy()
// Cause ObBackupInfo to lock the mutex that has been destroyed by itself, and finally trigger the core
// This is essentially an implementation problem of repeated destruction of ObBackupInfo (or one of its members). ObServer also adds a layer of defense here.
FLOG_INFO("[OBSERVER_NOTICE] destroy observer begin");
FLOG_INFO("begin to destroy config manager");
config_mgr_.destroy();
FLOG_INFO("destroy config manager success");
if (is_arbitration_mode()) {
} else if (!has_destroy_ && has_stopped_) {
FLOG_INFO("begin destroy signal worker");
@ -483,10 +488,6 @@ void ObServer::destroy()
signal_handle_->destroy();
FLOG_INFO("signal handle destroyed");
FLOG_INFO("begin to destroy ObLogger");
OB_LOGGER.destroy();
FLOG_INFO("ObLogger destroyed");
FLOG_INFO("active session history task destroyed");
ObClockGenerator::destroy();
FLOG_INFO("clock generator destroyed");
@ -515,6 +516,31 @@ void ObServer::destroy()
ObBGThreadMonitor::get_instance().destroy();
FLOG_INFO("background thread monitor destroyed");
FLOG_INFO("begin to destroy table store stat mgr");
ObTableStoreStatMgr::get_instance().destroy();
FLOG_INFO("table store stat mgr destroyed");
FLOG_INFO("begin to destroy unix domain listener");
unix_domain_listener_.destroy();
FLOG_INFO("unix domain listener destroyed");
FLOG_INFO("begin to destroy table service");
table_service_.destroy();
FLOG_INFO("table service destroyed");
FLOG_INFO("begin to destroy batch rpc");
batch_rpc_.destroy();
FLOG_INFO("batch rpc destroyed");
FLOG_INFO("begin to destroy schema service");
schema_service_.destroy();
FLOG_INFO("schema service destroyed");
FLOG_INFO("begin to destroy table auto increment service");
ObTabletAutoincrementService::get_instance().destroy();
FLOG_INFO("table auto increment service destroyed");
FLOG_INFO("begin to destroy server gtimer");
TG_DESTROY(lib::TGDefIDs::ServerGTimer);
FLOG_INFO("server gtimer destroyed");
@ -997,6 +1023,10 @@ int ObServer::stop()
int fail_ret = OB_SUCCESS;
FLOG_INFO("[OBSERVER_NOTICE] stop observer begin");
FLOG_INFO("begin to stop config manager");
config_mgr_.stop();
FLOG_INFO("stop config manager success");
if (is_arbitration_mode()) {
} else {
#ifdef ENABLE_IMC
@ -1049,6 +1079,27 @@ int ObServer::stop()
ObBackupInfoMgr::get_instance().stop();
FLOG_INFO("backup info stopped");
FLOG_INFO("begin to stop table store stat mgr");
ObTableStoreStatMgr::get_instance().stop();
FLOG_INFO("table store stat mgr stopped");
FLOG_INFO("begin to stop unix domain listener");
unix_domain_listener_.stop();
FLOG_INFO("unix domain listener stopped");
FLOG_INFO("begin to stop table service");
table_service_.stop();
FLOG_INFO("table service stopped");
FLOG_INFO("begin to stop batch rpc");
batch_rpc_.stop();
FLOG_INFO("batch rpc stopped");
FLOG_INFO("begin to stop schema service");
schema_service_.stop();
FLOG_INFO("schema service stopped");
FLOG_INFO("begin to stop ob_service");
ob_service_.stop();
FLOG_INFO("ob_service stopped");
@ -1267,6 +1318,10 @@ int ObServer::wait()
FLOG_INFO("observer stopped");
}
FLOG_INFO("begin to wait config manager");
config_mgr_.wait();
FLOG_INFO("wait config manager success");
if (is_arbitration_mode()) {
} else {
@ -1286,6 +1341,27 @@ int ObServer::wait()
ObTimerMonitor::get_instance().wait();
FLOG_INFO("wait timer monitor success");
FLOG_INFO("begin to wait table store stat mgr");
ObTableStoreStatMgr::get_instance().wait();
FLOG_INFO("wait table store stat mgr success");
FLOG_INFO("begin to wait unix domain listener");
unix_domain_listener_.wait();
FLOG_INFO("wait unix domain listener success");
FLOG_INFO("begin to wait table service");
table_service_.wait();
FLOG_INFO("wait table service success");
FLOG_INFO("begin to wait batch rpc");
batch_rpc_.wait();
FLOG_INFO("wait batch rpc success");
FLOG_INFO("begin to wait schema service");
schema_service_.wait();
FLOG_INFO("wait schema service success");
FLOG_INFO("begin to wait bg thread monitor");
ObBGThreadMonitor::get_instance().wait();
FLOG_INFO("wait bg thread monitor success");