From a06d22d62884c99e559de494a3b9ea6784e9b529 Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 13 Mar 2023 11:16:48 +0000 Subject: [PATCH] use tablet_allocator to get_tablets in virtual table --- src/observer/virtual_table/ob_all_virtual_table_mgr.cpp | 7 +++++-- src/observer/virtual_table/ob_all_virtual_table_mgr.h | 1 + .../ob_all_virtual_tablet_compaction_info.cpp | 7 +++++-- .../virtual_table/ob_all_virtual_tablet_compaction_info.h | 1 + .../ob_all_virtual_tablet_sstable_macro_info.cpp | 8 ++++++-- .../ob_all_virtual_tablet_sstable_macro_info.h | 1 + 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/observer/virtual_table/ob_all_virtual_table_mgr.cpp b/src/observer/virtual_table/ob_all_virtual_table_mgr.cpp index fa78a1ec79..c2e41997ad 100644 --- a/src/observer/virtual_table/ob_all_virtual_table_mgr.cpp +++ b/src/observer/virtual_table/ob_all_virtual_table_mgr.cpp @@ -26,6 +26,7 @@ ObAllVirtualTableMgr::ObAllVirtualTableMgr() : ObVirtualTableScannerIterator(), addr_(), tablet_iter_(nullptr), + tablet_allocator_("VTTable"), tablet_handle_(), ls_id_(share::ObLSID::INVALID_LS_ID), all_tables_(), @@ -54,6 +55,7 @@ void ObAllVirtualTableMgr::reset() } tablet_handle_.reset(); + tablet_allocator_.reset(); ObVirtualTableScannerIterator::reset(); } @@ -108,10 +110,11 @@ int ObAllVirtualTableMgr::get_next_tablet() { int ret = OB_SUCCESS; + tablet_allocator_.reuse(); if (nullptr == tablet_iter_) { + tablet_allocator_.set_tenant_id(MTL_ID()); ObTenantMetaMemMgr *t3m = MTL(ObTenantMetaMemMgr*); - tablet_iter_ = new (iter_buf_) ObTenantTabletIterator(*t3m, *allocator_); - if (OB_ISNULL(tablet_iter_)) { + if (OB_ISNULL(tablet_iter_ = new (iter_buf_) ObTenantTabletIterator(*t3m, tablet_allocator_))) { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "fail to new tablet_iter_", K(ret)); } diff --git a/src/observer/virtual_table/ob_all_virtual_table_mgr.h b/src/observer/virtual_table/ob_all_virtual_table_mgr.h index 0700688b9f..3b9ba8f203 100644 --- a/src/observer/virtual_table/ob_all_virtual_table_mgr.h +++ b/src/observer/virtual_table/ob_all_virtual_table_mgr.h @@ -77,6 +77,7 @@ private: private: common::ObAddr addr_; storage::ObTenantTabletIterator *tablet_iter_; + common::ObArenaAllocator tablet_allocator_; ObTabletHandle tablet_handle_; int64_t ls_id_; char ip_buf_[common::OB_IP_STR_BUFF]; diff --git a/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.cpp b/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.cpp index 85b9cbedc4..82f75400d9 100644 --- a/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.cpp +++ b/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.cpp @@ -24,6 +24,7 @@ ObAllVirtualTabletCompactionInfo::ObAllVirtualTabletCompactionInfo() ObMultiTenantOperator(), addr_(), tablet_iter_(nullptr), + tablet_allocator_("VTTable"), tablet_handle_(), ls_id_(share::ObLSID::INVALID_LS_ID), iter_buf_(nullptr), @@ -51,6 +52,7 @@ void ObAllVirtualTabletCompactionInfo::reset() iter_buf_ = nullptr; } tablet_handle_.reset(); + tablet_allocator_.reset(); ObVirtualTableScannerIterator::reset(); } @@ -106,10 +108,11 @@ int ObAllVirtualTabletCompactionInfo::get_next_tablet() { int ret = OB_SUCCESS; + tablet_allocator_.reuse(); if (nullptr == tablet_iter_) { + tablet_allocator_.set_tenant_id(MTL_ID()); ObTenantMetaMemMgr *t3m = MTL(ObTenantMetaMemMgr*); - tablet_iter_ = new (iter_buf_) ObTenantTabletIterator(*t3m); - if (OB_ISNULL(tablet_iter_)) { + if (OB_ISNULL(tablet_iter_ = new (iter_buf_) ObTenantTabletIterator(*t3m, tablet_allocator_))) { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "fail to new tablet_iter_", K(ret)); } diff --git a/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.h b/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.h index c1291f6cb6..efb1e396ef 100644 --- a/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.h +++ b/src/observer/virtual_table/ob_all_virtual_tablet_compaction_info.h @@ -58,6 +58,7 @@ private: private: common::ObAddr addr_; storage::ObTenantTabletIterator *tablet_iter_; + common::ObArenaAllocator tablet_allocator_; ObTabletHandle tablet_handle_; int64_t ls_id_; char ip_buf_[common::OB_IP_STR_BUFF]; diff --git a/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.cpp b/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.cpp index 55bd56f9ee..16b324a707 100644 --- a/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.cpp +++ b/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.cpp @@ -67,6 +67,7 @@ ObAllVirtualTabletSSTableMacroInfo::ObAllVirtualTabletSSTableMacroInfo() : ObVirtualTableScannerIterator(), addr_(), tablet_iter_(nullptr), + tablet_allocator_("VTTable"), tablet_handle_(), ls_id_(share::ObLSID::INVALID_LS_ID), all_tables_(), @@ -111,6 +112,7 @@ void ObAllVirtualTabletSSTableMacroInfo::reset() memset(objs_, 0, sizeof(objs_)); iter_allocator_.reset(); rowkey_allocator_.reset(); + tablet_allocator_.reset(); ObVirtualTableScannerIterator::reset(); } @@ -233,6 +235,7 @@ int ObAllVirtualTabletSSTableMacroInfo::get_macro_info( MacroInfo &info) { int ret = OB_SUCCESS; + rowkey_allocator_.reuse(); const ObTableReadInfo &read_info = tablet_handle_.get_obj()->get_index_read_info(); if (OB_UNLIKELY(!macro_desc.is_valid())) { ret = OB_INVALID_ARGUMENT; @@ -499,10 +502,11 @@ int ObAllVirtualTabletSSTableMacroInfo::process_curr_tenant(common::ObNewRow *&r int ObAllVirtualTabletSSTableMacroInfo::get_next_tablet() { int ret = OB_SUCCESS; + tablet_allocator_.reuse(); if (nullptr == tablet_iter_) { + tablet_allocator_.set_tenant_id(MTL_ID()); ObTenantMetaMemMgr *t3m = MTL(ObTenantMetaMemMgr*); - tablet_iter_ = new (iter_buf_) ObTenantTabletIterator(*t3m, *allocator_); - if (OB_ISNULL(tablet_iter_)) { + if (OB_ISNULL(tablet_iter_ = new (iter_buf_) ObTenantTabletIterator(*t3m, tablet_allocator_))) { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "fail to new tablet_iter_", K(ret)); } diff --git a/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.h b/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.h index 1b7cddee66..c466012c4f 100644 --- a/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.h +++ b/src/observer/virtual_table/ob_all_virtual_tablet_sstable_macro_info.h @@ -122,6 +122,7 @@ private: private: common::ObAddr addr_; ObTenantTabletIterator *tablet_iter_; + common::ObArenaAllocator tablet_allocator_; ObTabletHandle tablet_handle_; int64_t ls_id_; char ip_buf_[common::OB_IP_STR_BUFF];