fix backup and restore failed between force_replication_allocation setted and not setted clusters (#34608)
This commit is contained in:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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));
|
||||
|
||||
Reference in New Issue
Block a user