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]

Reply via email to