add defence in backup process

This commit is contained in:
oceanoverflow 2022-11-17 02:08:01 +00:00 committed by wangzelin.wzl
parent 2171913b09
commit dc586042af
4 changed files with 15 additions and 3 deletions

View File

@ -98,6 +98,8 @@ static int advance_checkpoint_by_flush(const uint64_t tenant_id, const share::Ob
}
} else if (OB_FAIL(ls->get_ls_meta_package(ls_meta_package))) {
LOG_WARN("failed to get ls meta package", K(ret), K(tenant_id), K(ls_id));
} else if (OB_FAIL(ls_meta_package.ls_meta_.check_valid_for_backup())) {
LOG_WARN("failed to check valid for backup", K(ret), K(ls_meta_package));
} else {
const int64_t clog_checkpoint_ts = ls_meta_package.ls_meta_.get_clog_checkpoint_ts();
if (clog_checkpoint_ts >= start_scn) {
@ -2032,7 +2034,7 @@ int ObPrefetchBackupInfoTask::process()
} else if (OB_SUCCESS != ls_backup_ctx_->get_result_code()) {
LOG_INFO("backup already failed, do nothing");
} else if (OB_FAIL(inner_process_())) {
LOG_WARN("failed to process", K(ret));
LOG_WARN("failed to process", K(ret), K_(param));
} else {
LOG_INFO("prefetch backup info process", K_(backup_data_type));
}
@ -3799,6 +3801,8 @@ int ObLSBackupPrepareTask::may_need_advance_checkpoint_()
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 if (OB_FAIL(cur_ls_meta.ls_meta_.check_valid_for_backup())) {
LOG_WARN("failed to check valid for backup", K(ret), K(cur_ls_meta));
} else if (backup_clog_checkpoint_ts <= cur_ls_meta.ls_meta_.get_clog_checkpoint_ts()) {
LOG_INFO("no need advance checkpoint", K_(param));
} else if (OB_FAIL(advance_checkpoint_by_flush(tenant_id, ls_id, backup_clog_checkpoint_ts, ls))) {

View File

@ -1608,7 +1608,11 @@ int ObBackupTabletProvider::get_tablet_handle_(const uint64_t tenant_id, const s
if (OB_INVALID_ID == tenant_id || !ls_id.is_valid() || !tablet_id.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("get invalid args", K(ret), K(tenant_id), K(ls_id), K(tablet_id));
} else if (OB_ISNULL(ls_backup_ctx_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("ls backup ctx should not be null", K(ret));
} else {
const int64_t rebuild_seq = ls_backup_ctx_->rebuild_seq_;
MTL_SWITCH(tenant_id) {
ObLS *ls = NULL;
ObLSHandle ls_handle;
@ -1622,8 +1626,12 @@ int ObBackupTabletProvider::get_tablet_handle_(const uint64_t tenant_id, const s
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("LS is null", K(ret));
} else if (OB_FAIL(ObBackupUtils::check_ls_valid_for_backup(tenant_id, ls_id, rebuild_seq))) {
LOG_WARN("failed to check ls valid for backup", K(ret), K(tenant_id), K(ls_id), K(rebuild_seq));
} else if (OB_FAIL(ls->get_tablet(tablet_id, tablet_handle, timeout_us))) {
LOG_WARN("failed to get tablet handle", K(ret), K(tenant_id), K(ls_id), K(tablet_id));
} else if (OB_FAIL(ObBackupUtils::check_ls_valid_for_backup(tenant_id, ls_id, rebuild_seq))) {
LOG_WARN("failed to check ls valid for backup", K(ret), K(tenant_id), K(ls_id), K(rebuild_seq));
}
}
}

View File

@ -480,7 +480,7 @@ int ObLSMeta::set_ls_rebuild()
return ret;
}
int ObLSMeta::check_valid_for_backup()
int ObLSMeta::check_valid_for_backup() const
{
int ret = OB_SUCCESS;
ObSpinLockTimeGuard guard(lock_);

View File

@ -74,7 +74,7 @@ public:
const ObLSMeta &src_ls_meta);
//for ha rebuild update ls meta
int set_ls_rebuild();
int check_valid_for_backup();
int check_valid_for_backup() const;
int64_t get_tablet_change_checkpoint_ts() const;
int set_tablet_change_checkpoint_ts(int64_t tablet_change_checkpoint_ts);
int update_id_meta(const int64_t service_type,