avoid tablet iterator usage before initialization for several inner tables

This commit is contained in:
hiddenbomb
2023-12-22 05:43:44 +00:00
committed by ob-robot
parent 40c0a10156
commit 4a965342e5
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
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_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

@ -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))) {