fix LSMap do not release QSync memory when destroied
This commit is contained in:
@ -82,6 +82,11 @@ void ObLSLocationMap::destroy()
|
||||
ls_buckets_ = NULL;
|
||||
}
|
||||
if (OB_NOT_NULL(buckets_lock_)) {
|
||||
for (int64_t i = 0; i < BUCKETS_CNT; ++i) {
|
||||
if (OB_NOT_NULL(buckets_lock_ + i)) {
|
||||
(buckets_lock_ + i)->~ObQSyncLock();
|
||||
}
|
||||
}
|
||||
ob_free(buckets_lock_);
|
||||
buckets_lock_ = nullptr;
|
||||
}
|
||||
|
||||
@ -122,6 +122,11 @@ void ObLSMap::reset()
|
||||
ls_buckets_ = NULL;
|
||||
}
|
||||
if (OB_NOT_NULL(buckets_lock_)) {
|
||||
for (int64_t i = 0; i < BUCKETS_CNT; ++i) {
|
||||
if (OB_NOT_NULL(buckets_lock_ + i)) {
|
||||
(buckets_lock_ + i)->~ObQSyncLock();
|
||||
}
|
||||
}
|
||||
ob_free(buckets_lock_);
|
||||
buckets_lock_ = nullptr;
|
||||
}
|
||||
@ -176,6 +181,11 @@ int ObLSMap::init(const int64_t tenant_id, ObIAllocator *ls_allocator)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObLSMap::destroy()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
int ObLSMap::add_ls(
|
||||
ObLS &ls)
|
||||
{
|
||||
|
||||
@ -41,9 +41,10 @@ public:
|
||||
{
|
||||
reset();
|
||||
}
|
||||
~ObLSMap() { reset(); }
|
||||
~ObLSMap() { destroy(); }
|
||||
void reset();
|
||||
int init(const int64_t tenant_id, common::ObIAllocator *ls_allocator);
|
||||
void destroy();
|
||||
// allow_multi_true is used during replay
|
||||
int add_ls(ObLS &ls);
|
||||
int del_ls(const share::ObLSID &ls_id);
|
||||
|
||||
Reference in New Issue
Block a user