diff --git a/src/share/allocator/ob_reserve_arena.h b/src/share/allocator/ob_reserve_arena.h index 4594063072..ede0832fb9 100644 --- a/src/share/allocator/ob_reserve_arena.h +++ b/src/share/allocator/ob_reserve_arena.h @@ -23,11 +23,10 @@ template class ObReserveArenaAllocator : public ObIAllocator { public: - ObReserveArenaAllocator(const lib::ObLabel &label, - const int64_t page_size = OB_MALLOC_NORMAL_BLOCK_SIZE, - int64_t tenant_id = OB_SERVER_TENANT_ID) + ObReserveArenaAllocator(const lib::ObMemAttr &attr, + const int64_t page_size = OB_MALLOC_NORMAL_BLOCK_SIZE) : pos_(0), - allocator_(label, page_size, tenant_id) + allocator_(attr, page_size) { OB_ASSERT(MAX_RESERVE_SIZE >= 0); } diff --git a/src/sql/plan_cache/ob_prepare_stmt_struct.h b/src/sql/plan_cache/ob_prepare_stmt_struct.h index c1c01f5534..9d43024558 100644 --- a/src/sql/plan_cache/ob_prepare_stmt_struct.h +++ b/src/sql/plan_cache/ob_prepare_stmt_struct.h @@ -314,7 +314,7 @@ typedef common::ObSEArray ParamCastArray; class ObPsSessionInfo { public: - ObPsSessionInfo(const int64_t num_of_params) : + ObPsSessionInfo(const int64_t tenant_id, const int64_t num_of_params) : stmt_id_(common::OB_INVALID_STMT_ID), stmt_type_(stmt::T_NONE), num_of_params_(num_of_params), @@ -323,6 +323,8 @@ public: inner_stmt_id_(0), num_of_returning_into_(common::OB_INVALID_STMT_ID) // num_of_returning_into_ init as -1 { + param_types_.set_attr(ObMemAttr(tenant_id, "ParamTypes")); + param_type_infos_.set_attr(ObMemAttr(tenant_id, "ParamTypesInfo")); param_types_.reserve(num_of_params_); } //{ param_types_.set_label(common::ObModIds::OB_PS_SESSION_INFO_ARRAY); } diff --git a/src/sql/session/ob_basic_session_info.cpp b/src/sql/session/ob_basic_session_info.cpp index 6a32120689..44316bccb5 100644 --- a/src/sql/session/ob_basic_session_info.cpp +++ b/src/sql/session/ob_basic_session_info.cpp @@ -81,15 +81,15 @@ ObBasicSessionInfo::ObBasicSessionInfo(const uint64_t tenant_id) sess_ref_seq_(0), block_allocator_(SMALL_BLOCK_SIZE, common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32, //这里减32是为了适配ObMalloc对齐规则, 防止超8k的内存分配 - ObMalloc(ObModIds::OB_SQL_SESSION_SBLOCK)), + ObMalloc(lib::ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION_SBLOCK))), ps_session_info_allocator_(sizeof(ObPsSessionInfo), common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32, //这里减32是为了适配ObMalloc对齐规则, 防止超8k的内存分配 - ObMalloc("PsSessionInfo")), + ObMalloc(lib::ObMemAttr(orig_tenant_id_, "PsSessionInfo"))), cursor_info_allocator_(sizeof(pl::ObDbmsCursorInfo), common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32, - ObMalloc("SessCursorInfo")), + ObMalloc(lib::ObMemAttr(orig_tenant_id_, "SessCursorInfo"))), package_info_allocator_(sizeof(pl::ObPLPackageState), common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32, - ObMalloc("SessPackageInfo")), - name_pool_(ObModIds::OB_SQL_SESSION, OB_MALLOC_NORMAL_BLOCK_SIZE), + ObMalloc(lib::ObMemAttr(orig_tenant_id_, "SessPackageInfo"))), + name_pool_(lib::ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION), OB_MALLOC_NORMAL_BLOCK_SIZE), trans_flags_(), sql_scope_flags_(), need_reset_package_(false), @@ -119,8 +119,8 @@ ObBasicSessionInfo::ObBasicSessionInfo(const uint64_t tenant_id) client_mode_(OB_MIN_CLIENT_MODE), changed_sys_vars_(), changed_user_vars_(), - changed_var_pool_(ObModIds::OB_SQL_SESSION, OB_MALLOC_NORMAL_BLOCK_SIZE), - extra_info_allocator_(ObModIds::OB_SQL_SESSION, OB_MALLOC_NORMAL_BLOCK_SIZE), + changed_var_pool_(ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION), OB_MALLOC_NORMAL_BLOCK_SIZE), + extra_info_allocator_(ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION), OB_MALLOC_NORMAL_BLOCK_SIZE), is_database_changed_(false), feedback_manager_(), trans_spec_status_(TRANS_SPEC_NOT_SET), diff --git a/src/sql/session/ob_sql_session_info.cpp b/src/sql/session/ob_sql_session_info.cpp index c4e4d2bbe4..968fe5e450 100644 --- a/src/sql/session/ob_sql_session_info.cpp +++ b/src/sql/session/ob_sql_session_info.cpp @@ -1154,7 +1154,7 @@ int ObSQLSessionInfo::prepare_ps_stmt(const ObPsStmtId inner_stmt_id, ret = OB_ERR_UNEXPECTED; LOG_WARN("stmt info is null", K(ret), K(stmt_info)); } else { - session_info = new (buf) ObPsSessionInfo(stmt_info->get_num_of_param()); + session_info = new (buf) ObPsSessionInfo(orig_tenant_id_, stmt_info->get_num_of_param()); session_info->set_stmt_id(client_stmt_id); session_info->set_stmt_type(stmt_info->get_stmt_type()); session_info->set_ps_stmt_checksum(stmt_info->get_ps_stmt_checksum()); diff --git a/src/sql/session/ob_sql_session_info.h b/src/sql/session/ob_sql_session_info.h index 5cc5596027..27d4754102 100644 --- a/src/sql/session/ob_sql_session_info.h +++ b/src/sql/session/ob_sql_session_info.h @@ -445,8 +445,8 @@ struct ObInnerContextMap { } else { new (context_map_) ObInnerContextHashMap (); if (OB_FAIL(context_map_->create(hash::cal_next_prime(32), - ObModIds::OB_HASH_BUCKET, - ObModIds::OB_HASH_NODE))) { + ObModIds::OB_HASH_BUCKET, + ObModIds::OB_HASH_NODE))) { SQL_ENG_LOG(WARN, "failed to init hash map", K(ret)); } } @@ -1247,7 +1247,8 @@ private: if (OB_UNLIKELY(!ps_session_info_map_.created())) { ret = ps_session_info_map_.create(common::hash::cal_next_prime(PS_BUCKET_NUM), common::ObModIds::OB_HASH_BUCKET_PS_SESSION_INFO, - common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO); + common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO, + orig_tenant_id_); } return ret; } @@ -1262,7 +1263,8 @@ private: if (OB_UNLIKELY(!ps_name_id_map_.created())) { ret = ps_name_id_map_.create(common::hash::cal_next_prime(PS_BUCKET_NUM), common::ObModIds::OB_HASH_BUCKET_PS_SESSION_INFO, - common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO); + common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO, + orig_tenant_id_); } return ret; } diff --git a/src/storage/access/ob_rows_info.cpp b/src/storage/access/ob_rows_info.cpp index 0b495197ea..881632c62d 100644 --- a/src/storage/access/ob_rows_info.cpp +++ b/src/storage/access/ob_rows_info.cpp @@ -71,8 +71,8 @@ int ObRowsInfo::ExistHelper::init(const ObRelativeTable &table, ObRowsInfo::ObRowsInfo() - : scan_mem_allocator_(common::ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, MTL_ID()), - key_allocator_(common::ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, MTL_ID()), + : scan_mem_allocator_(ObMemAttr(MTL_ID(), common::ObModIds::OB_STORE_ROW_EXISTER), OB_MALLOC_NORMAL_BLOCK_SIZE), + key_allocator_(ObMemAttr(MTL_ID(), common::ObModIds::OB_STORE_ROW_EXISTER), OB_MALLOC_NORMAL_BLOCK_SIZE), rowkeys_(), rows_(nullptr), exist_helper_(), diff --git a/unittest/share/allocator/test_reserve_arena_allocator.cpp b/unittest/share/allocator/test_reserve_arena_allocator.cpp index c3eb27251c..f440e131b1 100644 --- a/unittest/share/allocator/test_reserve_arena_allocator.cpp +++ b/unittest/share/allocator/test_reserve_arena_allocator.cpp @@ -36,7 +36,7 @@ public: ObReserveArenaAllocator<1024> test_allocator_; }; TestReserveArenaAllocator::TestReserveArenaAllocator(): - test_allocator_(ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, 500) + test_allocator_(ObMemAttr(500, ObModIds::OB_STORE_ROW_EXISTER), OB_MALLOC_NORMAL_BLOCK_SIZE) { } @@ -151,4 +151,4 @@ int main(int argc, char **argv) srand(time(NULL)); testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); -} \ No newline at end of file +}