From 36608dd357865ef53367fc6a444b1286fbe9d2fd Mon Sep 17 00:00:00 2001 From: Handora Date: Wed, 17 May 2023 14:47:16 +0000 Subject: [PATCH] [BUG] free the memory when batch remove --- src/storage/meta_mem/ob_tenant_meta_mem_mgr.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/storage/meta_mem/ob_tenant_meta_mem_mgr.cpp b/src/storage/meta_mem/ob_tenant_meta_mem_mgr.cpp index 0a9ab4724..0a087373d 100644 --- a/src/storage/meta_mem/ob_tenant_meta_mem_mgr.cpp +++ b/src/storage/meta_mem/ob_tenant_meta_mem_mgr.cpp @@ -452,6 +452,20 @@ void ObTenantMetaMemMgr::batch_gc_memtable_() } if (REACH_TENANT_TIME_INTERVAL(1_hour)) { + for (auto iter = gc_memtable_map_.begin(); + iter != gc_memtable_map_.end(); ++iter) { + memtable::ObMemtableSet *memtable_set = iter->second; + if (OB_NOT_NULL(memtable_set)) { + if (0 != memtable_set->size()) { + LOG_ERROR("leaked memtable", KPC(memtable_set)); + } + if (OB_FAIL(memtable_set->destroy())) { + LOG_ERROR("memtable set destroy failed", K(ret)); + } + ob_free(memtable_set); + } + } + if (OB_TMP_FAIL(gc_memtable_map_.clear())) { LOG_ERROR("clear gc memtable map failed", K(tmp_ret)); }