[kill -15][BEFORE_DESTROY]add stop and wait thread
This commit is contained in:
		
							
								
								
									
										16
									
								
								deps/oblib/src/lib/alloc/memory_dump.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								deps/oblib/src/lib/alloc/memory_dump.cpp
									
									
									
									
										vendored
									
									
								
							| @ -165,11 +165,25 @@ int ObMemoryDump::init() | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| void ObMemoryDump::destroy() | ||||
| void ObMemoryDump::stop() | ||||
| { | ||||
|   if (is_inited_) { | ||||
|     TG_STOP(TGDefIDs::MEMORY_DUMP); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void ObMemoryDump::wait() | ||||
| { | ||||
|   if (is_inited_) { | ||||
|     TG_WAIT(TGDefIDs::MEMORY_DUMP); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void ObMemoryDump::destroy() | ||||
| { | ||||
|   if (is_inited_) { | ||||
|     stop(); | ||||
|     wait(); | ||||
|     queue_.destroy(); | ||||
|     is_inited_ = false; | ||||
|   } | ||||
|  | ||||
							
								
								
									
										2
									
								
								deps/oblib/src/lib/alloc/memory_dump.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								deps/oblib/src/lib/alloc/memory_dump.h
									
									
									
									
										vendored
									
									
								
							| @ -163,6 +163,8 @@ public: | ||||
|   ~ObMemoryDump(); | ||||
|   static ObMemoryDump &get_instance(); | ||||
|   int init(); | ||||
|   void stop(); | ||||
|   void wait(); | ||||
|   void destroy(); | ||||
|   bool is_inited() const { return is_inited_; } | ||||
|   int push(void *task); | ||||
|  | ||||
							
								
								
									
										2
									
								
								deps/oblib/src/lib/thread/ob_work_queue.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								deps/oblib/src/lib/thread/ob_work_queue.cpp
									
									
									
									
										vendored
									
									
								
							| @ -42,7 +42,7 @@ int ObWorkQueue::init(const int64_t thread_count, const int64_t queue_size, | ||||
|   if (inited_) { | ||||
|     ret = OB_INIT_TWICE; | ||||
|     LOG_WARN("rs task queue already inited", K(ret)); | ||||
|   } else if (OB_FAIL(timer_.init())) { | ||||
|   } else if (OB_FAIL(timer_.init(thread_name))) { | ||||
|     LOG_WARN("failed to init timer", K(ret)); | ||||
|   } else if (OB_FAIL(task_queue_.init(thread_count, queue_size, thread_name))) { | ||||
|     LOG_WARN("failed to init work queue", K(ret), K(thread_count), K(queue_size)); | ||||
|  | ||||
| @ -661,6 +661,14 @@ void ObServer::destroy() | ||||
|     ObMdsEventBuffer::destroy(); | ||||
|     FLOG_INFO("ObMdsEventBuffer destroyed"); | ||||
|  | ||||
|     FLOG_INFO("begin to wait destroy multi tenant"); | ||||
|     multi_tenant_.destroy(); | ||||
|     FLOG_INFO("wait destroy multi tenant success"); | ||||
|  | ||||
|     FLOG_INFO("begin to destroy safe destroy instance"); | ||||
|     SAFE_DESTROY_INSTANCE.destroy(); | ||||
|     FLOG_INFO("wait destroy safe destroy instance success"); | ||||
|  | ||||
|     FLOG_INFO("begin to destroy query retry ctrl"); | ||||
|     ObQueryRetryCtrl::destroy(); | ||||
|     FLOG_INFO("query retry ctrl destroy"); | ||||
| @ -1228,6 +1236,10 @@ int ObServer::stop() | ||||
|     bl_service_.stop(); | ||||
|     FLOG_INFO("blacklist service stopped"); | ||||
|  | ||||
|     FLOG_INFO("begin to stop memory dump"); | ||||
|     ObMemoryDump::get_instance().stop(); | ||||
|     FLOG_INFO("memory dump stopped"); | ||||
|  | ||||
|     FLOG_INFO("begin to stop tenant timezone manager"); | ||||
|     tenant_timezone_mgr_.stop(); | ||||
|     FLOG_INFO("tenant timezone manager stopped"); | ||||
| @ -1474,18 +1486,11 @@ int ObServer::wait() | ||||
|     multi_tenant_.wait(); | ||||
|     FLOG_INFO("wait multi tenant success"); | ||||
|  | ||||
|     FLOG_INFO("begin to wait destroy multi tenant"); | ||||
|     multi_tenant_.destroy(); | ||||
|     FLOG_INFO("wait destroy multi tenant success"); | ||||
|  | ||||
|     // safe to destroy | ||||
|     FLOG_INFO("begin to wait for safe destroy instance"); | ||||
|     SAFE_DESTROY_INSTANCE.wait(); | ||||
|     FLOG_INFO("wait for safe destroy instance success"); | ||||
|  | ||||
|     FLOG_INFO("begin to destroy safe destroy instance"); | ||||
|     SAFE_DESTROY_INSTANCE.destroy(); | ||||
|     FLOG_INFO("wait destroy safe destroy instance success"); | ||||
|  | ||||
|     FLOG_INFO("begin to wait ratelimit manager"); | ||||
|     rl_mgr_.wait(); | ||||
| @ -1560,6 +1565,10 @@ int ObServer::wait() | ||||
|     bl_service_.wait(); | ||||
|     FLOG_INFO("wait blacklist service success"); | ||||
|  | ||||
|     FLOG_INFO("begin to wait memory dump"); | ||||
|     ObMemoryDump::get_instance().wait(); | ||||
|     FLOG_INFO("wait memory dump success"); | ||||
|  | ||||
|     FLOG_INFO("begin to wait tenant timezone manager"); | ||||
|     tenant_timezone_mgr_.wait(); | ||||
|     FLOG_INFO("wait tenant timezone manager success"); | ||||
|  | ||||
| @ -111,6 +111,7 @@ int ObLocalityManager::stop() | ||||
|     STORAGE_LOG(ERROR, "locality manager not inited, cannot stop.", K(ret)); | ||||
|   } else { | ||||
|     TG_STOP(lib::TGDefIDs::LocalityReload); | ||||
|     refresh_locality_task_queue_.stop(); | ||||
|   } | ||||
|   return ret; | ||||
| } | ||||
| @ -119,6 +120,7 @@ int ObLocalityManager::wait() | ||||
| { | ||||
|   int ret = OB_SUCCESS; | ||||
|   TG_WAIT(lib::TGDefIDs::LocalityReload); | ||||
|   refresh_locality_task_queue_.wait(); | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 zhjc1124
					zhjc1124