[CP] fix backup check rebuild seq use rebuild seq not correct issue

This commit is contained in:
oceanoverflow
2022-11-30 14:10:32 +00:00
committed by ob-robot
parent 1e012e6ae4
commit d4e6d5b0e8
2 changed files with 30 additions and 5 deletions

View File

@ -3777,7 +3777,9 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_()
if (OB_ISNULL(ls_backup_ctx_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("ls backup ctx should not be null", K(ret));
} else if (OB_FAIL(fetch_backup_ls_meta_(rebuild_seq, backup_clog_checkpoint_scn))) {
} else if (OB_FAIL(fetch_cur_ls_rebuild_seq_(rebuild_seq))) {
LOG_WARN("failed to fetch cur ls rebuild seq", K(ret), K_(param));
} else if (OB_FAIL(fetch_backup_ls_meta_(backup_clog_checkpoint_scn))) {
LOG_WARN("failed to fetch backup ls meta checkpoint ts", K(ret), K_(param));
} else if (FALSE_IT(ls_backup_ctx_->rebuild_seq_ = rebuild_seq)) {
// assign rebuild seq
@ -3811,10 +3813,33 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_()
return ret;
}
int ObLSBackupPrepareTask::fetch_backup_ls_meta_(int64_t &rebuild_seq, SCN &clog_checkpoint_scn)
int ObLSBackupPrepareTask::fetch_cur_ls_rebuild_seq_(int64_t &rebuild_seq)
{
int ret = OB_SUCCESS;
rebuild_seq = -1;
storage::ObLSHandle ls_handle;
storage::ObLS *ls = NULL;
const uint64_t tenant_id = param_.tenant_id_;
const share::ObLSID &ls_id = param_.ls_id_;
MTL_SWITCH(tenant_id) {
ObLSMetaPackage cur_ls_meta;
if (OB_FAIL(get_ls_handle(tenant_id, ls_id, ls_handle))) {
LOG_WARN("failed to get ls handle", K(ret), K(tenant_id), K(ls_id));
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("log stream not exist", K(ret), K(ls_id));
} else if (OB_FAIL(ls->get_ls_meta_package(cur_ls_meta))) {
LOG_WARN("failed to get ls meta package", K(ret), K(tenant_id), K(ls_id));
} else {
rebuild_seq = cur_ls_meta.ls_meta_.get_rebuild_seq();
}
}
return ret;
}
int ObLSBackupPrepareTask::fetch_backup_ls_meta_(share::SCN &clog_checkpoint_scn)
{
int ret = OB_SUCCESS;
rebuild_seq = 0;
clog_checkpoint_scn.reset();
ObLSMetaPackage ls_meta_package;
share::ObBackupDataStore store;
@ -3826,7 +3851,6 @@ int ObLSBackupPrepareTask::fetch_backup_ls_meta_(int64_t &rebuild_seq, SCN &clog
ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid ls meta package", K(ret), K(ls_meta_package));
} else {
rebuild_seq = ls_meta_package.ls_meta_.get_rebuild_seq();
clog_checkpoint_scn = ls_meta_package.ls_meta_.get_clog_checkpoint_scn();
}
return ret;

View File

@ -451,6 +451,8 @@ public:
private:
int may_need_advance_checkpoint_();
int fetch_cur_ls_rebuild_seq_(int64_t &rebuild_seq);
int fetch_backup_ls_meta_(share::SCN &clog_checkpoint_scn);
int check_tx_data_can_explain_user_data_();
int get_backup_tx_data_table_filled_tx_scn_(share::SCN &filled_tx_scn);
int prepare_meta_index_store_(ObBackupMetaIndexStore &meta_index_store);
@ -459,7 +461,6 @@ private:
int get_cur_ls_min_filled_tx_scn_(share::SCN &min_filled_tx_scn);
int get_tablet_min_filled_tx_scn_(ObTabletHandle &tablet_handle,
share::SCN &min_filled_tx_scn, bool &has_minor_sstable);
int fetch_backup_ls_meta_(int64_t &rebuild_seq, share::SCN &clog_checkpoint_scn);
private:
bool is_inited_;