[BUG.FIX] fix sstable pool error when the observer is killed.

This commit is contained in:
Tyshawn
2023-01-11 11:38:18 +00:00
committed by ob-robot
parent 5535159a2d
commit f4f9ee1eb9
3 changed files with 7 additions and 4 deletions

View File

@ -160,6 +160,7 @@ namespace detector
MTL_LIST( \ MTL_LIST( \
common::ObTenantIOManager*, \ common::ObTenantIOManager*, \
storage::ObStorageLogger*, \ storage::ObStorageLogger*, \
blocksstable::ObSharedMacroBlockMgr*, \
storage::ObTenantMetaMemMgr*, \ storage::ObTenantMetaMemMgr*, \
transaction::ObTransService*, \ transaction::ObTransService*, \
logservice::coordinator::ObLeaderCoordinator*, \ logservice::coordinator::ObLeaderCoordinator*, \
@ -202,7 +203,6 @@ namespace detector
sql::ObDataAccessService*, \ sql::ObDataAccessService*, \
sql::ObDASIDService*, \ sql::ObDASIDService*, \
share::schema::ObTenantSchemaService*, \ share::schema::ObTenantSchemaService*, \
blocksstable::ObSharedMacroBlockMgr*, \
storage::ObTenantFreezer*, \ storage::ObTenantFreezer*, \
storage::checkpoint::ObCheckPointService *, \ storage::checkpoint::ObCheckPointService *, \
storage::checkpoint::ObTabletGCService *, \ storage::checkpoint::ObTabletGCService *, \

View File

@ -205,11 +205,14 @@ void ObTenantMetaMemMgr::wait()
void ObTenantMetaMemMgr::destroy() void ObTenantMetaMemMgr::destroy()
{ {
int ret = OB_SUCCESS;
bool is_all_clean = false;
tablet_map_.destroy(); tablet_map_.destroy();
bucket_lock_.destroy();
allocator_.reset();
last_min_minor_sstable_set_.destroy(); last_min_minor_sstable_set_.destroy();
pinned_tablet_set_.destroy(); pinned_tablet_set_.destroy();
while (!is_all_clean && OB_SUCC(gc_tables_in_queue(is_all_clean)));
bucket_lock_.destroy();
allocator_.reset();
timer_.destroy(); timer_.destroy();
for (int64_t i = 0; i <= ObITable::TableType::REMOTE_LOGICAL_MINOR_SSTABLE; i++) { for (int64_t i = 0; i <= ObITable::TableType::REMOTE_LOGICAL_MINOR_SSTABLE; i++) {
pool_arr_[i] = nullptr; pool_arr_[i] = nullptr;

View File

@ -140,7 +140,7 @@ protected:
mt_mgr_ = NULL; mt_mgr_ = NULL;
ctx_mt_mgr_ = NULL; ctx_mt_mgr_ = NULL;
ASSERT_EQ(1, ref_count_); ASSERT_EQ(0, ref_count_);
tenant_base_.destroy(); tenant_base_.destroy();
ObTenantEnv::set_tenant(nullptr); ObTenantEnv::set_tenant(nullptr);