[4.x] Fix memory leak problem for disaster recovery
This commit is contained in:
parent
1b85aee04b
commit
616a19901b
@ -114,11 +114,11 @@ int ObDRTaskQueue::init(
|
||||
|| (ObDRTaskPriority::LOW_PRI != priority && ObDRTaskPriority::HIGH_PRI != priority)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(bucket_num), KP(rpc_proxy), KP(server_mgr), K(priority));
|
||||
} else if (OB_FAIL(task_map_.create(bucket_num, "DRTaskQ"))) {
|
||||
} else if (OB_FAIL(task_map_.create(bucket_num, "DRTaskMap"))) {
|
||||
LOG_WARN("fail to create task map", KR(ret), K(bucket_num));
|
||||
} else if (OB_FAIL(task_alloc_.init(
|
||||
ObMallocAllocator::get_instance(), OB_MALLOC_MIDDLE_BLOCK_SIZE,
|
||||
ObMemAttr(common::OB_SERVER_TENANT_ID, "DRTaskQ")))) {
|
||||
ObMemAttr(common::OB_SERVER_TENANT_ID, "DRTaskAlloc")))) {
|
||||
LOG_WARN("fail to init task allocator", KR(ret));
|
||||
} else {
|
||||
config_ = &config;
|
||||
@ -680,6 +680,9 @@ void ObDRTaskMgr::stop()
|
||||
{
|
||||
loaded_ = false;
|
||||
stopped_ = true;
|
||||
for (int64_t i = 0; i < static_cast<int64_t>(ObDRTaskPriority::MAX_PRI); ++i) {
|
||||
queues_[i].reuse();
|
||||
}
|
||||
ObRsReentrantThread::stop();
|
||||
disaster_recovery_task_table_updater_.stop();
|
||||
ObThreadCondGuard guard(cond_);
|
||||
@ -690,7 +693,7 @@ void ObDRTaskMgr::stop()
|
||||
void ObDRTaskMgr::wait()
|
||||
{
|
||||
ObRsReentrantThread::wait();
|
||||
disaster_recovery_task_table_updater_.wait();
|
||||
disaster_recovery_task_table_updater_.wait();
|
||||
}
|
||||
|
||||
int ObDRTaskMgr::check_inner_stat_() const
|
||||
@ -1063,7 +1066,7 @@ int ObDRTaskMgr::load_task_to_schedule_list_()
|
||||
} else {
|
||||
// clear schedule_list and wait_list in two queues
|
||||
for (int64_t i = 0; i < static_cast<int64_t>(ObDRTaskPriority::MAX_PRI); ++i) {
|
||||
queues_[i].reset();
|
||||
queues_[i].reuse();
|
||||
}
|
||||
clear_reach_concurrency_limit();
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < tenant_id_array.count(); ++i) {
|
||||
|
@ -455,6 +455,7 @@ class ObString;
|
||||
ACT(BEFORE_ARCHIVE_ADD_LS_TASK,)\
|
||||
ACT(AFTER_UPDATE_INDEX_STATUS,)\
|
||||
ACT(BEFORE_MIGRATION_DISABLE_VOTE,)\
|
||||
ACT(MEMBERLIST_CHANGE_MEMBER,)\
|
||||
ACT(MAX_DEBUG_SYNC_POINT,)
|
||||
|
||||
DECLARE_ENUM(ObDebugSyncPoint, debug_sync_point, OB_DEBUG_SYNC_POINT_DEF);
|
||||
|
@ -1116,6 +1116,7 @@ int ObStartCompleteMigrationTask::change_member_list_()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObLS *ls = nullptr;
|
||||
DEBUG_SYNC(MEMBERLIST_CHANGE_MEMBER);
|
||||
const int64_t start_ts = ObTimeUtility::current_time();
|
||||
|
||||
if (!is_inited_) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user