add defence in backup process
This commit is contained in:
parent
2171913b09
commit
dc586042af
@ -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))) {
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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_);
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user