avoid tablet iterator usage before initialization for several inner tables
This commit is contained in:
		@ -112,18 +112,24 @@ int ObAllVirtualMemstoreInfo::get_next_tablet(ObTabletHandle &tablet_handle)
 | 
				
			|||||||
  int ret = OB_SUCCESS;
 | 
					  int ret = OB_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (OB_SUCC(ret)) {
 | 
					  while (OB_SUCC(ret)) {
 | 
				
			||||||
    if (OB_FAIL(ls_tablet_iter_.get_next_tablet(tablet_handle))) {
 | 
					    if (!ls_tablet_iter_.is_valid()) {
 | 
				
			||||||
      if (OB_ITER_END != ret) {
 | 
					 | 
				
			||||||
        SERVER_LOG(WARN, "fail to get next tablet", K(ret));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      ret = OB_SUCCESS; // continue to next ls
 | 
					 | 
				
			||||||
      ObLS *ls = nullptr;
 | 
					      ObLS *ls = nullptr;
 | 
				
			||||||
      if (OB_FAIL(get_next_ls(ls))) {
 | 
					      if (OB_FAIL(get_next_ls(ls))) {
 | 
				
			||||||
        if (OB_ITER_END != ret) {
 | 
					        if (OB_ITER_END != ret) {
 | 
				
			||||||
          SERVER_LOG(WARN, "fail to get next ls", K(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 */))) {
 | 
					      } else if (OB_FAIL(ls->build_tablet_iter(ls_tablet_iter_, true /* except_ls_inner_tablet */))) {
 | 
				
			||||||
        SERVER_LOG(WARN, "fail to get tablet iter", K(ret));
 | 
					        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 {
 | 
					    } else {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@ -202,7 +208,7 @@ int ObAllVirtualMemstoreInfo::process_curr_tenant(ObNewRow *&row)
 | 
				
			|||||||
    if (OB_ITER_END != ret) {
 | 
					    if (OB_ITER_END != ret) {
 | 
				
			||||||
      SERVER_LOG(WARN, "get_next_memtable failed", K(ret));
 | 
					      SERVER_LOG(WARN, "get_next_memtable failed", K(ret));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else if (NULL == mt) {
 | 
					  } else if (OB_ISNULL(mt)) {
 | 
				
			||||||
    ret = OB_ERR_UNEXPECTED;
 | 
					    ret = OB_ERR_UNEXPECTED;
 | 
				
			||||||
    SERVER_LOG(WARN, "mt shouldn't NULL here", K(ret), K(mt));
 | 
					    SERVER_LOG(WARN, "mt shouldn't NULL here", K(ret), K(mt));
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
 | 
				
			|||||||
@ -95,19 +95,24 @@ int ObAllVirtualTabletDDLKVInfo::get_next_ddl_kv_mgr(ObDDLKvMgrHandle &ddl_kv_mg
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  int ret = OB_SUCCESS;
 | 
					  int ret = OB_SUCCESS;
 | 
				
			||||||
  while (OB_SUCC(ret)) {
 | 
					  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()) {
 | 
				
			||||||
      if (!ls_tablet_iter_.is_valid() || OB_ITER_END == ret) {
 | 
					      ObLS *ls = nullptr;
 | 
				
			||||||
        ret = OB_SUCCESS; // continue to next ls
 | 
					      if (OB_FAIL(get_next_ls(ls))) {
 | 
				
			||||||
        ObLS *ls = nullptr;
 | 
					        if (OB_ITER_END != ret) {
 | 
				
			||||||
        if (OB_FAIL(get_next_ls(ls))) {
 | 
					          SERVER_LOG(WARN, "fail to get next ls", K(ret));
 | 
				
			||||||
          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 {
 | 
					      } else {
 | 
				
			||||||
        SERVER_LOG(WARN, "fail to get next ddl kv mgr", K(ret));
 | 
					        SERVER_LOG(WARN, "fail to get next tablet", K(ret));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      curr_tablet_id_ = ddl_kv_mgr_handle.get_obj()->get_tablet_id();
 | 
					      curr_tablet_id_ = ddl_kv_mgr_handle.get_obj()->get_tablet_id();
 | 
				
			||||||
 | 
				
			|||||||
@ -101,18 +101,24 @@ int ObAllVirtualTabletInfo::get_next_tablet(ObTabletHandle &tablet_handle)
 | 
				
			|||||||
  int ret = OB_SUCCESS;
 | 
					  int ret = OB_SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  while (OB_SUCC(ret)) {
 | 
					  while (OB_SUCC(ret)) {
 | 
				
			||||||
    if (OB_FAIL(ls_tablet_iter_.get_next_tablet(tablet_handle))) {
 | 
					    if (!ls_tablet_iter_.is_valid()) {
 | 
				
			||||||
      if (OB_ITER_END != ret) {
 | 
					 | 
				
			||||||
        SERVER_LOG(WARN, "fail to get next tablet", K(ret));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      ret = OB_SUCCESS; // continue to next ls
 | 
					 | 
				
			||||||
      ObLS *ls = nullptr;
 | 
					      ObLS *ls = nullptr;
 | 
				
			||||||
      if (OB_FAIL(get_next_ls(ls))) {
 | 
					      if (OB_FAIL(get_next_ls(ls))) {
 | 
				
			||||||
        if (OB_ITER_END != ret) {
 | 
					        if (OB_ITER_END != ret) {
 | 
				
			||||||
          SERVER_LOG(WARN, "fail to get next ls", K(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_))) {
 | 
					      } else if (OB_FAIL(ls->build_tablet_iter(ls_tablet_iter_))) {
 | 
				
			||||||
        SERVER_LOG(WARN, "fail to get tablet iter", K(ret));
 | 
					        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 {
 | 
					    } else {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
 | 
				
			|||||||
@ -1972,7 +1972,7 @@ int ObLSTabletService::inner_table_scan(
 | 
				
			|||||||
        K(data_max_schema_version));
 | 
					        K(data_max_schema_version));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   return ret;
 | 
					  return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ObLSTabletService::has_tablet(
 | 
					int ObLSTabletService::has_tablet(
 | 
				
			||||||
 | 
				
			|||||||
@ -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_;
 | 
					  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))) {
 | 
					  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()) {
 | 
					  } else if (!aux_tablet_info.is_valid()) {
 | 
				
			||||||
    ret = OB_EMPTY_RESULT;
 | 
					    ret = OB_EMPTY_RESULT;
 | 
				
			||||||
  } else if (CLICK_FAIL(read_op(aux_tablet_info))) {
 | 
					  } else if (CLICK_FAIL(read_op(aux_tablet_info))) {
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user