This is an automated email from the ASF dual-hosted git repository.
lide pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new 47cae5926b5 branch-1.2: [improve](backup) Add config
ignore_backup_tmp_partitions (#54121)
47cae5926b5 is described below
commit 47cae5926b5916884951acda9f9261b53cad5954
Author: xy720 <[email protected]>
AuthorDate: Mon Aug 4 11:15:50 2025 +0800
branch-1.2: [improve](backup) Add config ignore_backup_tmp_partitions
(#54121)
pick #45240
---
.../src/main/java/org/apache/doris/common/Config.java | 6 ++++++
.../main/java/org/apache/doris/backup/BackupHandler.java | 4 ++--
.../src/main/java/org/apache/doris/backup/BackupJob.java | 15 ++++++++++-----
.../src/main/java/org/apache/doris/catalog/OlapTable.java | 8 ++++++++
4 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
index 36e362e6259..3869fea368a 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
@@ -1527,6 +1527,12 @@ public class Config extends ConfigBase {
@ConfField(mutable = true, masterOnly = true)
public static int max_backup_restore_job_num_per_db = 10;
+ /**
+ * whether to ignore temp partitions when backup, and not report exception.
+ */
+ @ConfField(mutable = true, masterOnly = true)
+ public static boolean ignore_backup_tmp_partitions = false;
+
/**
* Control the default max num of the instance for a user.
*/
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java
b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java
index 72eb59392b5..643228ada0d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java
@@ -328,14 +328,14 @@ public class BackupHandler extends MasterDaemon
implements Writable {
OlapTable olapTbl = (OlapTable) tbl;
tbl.readLock();
try {
- if (olapTbl.existTempPartitions()) {
+ if (!Config.ignore_backup_tmp_partitions &&
olapTbl.existTempPartitions()) {
ErrorReport.reportDdlException(ErrorCode.ERR_COMMON_ERROR,
"Do not support backup table with temp
partitions");
}
PartitionNames partitionNames = tblRef.getPartitionNames();
if (partitionNames != null) {
- if (partitionNames.isTemp()) {
+ if (!Config.ignore_backup_tmp_partitions &&
partitionNames.isTemp()) {
ErrorReport.reportDdlException(ErrorCode.ERR_COMMON_ERROR,
"Do not support backup temp partitions");
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
index f957f9c0ec5..5ce91f00ac4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java
@@ -448,10 +448,15 @@ public class BackupJob extends AbstractJob {
// check backup table again
if (backupTableRef.getPartitionNames() != null) {
for (String partName :
backupTableRef.getPartitionNames().getPartitionNames()) {
- Partition partition = olapTable.getPartition(partName);
+ Partition partition = olapTable.getPartition(partName, false);
// exclude tmp partitions
if (partition == null) {
- status = new Status(ErrCode.NOT_FOUND, "partition " +
partName
- + " does not exist in table" +
backupTableRef.getName().getTbl());
+ if (olapTable.getPartition(partName, true) != null) {
+ status = new Status(ErrCode.NOT_FOUND, "backup tmp
partition " + partName
+ + " in table " + backupTableRef.getName().getTbl()
+ " is not supported");
+ } else {
+ status = new Status(ErrCode.NOT_FOUND, "partition " +
partName
+ + " does not exist in table " +
backupTableRef.getName().getTbl());
+ }
return;
}
}
@@ -460,10 +465,10 @@ public class BackupJob extends AbstractJob {
// create snapshot tasks
List<Partition> partitions = Lists.newArrayList();
if (backupTableRef.getPartitionNames() == null) {
- partitions.addAll(olapTable.getPartitions());
+ partitions.addAll(olapTable.getPartitions()); // no temp
partitions in OlapTable.getPartitions()
} else {
for (String partName :
backupTableRef.getPartitionNames().getPartitionNames()) {
- Partition partition = olapTable.getPartition(partName);
+ Partition partition = olapTable.getPartition(partName, false);
// exclude tmp partitions
partitions.add(partition);
}
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index 57f42d2c882..bfd6073e3ff 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -1346,6 +1346,14 @@ public class OlapTable extends Table {
}
}
+ if (isForBackup) {
+ // drop all tmp partitions in copied table
+ for (Partition partition :
copied.tempPartitions.getAllPartitions()) {
+ copied.partitionInfo.dropPartition(partition.getId());
+ }
+ copied.tempPartitions = new TempPartitions();
+ }
+
if (reservedPartitions == null || reservedPartitions.isEmpty()) {
// reserve all
return copied;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]