avoid tablet iterator usage before initialization for several inner tables

This commit is contained in:
hiddenbomb 2024-02-08 05:44:37 +00:00 committed by ob-robot
parent 44eee17093
commit dee39633c7
5 changed files with 45 additions and 28 deletions

View File

@ -112,18 +112,24 @@ int ObAllVirtualMemstoreInfo::get_next_tablet(ObTabletHandle &tablet_handle)
int ret = OB_SUCCESS;
while (OB_SUCC(ret)) {
if (OB_FAIL(ls_tablet_iter_.get_next_tablet(tablet_handle))) {
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "fail to get next tablet", K(ret));
}
ret = OB_SUCCESS; // continue to next ls
if (!ls_tablet_iter_.is_valid()) {
ObLS *ls = nullptr;
if (OB_FAIL(get_next_ls(ls))) {
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "fail to get next ls", K(ret));
}
} else if (OB_FAIL(ls->get_tablet_svr()->build_tablet_iter(ls_tablet_iter_, true /* except_ls_inner_tablet */))) {
SERVER_LOG(WARN, "fail to get tablet iter", K(ret));
} else if (OB_FAIL(ls->build_tablet_iter(ls_tablet_iter_, true /* except_ls_inner_tablet */))) {
SERVER_LOG(WARN, "fail to build tablet iter", K(ret));
}
}
if (OB_FAIL(ret)) {
} else if (OB_FAIL(ls_tablet_iter_.get_next_tablet(tablet_handle))) {
if (OB_ITER_END == ret) {
ls_tablet_iter_.reset();
ret = OB_SUCCESS;
} else {
SERVER_LOG(WARN, "fail to get next tablet", K(ret));
}
} else {
break;
@ -202,7 +208,7 @@ int ObAllVirtualMemstoreInfo::process_curr_tenant(ObNewRow *&row)
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "get_next_memtable failed", K(ret));
}
} else if (NULL == mt) {
} else if (OB_ISNULL(mt)) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "mt shouldn't NULL here", K(ret), K(mt));
} else {

View File

@ -95,19 +95,24 @@ int ObAllVirtualTabletDDLKVInfo::get_next_ddl_kv_mgr(ObDDLKvMgrHandle &ddl_kv_mg
{
int ret = OB_SUCCESS;
while (OB_SUCC(ret)) {
if (OB_FAIL(ls_tablet_iter_.get_next_ddl_kv_mgr(ddl_kv_mgr_handle))) {
if (!ls_tablet_iter_.is_valid() || OB_ITER_END == ret) {
ret = OB_SUCCESS; // continue to next ls
ObLS *ls = nullptr;
if (OB_FAIL(get_next_ls(ls))) {
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "fail to get next ls", K(ret));
}
} else if (OB_FAIL(ls->get_tablet_svr()->build_tablet_iter(ls_tablet_iter_))) {
SERVER_LOG(WARN, "fail to get tablet iter", K(ret));
if (!ls_tablet_iter_.is_valid()) {
ObLS *ls = nullptr;
if (OB_FAIL(get_next_ls(ls))) {
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "fail to get next ls", K(ret));
}
} else if (OB_FAIL(ls->build_tablet_iter(ls_tablet_iter_))) {
SERVER_LOG(WARN, "fail to build tablet iter", K(ret));
}
}
if (OB_FAIL(ret)) {
} else if (OB_FAIL(ls_tablet_iter_.get_next_ddl_kv_mgr(ddl_kv_mgr_handle))) {
if (OB_ITER_END == ret) {
ls_tablet_iter_.reset();
ret = OB_SUCCESS;
} else {
SERVER_LOG(WARN, "fail to get next ddl kv mgr", K(ret));
SERVER_LOG(WARN, "fail to get next tablet", K(ret));
}
} else {
curr_tablet_id_ = ddl_kv_mgr_handle.get_obj()->get_tablet_id();

View File

@ -101,18 +101,24 @@ int ObAllVirtualTabletInfo::get_next_tablet(ObTabletHandle &tablet_handle)
int ret = OB_SUCCESS;
while (OB_SUCC(ret)) {
if (OB_FAIL(ls_tablet_iter_.get_next_tablet(tablet_handle))) {
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "fail to get next tablet", K(ret));
}
ret = OB_SUCCESS; // continue to next ls
if (!ls_tablet_iter_.is_valid()) {
ObLS *ls = nullptr;
if (OB_FAIL(get_next_ls(ls))) {
if (OB_ITER_END != ret) {
SERVER_LOG(WARN, "fail to get next ls", K(ret));
}
} else if (OB_FAIL(ls->get_tablet_svr()->build_tablet_iter(ls_tablet_iter_))) {
SERVER_LOG(WARN, "fail to get tablet iter", K(ret));
} else if (OB_FAIL(ls->build_tablet_iter(ls_tablet_iter_))) {
SERVER_LOG(WARN, "fail to build tablet iter", K(ret));
}
}
if (OB_FAIL(ret)) {
} else if (OB_FAIL(ls_tablet_iter_.get_next_tablet(tablet_handle))) {
if (OB_ITER_END == ret) {
ls_tablet_iter_.reset();
ret = OB_SUCCESS;
} else {
SERVER_LOG(WARN, "fail to get next tablet", K(ret));
}
} else {
break;

View File

@ -1972,7 +1972,7 @@ int ObLSTabletService::inner_table_scan(
K(data_max_schema_version));
}
return ret;
return ret;
}
int ObLSTabletService::has_tablet(

View File

@ -199,7 +199,7 @@ inline int ObITabletMdsInterface::get_mds_data_from_tablet<ObTabletBindingMdsUse
const ObTabletComplexAddr<mds::MdsDumpKV> &aux_tablet_info_addr = get_mds_data_().aux_tablet_info_.committed_kv_;
if (CLICK_FAIL(ObTabletMdsData::load_aux_tablet_info(aux_tablet_info_addr, aux_tablet_info))) {
MDS_LOG_GET(WARN, "failed to load auto inc seq");
MDS_LOG_GET(WARN, "failed to load aux tablet info");
} else if (!aux_tablet_info.is_valid()) {
ret = OB_EMPTY_RESULT;
} else if (CLICK_FAIL(read_op(aux_tablet_info))) {