[CP] fix memleak of ObBackupJobMgr ptr
This commit is contained in:
@ -970,7 +970,7 @@ int ObBackupDataScheduler::process()
|
||||
}
|
||||
if (OB_NOT_NULL(job_mgr)) {
|
||||
job_mgr->~ObIBackupJobMgr();
|
||||
ObBackupJobMgrAlloctor::free(job_mgr);
|
||||
ObBackupJobMgrAlloctor::free(tenant_id_, job_mgr);
|
||||
job_mgr = nullptr;
|
||||
}
|
||||
return ret;
|
||||
@ -1845,16 +1845,16 @@ int ObBackupJobMgrAlloctor::alloc(const uint64_t tenant_id, ObIBackupJobMgr *&jo
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObBackupJobMgrAlloctor::free(ObIBackupJobMgr *job_mgr)
|
||||
void ObBackupJobMgrAlloctor::free(const uint64_t tenant_id, ObIBackupJobMgr *job_mgr)
|
||||
{
|
||||
uint64_t tenant_id = OB_INVALID_TENANT_ID;
|
||||
if (OB_ISNULL(job_mgr)) {
|
||||
} else if (OB_FALSE_IT(tenant_id = job_mgr->get_tenant_id())) {
|
||||
} else if (is_sys_tenant(tenant_id)) {
|
||||
OB_DELETE(ObIBackupJobMgr, "SysJobMgr", job_mgr);
|
||||
} else if (is_meta_tenant(tenant_id)) {
|
||||
OB_DELETE(ObIBackupJobMgr, "UserJobMgr", job_mgr);
|
||||
}
|
||||
} else {
|
||||
LOG_ERROR_RET(OB_ERR_UNEXPECTED, "not free backup job mgr, mem leak", K(tenant_id));
|
||||
}
|
||||
job_mgr = nullptr;
|
||||
}
|
||||
|
||||
|
||||
@ -190,7 +190,7 @@ class ObBackupJobMgrAlloctor
|
||||
{
|
||||
public:
|
||||
static int alloc(const uint64_t tenant_id, ObIBackupJobMgr *&job_mgr);
|
||||
static void free(ObIBackupJobMgr *job_mgr);
|
||||
static void free(const uint64_t tenant_id, ObIBackupJobMgr *job_mgr);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user