diff --git a/src/rootserver/ob_bootstrap.cpp b/src/rootserver/ob_bootstrap.cpp index ba388bc613..5e143d2c04 100644 --- a/src/rootserver/ob_bootstrap.cpp +++ b/src/rootserver/ob_bootstrap.cpp @@ -693,7 +693,7 @@ int ObBootstrap::create_all_core_table_partition() trans); if (OB_FAIL(trans.start(&sql_proxy, OB_SYS_TENANT_ID))) { LOG_WARN("fail to start trans", KR(ret)); - } else if (OB_FAIL(table_creator.init())) { + } else if (OB_FAIL(table_creator.init(false/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init tablet creator", KR(ret)); } else { // create all core table partition @@ -742,7 +742,7 @@ int ObBootstrap::create_all_partitions() trans); if (OB_FAIL(trans.start(&sql_proxy, OB_SYS_TENANT_ID))) { LOG_WARN("fail to start trans", KR(ret)); - } else if (OB_FAIL(table_creator.init())) { + } else if (OB_FAIL(table_creator.init(false/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init tablet creator", KR(ret)); } else { // create core table partition diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index 587282691b..5cafbeb7d6 100644 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -1898,7 +1898,7 @@ int ObDDLService::create_tables_in_trans(const bool if_not_exist, schema_guard, sql_proxy_); common::ObArray ls_id_array; - if (OB_FAIL(table_creator.init())) { + if (OB_FAIL(table_creator.init(true/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init table creator", KR(ret)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); @@ -4736,7 +4736,7 @@ int ObDDLService::create_index_tablet(const ObTableSchema &index_schema, schema_guard, sql_proxy_); common::ObArray ls_id_array; - if (OB_FAIL(table_creator.init())) { + if (OB_FAIL(table_creator.init(true/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init table creator", KR(ret)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); @@ -8505,7 +8505,7 @@ int ObDDLService::create_aux_lob_table_if_need(ObTableSchema &data_table_schema, int64_t last_schema_version = OB_INVALID_VERSION; if (OB_FAIL(get_last_schema_version(last_schema_version))) { LOG_WARN("fail to get last schema version", KR(ret)); - } else if (OB_FAIL(table_creator.init())) { + } else if (OB_FAIL(table_creator.init(true/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init table creator", KR(ret)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); @@ -10287,6 +10287,8 @@ int ObDDLService::alter_table_in_trans(obrpc::ObAlterTableArg &alter_table_arg, || obrpc::ObAlterTableArg::TRUNCATE_PARTITION == alter_table_arg.alter_part_type_ || obrpc::ObAlterTableArg::TRUNCATE_SUB_PARTITION == alter_table_arg.alter_part_type_) { SCN frozen_scn; + const bool need_check_tablet_cnt = obrpc::ObAlterTableArg::ADD_PARTITION == alter_table_arg.alter_part_type_ + || obrpc::ObAlterTableArg::ADD_SUB_PARTITION == alter_table_arg.alter_part_type_; if (OB_ISNULL(GCTX.root_service_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("root service is null", KR(ret)); @@ -10301,7 +10303,7 @@ int ObDDLService::alter_table_in_trans(obrpc::ObAlterTableArg &alter_table_arg, if (OB_ISNULL(tmp_table_schema)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("table schem is null", KR(ret), K(inc_table_schema_ptrs)); - } else if (OB_FAIL(table_creator.init())) { + } else if (OB_FAIL(table_creator.init(need_check_tablet_cnt))) { LOG_WARN("fail to init table creator", KR(ret)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); @@ -12994,7 +12996,7 @@ int ObDDLService::truncate_table_in_trans(const obrpc::ObTruncateTableArg &arg, sql_proxy_); common::ObArray ls_id_array; - if (OB_FAIL(table_creator.init())) { + if (OB_FAIL(table_creator.init(false/*need_check_tablet_cnt*/))) { LOG_WARN("fail to init table creator", KR(ret)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); @@ -13636,7 +13638,7 @@ int ObDDLService::create_user_hidden_table(const ObTableSchema &orig_table_schem sql_proxy_); common::ObArray ls_id_array; - if (OB_FAIL(table_creator.init())) { + if (OB_FAIL(table_creator.init(false/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init table creator", KR(ret)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); @@ -16143,7 +16145,7 @@ int ObDDLService::inner_drop_and_create_tablet_(const int64_t &schema_version, LOG_WARN("fail to get frozen status for create tablet", KR(ret), K(tenant_id)); } else { ObTableCreator table_creator(tenant_id, frozen_scn, *GCTX.lst_operator_, trans); - if (OB_FAIL(table_creator.init())) { + if (OB_FAIL(table_creator.init(false/*need_check_tablet_cnt*/))) { LOG_WARN("table_creator init failed", KR(ret), K(tenant_id)); } else if (1 == create_table_count && create_table_schema_ptrs.at(0)->is_global_index_table()) { if (OB_FAIL(table_creator.add_create_tablets_of_table_arg(*create_table_schema_ptrs.at(0), orig_ls_id_array))) { @@ -20971,7 +20973,7 @@ int ObDDLService::create_tenant_sys_tablets( ObArray index_tids; if (OB_FAIL(trans.start(sql_proxy_, tenant_id))) { LOG_WARN("fail to start trans", KR(ret), K(tenant_id)); - } else if (OB_FAIL(table_creator.init())) { + } else if (OB_FAIL(table_creator.init(false/*need_tablet_cnt_check*/))) { LOG_WARN("fail to init tablet creator", KR(ret), K(tenant_id)); } else if (OB_FAIL(new_table_tablet_allocator.init())) { LOG_WARN("fail to init new table tablet allocator", KR(ret)); diff --git a/src/rootserver/ob_table_creator.cpp b/src/rootserver/ob_table_creator.cpp index 1a5502a56f..e64f71617b 100644 --- a/src/rootserver/ob_table_creator.cpp +++ b/src/rootserver/ob_table_creator.cpp @@ -25,13 +25,13 @@ ObTableCreator::~ObTableCreator() { } -int ObTableCreator::init() +int ObTableCreator::init(const bool need_tablet_cnt_check) { int ret = OB_SUCCESS; if (OB_UNLIKELY(inited_)) { ret = OB_INIT_TWICE; LOG_WARN("ObTableCreator init twice", KR(ret)); - } else if (OB_FAIL(tablet_creator_.init())) { + } else if (OB_FAIL(tablet_creator_.init(need_tablet_cnt_check))) { LOG_WARN("fail to init tablet creator", KR(ret)); } else { inited_ = true; diff --git a/src/rootserver/ob_table_creator.h b/src/rootserver/ob_table_creator.h index 4b90b34b6a..44085152f5 100644 --- a/src/rootserver/ob_table_creator.h +++ b/src/rootserver/ob_table_creator.h @@ -24,10 +24,6 @@ namespace share { class SCN; } -namespace rpc -{ -class ObBatchCreateTabletArg; -} namespace rootserver { class ObServerManager; @@ -45,7 +41,7 @@ public: ls_id_array_(), inited_(false) {} virtual ~ObTableCreator(); - int init(); + int init(const bool need_tablet_cnt_check); int execute(); void reset(); diff --git a/src/rootserver/ob_tablet_creator.cpp b/src/rootserver/ob_tablet_creator.cpp index 74f47f7657..8ca90948ad 100644 --- a/src/rootserver/ob_tablet_creator.cpp +++ b/src/rootserver/ob_tablet_creator.cpp @@ -108,8 +108,11 @@ DEF_TO_STRING(ObTabletCreatorArg) ///////////////////////////////////////////////////////// -int ObBatchCreateTabletHelper::init(const share::ObLSID &ls_key, const int64_t tenant_id, - const SCN &major_frozen_scn) +int ObBatchCreateTabletHelper::init( + const share::ObLSID &ls_key, + const int64_t tenant_id, + const SCN &major_frozen_scn, + const bool need_check_tablet_cnt) { int ret = OB_SUCCESS; const int64_t bucket_count = hash::cal_next_prime(100); @@ -117,8 +120,7 @@ int ObBatchCreateTabletHelper::init(const share::ObLSID &ls_key, const int64_t t || OB_INVALID_TENANT_ID == tenant_id)) { ret = OB_INVALID_ARGUMENT; LOG_WARN("invalid argument", KR(ret), K(tenant_id), K(ls_key)); - } else if (OB_FAIL(arg_.init_create_tablet(ls_key, - major_frozen_scn))) { + } else if (OB_FAIL(arg_.init_create_tablet(ls_key, major_frozen_scn, need_check_tablet_cnt))) { LOG_WARN("failed to init create tablet", KR(ret), K(tenant_id), K(ls_key), K(major_frozen_scn)); } else if (OB_FAIL(table_schemas_map_.create(bucket_count, "CreateTablet", "CreateTablet"))) { LOG_WARN("failed to create hashmap", KR(ret)); @@ -218,9 +220,10 @@ void ObTabletCreator::reset() } } args_map_.clear(); + need_check_tablet_cnt_ = false; } -int ObTabletCreator::init() +int ObTabletCreator::init(const bool need_check_tablet_cnt) { int ret = OB_SUCCESS; if (OB_UNLIKELY(inited_)) { @@ -229,6 +232,7 @@ int ObTabletCreator::init() } else if (OB_FAIL(args_map_.create(MAP_BUCKET_NUM, "TabletCtr"))) { LOG_WARN("fail to create args map", KR(ret)); } else { + need_check_tablet_cnt_ = need_check_tablet_cnt; inited_ = true; } return ret; @@ -253,7 +257,7 @@ int ObTabletCreator::add_create_tablet_arg(const ObTabletCreatorArg &arg) ret = OB_ALLOCATE_MEMORY_FAILED; LOG_WARN("failed to allocate new arg", KR(ret), KP(batch_arg)); } else if (FALSE_IT(batch_arg = new (arg_buf)ObBatchCreateTabletHelper())) { - } else if (OB_FAIL(batch_arg->init(arg.ls_key_, tenant_id_, major_frozen_scn_))) { + } else if (OB_FAIL(batch_arg->init(arg.ls_key_, tenant_id_, major_frozen_scn_, need_check_tablet_cnt_))) { LOG_WARN("failed to init batch arg helper", KR(ret), K(arg)); } else if (OB_FAIL(args_map_.set_refactored(arg.ls_key_, batch_arg, 0/*not overwrite*/))) { LOG_WARN("fail to set refactored", KR(ret), K(arg)); @@ -272,7 +276,7 @@ int ObTabletCreator::add_create_tablet_arg(const ObTabletCreatorArg &arg) ret = OB_ALLOCATE_MEMORY_FAILED; LOG_WARN("failed to allocate new arg", KR(ret)); } else if (FALSE_IT(new_arg = new (arg_buf)ObBatchCreateTabletHelper())) { - } else if (OB_FAIL(new_arg->init(arg.ls_key_, tenant_id_, major_frozen_scn_))) { + } else if (OB_FAIL(new_arg->init(arg.ls_key_, tenant_id_, major_frozen_scn_, need_check_tablet_cnt_))) { LOG_WARN("failed to init batch arg helper", KR(ret), K(arg)); } else if (FALSE_IT(new_arg->next_ = batch_arg)) { } else if (OB_FAIL(args_map_.set_refactored(arg.ls_key_, new_arg, 1/*not overwrite*/))) { diff --git a/src/rootserver/ob_tablet_creator.h b/src/rootserver/ob_tablet_creator.h index d67762ba96..241f2ad232 100644 --- a/src/rootserver/ob_tablet_creator.h +++ b/src/rootserver/ob_tablet_creator.h @@ -72,7 +72,8 @@ public: ObBatchCreateTabletHelper() :arg_(), table_schemas_map_(), result_(common::OB_NOT_MASTER), next_(NULL) {} int init(const share::ObLSID &ls_key, const int64_t tenant_id, - const share::SCN &major_frozen_scn); + const share::SCN &major_frozen_scn, + const bool need_check_tablet_cnt); int try_add_table_schema(const share::schema::ObTableSchema *table_schema, int64_t &index); int add_arg_to_batch_arg(const ObTabletCreatorArg &arg); void reset() @@ -106,9 +107,10 @@ public: allocator_("TbtCret"), args_map_(), trans_(trans), + need_check_tablet_cnt_(false), inited_(false) {} virtual ~ObTabletCreator(); - int init(); + int init(const bool need_check_tablet_cnt); int execute(); bool need_retry(int ret); int add_create_tablet_arg(const ObTabletCreatorArg &arg); @@ -124,6 +126,7 @@ private: ObArenaAllocator allocator_; common::hash::ObHashMap args_map_; ObMySQLTransaction &trans_; + bool need_check_tablet_cnt_; bool inited_; }; } diff --git a/src/share/ob_rpc_struct.cpp b/src/share/ob_rpc_struct.cpp index 19dcf242e3..5edb5a01f7 100644 --- a/src/share/ob_rpc_struct.cpp +++ b/src/share/ob_rpc_struct.cpp @@ -6923,6 +6923,7 @@ void ObBatchCreateTabletArg::reset() major_frozen_scn_.reset(); tablets_.reset(); table_schemas_.reset(); + need_check_tablet_cnt_ = false; } int ObBatchCreateTabletArg::assign(const ObBatchCreateTabletArg &arg) @@ -6938,6 +6939,7 @@ int ObBatchCreateTabletArg::assign(const ObBatchCreateTabletArg &arg) } else { id_ = arg.id_; major_frozen_scn_ = arg.major_frozen_scn_; + need_check_tablet_cnt_ = arg.need_check_tablet_cnt_; } return ret; } @@ -6961,7 +6963,10 @@ int ObContextDDLArg::assign(const ObContextDDLArg &other) return ret; } -int ObBatchCreateTabletArg::init_create_tablet(const share::ObLSID &id, const SCN &major_frozen_scn) +int ObBatchCreateTabletArg::init_create_tablet( + const share::ObLSID &id, + const SCN &major_frozen_scn, + const bool need_check_tablet_cnt) { int ret = OB_SUCCESS; if (OB_UNLIKELY(!id.is_valid() || !major_frozen_scn.is_valid())) { @@ -6970,6 +6975,7 @@ int ObBatchCreateTabletArg::init_create_tablet(const share::ObLSID &id, const SC } else { id_ = id; major_frozen_scn_ = major_frozen_scn; + need_check_tablet_cnt_ = need_check_tablet_cnt; } return ret; } @@ -6987,12 +6993,12 @@ int64_t ObBatchCreateTabletArg::get_tablet_count() const DEF_TO_STRING(ObBatchCreateTabletArg) { int64_t pos = 0; - J_KV(K_(id), K_(major_frozen_scn), K_(tablets)); + J_KV(K_(id), K_(major_frozen_scn), K_(need_check_tablet_cnt), K_(tablets)); return pos; } OB_SERIALIZE_MEMBER(ObBatchCreateTabletArg, id_, major_frozen_scn_, - tablets_, table_schemas_); + tablets_, table_schemas_, need_check_tablet_cnt_); OB_SERIALIZE_MEMBER(ObCreateLSResult, ret_, addr_); bool ObCreateLSResult::is_valid() const diff --git a/src/share/ob_rpc_struct.h b/src/share/ob_rpc_struct.h index ed2d79b15d..1f8d576296 100644 --- a/src/share/ob_rpc_struct.h +++ b/src/share/ob_rpc_struct.h @@ -3062,7 +3062,8 @@ public: void reset(); int assign(const ObBatchCreateTabletArg &arg); int init_create_tablet(const share::ObLSID &id_, - const share::SCN &major_frozen_scn); + const share::SCN &major_frozen_scn, + const bool need_check_tablet_cnt); int64_t get_tablet_count() const; DECLARE_TO_STRING; @@ -3071,6 +3072,7 @@ public: share::SCN major_frozen_scn_; common::ObSArray table_schemas_; common::ObSArray tablets_; + bool need_check_tablet_cnt_; }; struct ObBatchRemoveTabletArg diff --git a/src/share/parameter/ob_parameter_seed.ipp b/src/share/parameter/ob_parameter_seed.ipp index 0711300daf..02d4e93f90 100644 --- a/src/share/parameter/ob_parameter_seed.ipp +++ b/src/share/parameter/ob_parameter_seed.ipp @@ -433,6 +433,9 @@ DEF_INT(_storage_meta_memory_limit_percentage, OB_TENANT_PARAMETER, "20", "[0, 5 "maximum memory for storage meta, as a percentage of total tenant memory. " "Range: [0, 50), percentage, 0 means no limit to storage meta memory", ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); +DEF_INT(_max_tablet_cnt_per_gb, OB_TENANT_PARAMETER, "20000", "[1000, 50000)", + "The maximum number of tablets supported per 1GB of memory by tenant unit. Range: [1000, 50000)", + ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); //// rootservice config DEF_TIME(lease_time, OB_CLUSTER_PARAMETER, "10s", "[1s, 5m]", "Lease for current heartbeat. If the root server does not received any heartbeat " diff --git a/src/storage/meta_mem/ob_tenant_meta_mem_mgr.h b/src/storage/meta_mem/ob_tenant_meta_mem_mgr.h index 9872f5d2d1..214df4881c 100644 --- a/src/storage/meta_mem/ob_tenant_meta_mem_mgr.h +++ b/src/storage/meta_mem/ob_tenant_meta_mem_mgr.h @@ -202,6 +202,7 @@ public: { return &allocator_ == allocator; } + OB_INLINE int64_t get_total_tablet_cnt() const { return tablet_map_.count(); } TO_STRING_KV(K_(tenant_id), K_(is_inited)); private: diff --git a/src/storage/tablelock/ob_lock_table.cpp b/src/storage/tablelock/ob_lock_table.cpp index f9b9348f49..6919925473 100644 --- a/src/storage/tablelock/ob_lock_table.cpp +++ b/src/storage/tablelock/ob_lock_table.cpp @@ -245,7 +245,7 @@ int ObLockTable::gen_create_tablet_arg_( false/*is_create_bind_hidden_tablets*/))) { LOG_WARN("create tablet info init failed", K(ret), K(tablet_ids), K(tablet_id)); // create ObBatchCreateTabletArg - } else if (OB_FAIL(arg.init_create_tablet(ls_id, SCN::base_scn()))) { + } else if (OB_FAIL(arg.init_create_tablet(ls_id, SCN::base_scn(), false/*need_check_tablet_cnt*/))) { LOG_WARN("ObBatchCreateTabletArg init create tablet failed", K(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(arg.table_schemas_.push_back(table_schema))) { LOG_WARN("add table schema failed", K(ret), K(table_schema)); diff --git a/src/storage/tablet/ob_tablet_create_delete_helper.cpp b/src/storage/tablet/ob_tablet_create_delete_helper.cpp index af669af735..3a3bb1d670 100644 --- a/src/storage/tablet/ob_tablet_create_delete_helper.cpp +++ b/src/storage/tablet/ob_tablet_create_delete_helper.cpp @@ -32,6 +32,7 @@ #include "storage/tx/ob_trans_define.h" #include "storage/tx_storage/ob_ls_service.h" #include "share/scn.h" +#include "observer/omt/ob_tenant_config_mgr.h" #define USING_LOG_PREFIX STORAGE @@ -115,7 +116,9 @@ int ObTabletCreateDeleteHelper::prepare_create_tablets( } } else { // NOT in clog replaying procedure - if (OB_FAIL(do_prepare_create_tablets(arg, trans_flags))) { + if (OB_FAIL(check_create_new_tablets(arg))) { + LOG_WARN("failed to check crate new tablets", K(ret), K(trans_flags), K(PRINT_CREATE_ARG(arg))); + } else if (OB_FAIL(do_prepare_create_tablets(arg, trans_flags))) { LOG_WARN("failed to do prepare create tablets", K(ret), K(trans_flags), K(PRINT_CREATE_ARG(arg))); } else { LOG_INFO("succeeded to prepare create tablets", K(ret), K(trans_flags), K(PRINT_CREATE_ARG(arg))); @@ -1509,6 +1512,60 @@ int ObTabletCreateDeleteHelper::create_sstable( return ret; } +int ObTabletCreateDeleteHelper::check_create_new_tablets(const obrpc::ObBatchCreateTabletArg &arg) +{ + int ret = OB_SUCCESS; + const uint64_t tenant_id = MTL_ID(); + ObUnitInfoGetter::ObTenantConfig unit; + ObTenantMetaMemMgr *t3m = MTL(ObTenantMetaMemMgr*); + int64_t tablet_cnt_per_gb = 20000; // default value + bool skip_check = !arg.need_check_tablet_cnt_; + + // skip hidden tablet creation or truncate tablet creation + for (int64_t i = 0; OB_SUCC(ret) && !skip_check && i < arg.table_schemas_.count(); ++i) { + if (arg.table_schemas_[i].is_user_hidden_table() + || OB_INVALID_VERSION != arg.table_schemas_[i].get_truncate_version()) { + skip_check = true; + } + } + + if (OB_FAIL(ret)) { + } else if (skip_check) { + } else { + { + omt::ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_id)); + if (OB_UNLIKELY(!tenant_config.is_valid())) { + ret = OB_ERR_UNEXPECTED; + LOG_ERROR("get invalid tenant config", K(ret)); + } else { + tablet_cnt_per_gb = tenant_config->_max_tablet_cnt_per_gb; + } + } + + if (FAILEDx(GCTX.omt_->get_tenant_unit(tenant_id, unit))) { + if (OB_TENANT_NOT_IN_SERVER != ret) { + LOG_WARN("failed to get tenant unit", K(ret), K(tenant_id)); + } else { + // during restart, tenant unit not ready, skip check + ret = OB_SUCCESS; + } + } else { + const double memory_limit = unit.config_.memory_size(); + const int64_t max_tablet_cnt = memory_limit / (1 << 30) * tablet_cnt_per_gb; + const int64_t cur_tablet_cnt = t3m->get_total_tablet_cnt(); + const int64_t inc_tablet_cnt = arg.get_tablet_count(); + + if (OB_UNLIKELY(cur_tablet_cnt + inc_tablet_cnt >= max_tablet_cnt)) { + ret = OB_TOO_MANY_PARTITIONS_ERROR; + LOG_WARN("too many partitions of tenant", K(ret), K(tenant_id), K(memory_limit), K(tablet_cnt_per_gb), + K(max_tablet_cnt), K(cur_tablet_cnt), K(inc_tablet_cnt)); + } + } + } + + return ret; +} + int ObTabletCreateDeleteHelper::verify_tablets_absence( const ObBatchCreateTabletArg &arg, ObIArray &tablet_create_info_array) diff --git a/src/storage/tablet/ob_tablet_create_delete_helper.h b/src/storage/tablet/ob_tablet_create_delete_helper.h index 944ebc0fae..8111a369d6 100644 --- a/src/storage/tablet/ob_tablet_create_delete_helper.h +++ b/src/storage/tablet/ob_tablet_create_delete_helper.h @@ -151,6 +151,7 @@ public: static int prepare_data_for_binding_info(const ObTabletID &tablet_id, const ObLS &ls, const transaction::ObMulSourceDataNotifyArg &trans_flags); private: + static int check_create_new_tablets(const obrpc::ObBatchCreateTabletArg &arg); static int verify_tablets_absence( const obrpc::ObBatchCreateTabletArg &arg, common::ObIArray &tablet_create_info_array); diff --git a/src/storage/tx_table/ob_tx_table.cpp b/src/storage/tx_table/ob_tx_table.cpp index 2c592e26cf..e137c2b757 100644 --- a/src/storage/tx_table/ob_tx_table.cpp +++ b/src/storage/tx_table/ob_tx_table.cpp @@ -306,7 +306,7 @@ int ObTxTable::gen_create_tablet_arg_( false/*is_create_bind_hidden_tablets*/))) { LOG_WARN("create tablet info init failed", K(ret), K(tablet_ids), K(tablet_id)); // create ObBatchCreateTabletArg - } else if (OB_FAIL(arg.init_create_tablet(ls_id, SCN::base_scn()))) { + } else if (OB_FAIL(arg.init_create_tablet(ls_id, SCN::base_scn(), false/*need_check_tablet_cnt*/))) { LOG_WARN("ObBatchCreateTabletArg init create tablet failed", K(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(arg.table_schemas_.push_back(table_schema))) { LOG_WARN("add table schema failed", K(ret), K(table_schema)); diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result index a33063d780..3a47de4dfa 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result @@ -284,6 +284,7 @@ _load_tde_encrypt_engine _max_elr_dependent_trx_count _max_malloc_sample_interval _max_schema_slot_num +_max_tablet_cnt_per_gb _migrate_block_verify_level _minor_compaction_amplification_factor _minor_compaction_interval diff --git a/unittest/storage/init_basic_struct.h b/unittest/storage/init_basic_struct.h index 970d1c6a94..4411a26372 100644 --- a/unittest/storage/init_basic_struct.h +++ b/unittest/storage/init_basic_struct.h @@ -109,7 +109,7 @@ int gen_create_tablet_arg(const int64_t tenant_id, false))) { STORAGE_LOG(WARN, "failed to init tablet info", KR(ret), K(index_tablet_ids), K(tablet_id), K(index_tablet_schema_idxs)); - } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn()))) { + } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn(), false/*need_check_tablet_cnt*/))) { STORAGE_LOG(WARN, "failed to init create tablet", KR(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(arg.table_schemas_.push_back(table_schema))) { STORAGE_LOG(WARN, "failed to push back table schema", KR(ret), K(table_schema)); diff --git a/unittest/storage/test_dml_common.h b/unittest/storage/test_dml_common.h index 8c7ba4fff4..c8430cdaa0 100644 --- a/unittest/storage/test_dml_common.h +++ b/unittest/storage/test_dml_common.h @@ -591,7 +591,7 @@ int TestDmlCommon::build_pure_data_tablet_arg( } else if (OB_FAIL(tablet_info.init(tablet_id_array, data_tablet_id, tablet_schema_index_array, lib::Worker::CompatMode::MYSQL, false))) { STORAGE_LOG(WARN, "failed to init tablet info", K(ret), K(tablet_id_array), K(data_tablet_id), K(tablet_schema_index_array)); - } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn()))) { + } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn(), false/*need_check_tablet_cnt*/))) { STORAGE_LOG(WARN, "failed to init create tablet", K(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(arg.table_schemas_.push_back(table_schema))) { STORAGE_LOG(WARN, "failed to push back table schema", K(ret), K(table_schema)); @@ -643,7 +643,7 @@ int TestDmlCommon::build_mixed_tablets_arg( } else if (OB_FAIL(tablet_info.init(tablet_id_array, data_tablet_id, tablet_schema_index_array, lib::Worker::CompatMode::MYSQL, false))) { STORAGE_LOG(WARN, "failed to init tablet info", K(ret), K(tablet_id_array), K(data_tablet_id), K(tablet_schema_index_array)); - } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn()))) { + } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn(), false/*need_check_tablet_cnt*/))) { STORAGE_LOG(WARN, "failed to init create tablet", K(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(arg.table_schemas_.push_back(data_table_schema))) { STORAGE_LOG(WARN, "failed to push back data table schema", K(ret), K(data_table_schema)); diff --git a/unittest/storage/test_lob_common.h b/unittest/storage/test_lob_common.h index 77b99934a4..d7f709ce8a 100644 --- a/unittest/storage/test_lob_common.h +++ b/unittest/storage/test_lob_common.h @@ -335,7 +335,7 @@ int TestLobCommon::build_lob_tablet_arg( lib::get_compat_mode(), false/*is_create_bind_hidden_tablets*/))) { STORAGE_LOG(WARN, "failed to init tablet info", K(ret), K(tablet_id_array), K(data_tablet_id), K(tablet_schema_index_array)); - } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn()))) { + } else if (OB_FAIL(arg.init_create_tablet(ls_id, share::SCN::min_scn(), false/*need_check_tablet_cnt*/))) { STORAGE_LOG(WARN, "failed to init create tablet", K(ret), K(tenant_id), K(ls_id)); } else if (OB_FAIL(arg.table_schemas_.push_back(table_schema))) { STORAGE_LOG(WARN, "failed to push back table schema", K(ret), K(table_schema));