[CP] fix backup get wrong data version and fix recover table to standby tenant
This commit is contained in:
@ -624,12 +624,13 @@ int ObBackupDataScheduler::persist_backup_version_(common::ObISQLClient &sql_pro
|
||||
int ret = OB_SUCCESS;
|
||||
uint64_t data_version = 0;
|
||||
uint64_t exec_tenant_id = gen_meta_tenant_id(tenant_id);
|
||||
if (GCONF.enable_upgrade_mode) {
|
||||
// TODO(wangxiaohui.wxh) 4.3, correct the tenant id to user tenant id in backup info
|
||||
if (GCONF.in_upgrade_mode()) {
|
||||
ret = OB_BACKUP_CAN_NOT_START;
|
||||
LOG_USER_ERROR(OB_BACKUP_CAN_NOT_START, "cluster upgrading");
|
||||
LOG_WARN("cluster upgrade, can't start backup", K(ret), K(tenant_id));
|
||||
} else if (OB_FAIL(ObShareUtil::fetch_current_data_version(sql_proxy, exec_tenant_id, data_version))) {
|
||||
LOG_WARN("failed to get data version", K(ret), K(exec_tenant_id));
|
||||
} else if (OB_FAIL(ObShareUtil::fetch_current_data_version(sql_proxy, tenant_id/*user tenant id*/, data_version))) {
|
||||
LOG_WARN("failed to get data version", K(ret), K(tenant_id));
|
||||
} else if (OB_FAIL(ObLSBackupInfoOperator::set_backup_version(sql_proxy, exec_tenant_id, data_version))) {
|
||||
LOG_WARN("failed to set backup version", K(ret), K(exec_tenant_id), K(data_version));
|
||||
} else if (OB_FAIL(ObLSBackupInfoOperator::set_cluster_version(sql_proxy, exec_tenant_id, cluster_version))) {
|
||||
@ -1260,7 +1261,7 @@ int ObUserTenantBackupJobMgr::check_can_backup_()
|
||||
uint64_t exec_tenant_id = gen_meta_tenant_id(job_attr_->tenant_id_);
|
||||
if (share::ObBackupStatus::CANCELING == job_attr_->status_.status_) {
|
||||
// backup job is canceling, no need to check log archive status
|
||||
} else if (GCONF.enable_upgrade_mode) {
|
||||
} else if (GCONF.in_upgrade_mode()) {
|
||||
ret = OB_STATE_NOT_MATCH;
|
||||
LOG_WARN("cluster is upgrade, backup can't continue", K(ret), KPC(job_attr_));
|
||||
} else if (OB_FAIL(share::ObLSBackupInfoOperator::get_backup_version(*sql_proxy_, exec_tenant_id, data_version))) {
|
||||
@ -1270,8 +1271,8 @@ int ObUserTenantBackupJobMgr::check_can_backup_()
|
||||
} else if (cluster_version != GET_MIN_CLUSTER_VERSION()) {
|
||||
ret = OB_VERSION_NOT_MATCH;
|
||||
LOG_WARN("cluster version not match, backup can't continue", K(ret), K(cluster_version));
|
||||
} else if (OB_FAIL(ObBackupUtils::check_tenant_data_version_match(exec_tenant_id, data_version))) {
|
||||
LOG_WARN("failed to check tenant data version", K(ret), K(exec_tenant_id), K(data_version));
|
||||
} else if (OB_FAIL(ObBackupUtils::check_tenant_data_version_match(job_attr_->tenant_id_, data_version))) {
|
||||
LOG_WARN("failed to check tenant data version", K(ret), "tenant_id", job_attr_->tenant_id_, K(data_version));
|
||||
} else {
|
||||
ObTenantArchiveRoundAttr round_attr;
|
||||
if (OB_FAIL(ObTenantArchiveMgr::get_tenant_current_round(job_attr_->tenant_id_, job_attr_->incarnation_id_, round_attr))) {
|
||||
|
||||
@ -43,6 +43,7 @@ bool ObImportTableUtil::can_retrieable_err(const int err_code)
|
||||
case OB_TABLEGROUP_NOT_EXIST:
|
||||
case OB_TABLESPACE_NOT_EXIST:
|
||||
case OB_ERR_TABLE_EXIST:
|
||||
case OB_STANDBY_READ_ONLY:
|
||||
bret = false;
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -5528,11 +5528,18 @@ int ObRecoverTableResolver::resolve_tenant_(
|
||||
LOG_WARN("tenant name node must not be null", K(ret));
|
||||
} else {
|
||||
ObSchemaGetterGuard schema_guard;
|
||||
ObAllTenantInfo tenant_info;
|
||||
ObString tmp_tenant_name(node->children_[0]->str_len_, node->children_[0]->str_value_);
|
||||
if (OB_FAIL(GCTX.schema_service_->get_tenant_schema_guard(session_tenant_id, schema_guard))) {
|
||||
LOG_WARN("failed to get_tenant_schema_guard", KR(ret));
|
||||
} else if (OB_FAIL(schema_guard.get_tenant_id(tmp_tenant_name, tenant_id))) {
|
||||
LOG_WARN("failed to get tenant id from schema guard", KR(ret), K(tmp_tenant_name));
|
||||
} else if (OB_FAIL(ObAllTenantInfoProxy::load_tenant_info(tenant_id, GCTX.sql_proxy_, false/*for update*/, tenant_info))) {
|
||||
LOG_WARN("failed to get tenant info", K(ret), K(tenant_id));
|
||||
} else if (tenant_info.is_standby()) {
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_WARN("dest tenant is standby", K(ret), "tenant_name", tmp_tenant_name);
|
||||
LOG_USER_ERROR(OB_NOT_SUPPORTED, "recover table to standby tenant is");
|
||||
} else {
|
||||
tenant_name = tmp_tenant_name;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user