This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit f7801948ad81d968f77d7be9835d64d8fedc5cca Author: camby <camby...@tencent.com> AuthorDate: Tue May 14 10:13:28 2024 +0800 fix backup and restore failed between force_replication_allocation setted and not setted clusters (#34608) --- fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java | 5 +++++ fe/fe-core/src/main/java/org/apache/doris/backup/BackupJobInfo.java | 4 ++++ fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java index 9f5f6ee7253..21e417631dd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java @@ -20,6 +20,7 @@ package org.apache.doris.analysis; import org.apache.doris.backup.Repository; import org.apache.doris.catalog.ReplicaAllocation; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.Config; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; import org.apache.doris.common.UserException; @@ -168,6 +169,10 @@ public class RestoreStmt extends AbstractBackupStmt { ErrorReport.reportAnalysisException(ErrorCode.ERR_COMMON_ERROR, "Invalid reserve_replica value: " + copiedProperties.get(PROP_RESERVE_REPLICA)); } + // force set reserveReplica to false, do not keep the origin allocation + if (reserveReplica && !Config.force_olap_table_replication_allocation.isEmpty()) { + reserveReplica = false; + } copiedProperties.remove(PROP_RESERVE_REPLICA); } // reserve dynamic partition enable diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJobInfo.java b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJobInfo.java index 7108315cee7..aa127961e3d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJobInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJobInfo.java @@ -32,6 +32,7 @@ import org.apache.doris.catalog.Table; import org.apache.doris.catalog.TableIf.TableType; import org.apache.doris.catalog.Tablet; import org.apache.doris.catalog.View; +import org.apache.doris.common.Config; import org.apache.doris.common.FeConstants; import org.apache.doris.common.Version; import org.apache.doris.common.io.Text; @@ -99,6 +100,8 @@ public class BackupJobInfo implements Writable { public int minorVersion; @SerializedName("patch_version") public int patchVersion; + @SerializedName("is_force_replication_allocation") + public boolean isForceReplicationAllocation; @SerializedName("tablet_be_map") public Map<Long, Long> tabletBeMap = Maps.newHashMap(); @@ -607,6 +610,7 @@ public class BackupJobInfo implements Writable { jobInfo.majorVersion = Version.DORIS_BUILD_VERSION_MAJOR; jobInfo.minorVersion = Version.DORIS_BUILD_VERSION_MINOR; jobInfo.patchVersion = Version.DORIS_BUILD_VERSION_PATCH; + jobInfo.isForceReplicationAllocation = !Config.force_olap_table_replication_allocation.isEmpty(); Collection<Table> tbls = backupMeta.getTables().values(); // tbls diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java index 5eb4950466f..2af0242db33 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java @@ -189,6 +189,10 @@ public class RestoreJob extends AbstractJob { this.state = RestoreJobState.PENDING; this.metaVersion = metaVersion; this.reserveReplica = reserveReplica; + // if backup snapshot is come from a cluster with force replication allocation, ignore the origin allocation + if (jobInfo.isForceReplicationAllocation) { + this.reserveReplica = false; + } this.reserveDynamicPartitionEnable = reserveDynamicPartitionEnable; this.isBeingSynced = isBeingSynced; properties.put(PROP_RESERVE_REPLICA, String.valueOf(reserveReplica)); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org