diff --git a/src/rootserver/backup/ob_backup_data_scheduler.cpp b/src/rootserver/backup/ob_backup_data_scheduler.cpp index 06efaa559d..c3bb86f853 100644 --- a/src/rootserver/backup/ob_backup_data_scheduler.cpp +++ b/src/rootserver/backup/ob_backup_data_scheduler.cpp @@ -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))) { diff --git a/src/share/restore/ob_import_util.cpp b/src/share/restore/ob_import_util.cpp index 682ff1b993..87c6fd02c2 100644 --- a/src/share/restore/ob_import_util.cpp +++ b/src/share/restore/ob_import_util.cpp @@ -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: diff --git a/src/sql/resolver/cmd/ob_alter_system_resolver.cpp b/src/sql/resolver/cmd/ob_alter_system_resolver.cpp index 59b353a24d..87dff292c9 100644 --- a/src/sql/resolver/cmd/ob_alter_system_resolver.cpp +++ b/src/sql/resolver/cmd/ob_alter_system_resolver.cpp @@ -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; }