[CP] Fix rebuild create tablet check reach tablet limit bug.
This commit is contained in:
@ -1522,6 +1522,7 @@ int ObStartMigrationTask::create_all_tablets_(
|
|||||||
ObLSHandle ls_handle;
|
ObLSHandle ls_handle;
|
||||||
ObLS *ls = nullptr;
|
ObLS *ls = nullptr;
|
||||||
ObArray<ObTabletID> tablet_id_array;
|
ObArray<ObTabletID> tablet_id_array;
|
||||||
|
bool need_check_tablet_limit = false;
|
||||||
|
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
@ -1529,6 +1530,7 @@ int ObStartMigrationTask::create_all_tablets_(
|
|||||||
} else if (OB_ISNULL(ob_reader)) {
|
} else if (OB_ISNULL(ob_reader)) {
|
||||||
ret = OB_INVALID_ARGUMENT;
|
ret = OB_INVALID_ARGUMENT;
|
||||||
LOG_WARN("create all tablets get ivnalid argument", K(ret));
|
LOG_WARN("create all tablets get ivnalid argument", K(ret));
|
||||||
|
} else if (FALSE_IT(need_check_tablet_limit = ctx_->arg_.type_ != ObMigrationOpType::REBUILD_LS_OP)) {
|
||||||
} else if (OB_FAIL(ObStorageHADagUtils::get_ls(ctx_->arg_.ls_id_, ls_handle))) {
|
} else if (OB_FAIL(ObStorageHADagUtils::get_ls(ctx_->arg_.ls_id_, ls_handle))) {
|
||||||
LOG_WARN("failed to get ls", K(ret), KPC(ctx_));
|
LOG_WARN("failed to get ls", K(ret), KPC(ctx_));
|
||||||
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
|
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
|
||||||
@ -1538,7 +1540,7 @@ int ObStartMigrationTask::create_all_tablets_(
|
|||||||
ctx_->tenant_id_, tablet_id_array, ctx_->minor_src_, ctx_->local_rebuild_seq_, ctx_->arg_.type_,
|
ctx_->tenant_id_, tablet_id_array, ctx_->minor_src_, ctx_->local_rebuild_seq_, ctx_->arg_.type_,
|
||||||
ls, &ctx_->ha_table_info_mgr_, ha_tablets_builder))) {
|
ls, &ctx_->ha_table_info_mgr_, ha_tablets_builder))) {
|
||||||
LOG_WARN("failed to init ha tablets builder", K(ret), KPC(ctx_));
|
LOG_WARN("failed to init ha tablets builder", K(ret), KPC(ctx_));
|
||||||
} else if (OB_FAIL(ha_tablets_builder.create_all_tablets(ob_reader,
|
} else if (OB_FAIL(ha_tablets_builder.create_all_tablets(need_check_tablet_limit, ob_reader,
|
||||||
ctx_->sys_tablet_id_array_, ctx_->data_tablet_id_array_,
|
ctx_->sys_tablet_id_array_, ctx_->data_tablet_id_array_,
|
||||||
ctx_->tablet_simple_info_map_))) {
|
ctx_->tablet_simple_info_map_))) {
|
||||||
LOG_WARN("failed to create all tablets", K(ret), KPC(ctx_));
|
LOG_WARN("failed to create all tablets", K(ret), KPC(ctx_));
|
||||||
|
|||||||
@ -152,6 +152,7 @@ int ObStorageHATabletsBuilder::create_or_update_tablets()
|
|||||||
ObICopyTabletInfoReader *reader = nullptr;
|
ObICopyTabletInfoReader *reader = nullptr;
|
||||||
obrpc::ObCopyTabletInfo tablet_info;
|
obrpc::ObCopyTabletInfo tablet_info;
|
||||||
const int overwrite = 1;
|
const int overwrite = 1;
|
||||||
|
const bool need_check_tablet_limit = false;
|
||||||
|
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
@ -173,7 +174,7 @@ int ObStorageHATabletsBuilder::create_or_update_tablets()
|
|||||||
}
|
}
|
||||||
} else if (OB_FAIL(modified_tablet_info_(tablet_info))) {
|
} else if (OB_FAIL(modified_tablet_info_(tablet_info))) {
|
||||||
LOG_WARN("failed to modified tablet info", K(ret), K(tablet_info));
|
LOG_WARN("failed to modified tablet info", K(ret), K(tablet_info));
|
||||||
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, ls))) {
|
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, need_check_tablet_limit, ls))) {
|
||||||
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
||||||
}
|
}
|
||||||
#ifdef ERRSIM
|
#ifdef ERRSIM
|
||||||
@ -196,6 +197,7 @@ int ObStorageHATabletsBuilder::create_or_update_tablets()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ObStorageHATabletsBuilder::create_all_tablets(
|
int ObStorageHATabletsBuilder::create_all_tablets(
|
||||||
|
const bool need_check_tablet_limit,
|
||||||
ObICopyLSViewInfoReader *reader,
|
ObICopyLSViewInfoReader *reader,
|
||||||
common::ObIArray<common::ObTabletID> &sys_tablet_id_list,
|
common::ObIArray<common::ObTabletID> &sys_tablet_id_list,
|
||||||
common::ObIArray<common::ObTabletID> &data_tablet_id_list,
|
common::ObIArray<common::ObTabletID> &data_tablet_id_list,
|
||||||
@ -231,7 +233,7 @@ int ObStorageHATabletsBuilder::create_all_tablets(
|
|||||||
}
|
}
|
||||||
} else if (OB_FAIL(modified_tablet_info_(tablet_info))) {
|
} else if (OB_FAIL(modified_tablet_info_(tablet_info))) {
|
||||||
LOG_WARN("failed to modified tablet info", K(ret), K(tablet_info));
|
LOG_WARN("failed to modified tablet info", K(ret), K(tablet_info));
|
||||||
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, ls))) {
|
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, need_check_tablet_limit, ls))) {
|
||||||
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
||||||
} else if (tablet_info.tablet_id_.is_ls_inner_tablet()) {
|
} else if (tablet_info.tablet_id_.is_ls_inner_tablet()) {
|
||||||
if (OB_FAIL(sys_tablet_id_list.push_back(tablet_info.tablet_id_))) {
|
if (OB_FAIL(sys_tablet_id_list.push_back(tablet_info.tablet_id_))) {
|
||||||
@ -275,6 +277,7 @@ int ObStorageHATabletsBuilder::create_all_tablets_with_4_1_rpc(
|
|||||||
obrpc::ObCopyTabletInfo tablet_info;
|
obrpc::ObCopyTabletInfo tablet_info;
|
||||||
const int overwrite = 1;
|
const int overwrite = 1;
|
||||||
ObCopyTabletSimpleInfo tablet_simple_info;
|
ObCopyTabletSimpleInfo tablet_simple_info;
|
||||||
|
const bool need_check_tablet_limit = false;
|
||||||
|
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
@ -296,7 +299,7 @@ int ObStorageHATabletsBuilder::create_all_tablets_with_4_1_rpc(
|
|||||||
}
|
}
|
||||||
} else if (OB_FAIL(modified_tablet_info_(tablet_info))) {
|
} else if (OB_FAIL(modified_tablet_info_(tablet_info))) {
|
||||||
LOG_WARN("failed to modified tablet info", K(ret), K(tablet_info));
|
LOG_WARN("failed to modified tablet info", K(ret), K(tablet_info));
|
||||||
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, ls))) {
|
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, need_check_tablet_limit, ls))) {
|
||||||
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
||||||
} else {
|
} else {
|
||||||
tablet_simple_info.tablet_id_ = tablet_info.tablet_id_;
|
tablet_simple_info.tablet_id_ = tablet_info.tablet_id_;
|
||||||
@ -320,6 +323,7 @@ int ObStorageHATabletsBuilder::update_pending_tablets_with_remote()
|
|||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
ObLS *ls = nullptr;
|
ObLS *ls = nullptr;
|
||||||
ObICopyTabletInfoReader *reader = nullptr;
|
ObICopyTabletInfoReader *reader = nullptr;
|
||||||
|
const bool need_check_tablet_limit = false;
|
||||||
|
|
||||||
if (!is_inited_) {
|
if (!is_inited_) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
@ -389,7 +393,7 @@ int ObStorageHATabletsBuilder::update_pending_tablets_with_remote()
|
|||||||
} else {
|
} else {
|
||||||
LOG_INFO("update tablet restore status to UNDEFINED", K(tablet_info));
|
LOG_INFO("update tablet restore status to UNDEFINED", K(tablet_info));
|
||||||
}
|
}
|
||||||
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, ls))) {
|
} else if (OB_FAIL(create_or_update_tablet_(tablet_info, need_check_tablet_limit, ls))) {
|
||||||
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
LOG_WARN("failed to create or update tablet", K(ret), K(tablet_info));
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("success to replace PENDING tablet with a newer meta", K(tablet_id));
|
LOG_INFO("success to replace PENDING tablet with a newer meta", K(tablet_id));
|
||||||
@ -511,6 +515,7 @@ void ObStorageHATabletsBuilder::free_tablet_info_reader_(ObICopyTabletInfoReader
|
|||||||
|
|
||||||
int ObStorageHATabletsBuilder::create_or_update_tablet_(
|
int ObStorageHATabletsBuilder::create_or_update_tablet_(
|
||||||
const obrpc::ObCopyTabletInfo &tablet_info,
|
const obrpc::ObCopyTabletInfo &tablet_info,
|
||||||
|
const bool need_check_tablet_limit,
|
||||||
ObLS *ls)
|
ObLS *ls)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
@ -532,7 +537,7 @@ int ObStorageHATabletsBuilder::create_or_update_tablet_(
|
|||||||
} else if (ObCopyTabletStatus::TABLET_NOT_EXIST == tablet_info.status_ && tablet_info.tablet_id_.is_ls_inner_tablet()) {
|
} else if (ObCopyTabletStatus::TABLET_NOT_EXIST == tablet_info.status_ && tablet_info.tablet_id_.is_ls_inner_tablet()) {
|
||||||
ret = OB_TABLET_NOT_EXIST;
|
ret = OB_TABLET_NOT_EXIST;
|
||||||
LOG_WARN("src ls inner tablet is not exist, src ls is maybe deleted", K(ret), K(tablet_info));
|
LOG_WARN("src ls inner tablet is not exist, src ls is maybe deleted", K(ret), K(tablet_info));
|
||||||
} else if (OB_FAIL(ObTabletCreateMdsHelper::check_create_new_tablets(1LL))) {
|
} else if (need_check_tablet_limit && OB_FAIL(ObTabletCreateMdsHelper::check_create_new_tablets(1LL))) {
|
||||||
LOG_WARN("failed to check create new tablet", K(ret), K(tablet_info));
|
LOG_WARN("failed to check create new tablet", K(ret), K(tablet_info));
|
||||||
} else if (OB_FAIL(hold_local_reuse_sstable_(tablet_info.tablet_id_, local_tablet_hdl, major_tables, storage_schema, medium_info_list, allocator))) {
|
} else if (OB_FAIL(hold_local_reuse_sstable_(tablet_info.tablet_id_, local_tablet_hdl, major_tables, storage_schema, medium_info_list, allocator))) {
|
||||||
LOG_WARN("failed to hold local reuse sstable", K(ret), K(tablet_info));
|
LOG_WARN("failed to hold local reuse sstable", K(ret), K(tablet_info));
|
||||||
|
|||||||
@ -72,6 +72,7 @@ public:
|
|||||||
// Create all tablets with remote tablet meta.
|
// Create all tablets with remote tablet meta.
|
||||||
int create_or_update_tablets();
|
int create_or_update_tablets();
|
||||||
int create_all_tablets(
|
int create_all_tablets(
|
||||||
|
const bool need_check_tablet_limit,
|
||||||
ObICopyLSViewInfoReader *reader,
|
ObICopyLSViewInfoReader *reader,
|
||||||
common::ObIArray<common::ObTabletID> &sys_tablet_id_list,
|
common::ObIArray<common::ObTabletID> &sys_tablet_id_list,
|
||||||
common::ObIArray<common::ObTabletID> &data_tablet_id_list,
|
common::ObIArray<common::ObTabletID> &data_tablet_id_list,
|
||||||
@ -92,6 +93,7 @@ private:
|
|||||||
void free_tablet_info_reader_(ObICopyTabletInfoReader *&reader);
|
void free_tablet_info_reader_(ObICopyTabletInfoReader *&reader);
|
||||||
int create_or_update_tablet_(
|
int create_or_update_tablet_(
|
||||||
const obrpc::ObCopyTabletInfo &tablet_info,
|
const obrpc::ObCopyTabletInfo &tablet_info,
|
||||||
|
const bool need_check_tablet_limit,
|
||||||
ObLS *ls);
|
ObLS *ls);
|
||||||
int get_tablets_sstable_reader_(
|
int get_tablets_sstable_reader_(
|
||||||
const common::ObIArray<ObTabletHandle> &tablet_handle_array,
|
const common::ObIArray<ObTabletHandle> &tablet_handle_array,
|
||||||
|
|||||||
Reference in New Issue
Block a user