From 9fa943ab1d83171315703cda4dd01b8b8ab0acd5 Mon Sep 17 00:00:00 2001 From: wubiao02 Date: Fri, 7 Mar 2025 15:08:31 +0800 Subject: [PATCH] [Bug] Fix accidental table deletion during restore job --- .../java/org/apache/doris/backup/RestoreJob.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 2e5ea7977be8d1..a445a3b0a6de41 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 @@ -693,6 +693,9 @@ private void checkAndPrepareMeta() { // Check and prepare meta objects. Map batchTaskPerTable = new HashMap<>(); + + // The tables that are restored but not committed, because the table name may be changed. + List stagingRestoreTables = Lists.newArrayList(); db.readLock(); try { for (Map.Entry olapTableEntry : jobInfo.backupOlapTableObjects.entrySet()) { @@ -882,7 +885,7 @@ private void checkAndPrepareMeta() { if (LOG.isDebugEnabled()) { LOG.debug("put remote table {} to restoredTbls", remoteOlapTbl.getName()); } - restoredTbls.add(remoteOlapTbl); + stagingRestoreTables.add(remoteOlapTbl); } } // end of all restore olap tables @@ -911,7 +914,7 @@ private void checkAndPrepareMeta() { String srcDbName = jobInfo.dbName; remoteView.resetViewDefForRestore(srcDbName, db.getName()); remoteView.resetIdsForRestore(env); - restoredTbls.add(remoteView); + stagingRestoreTables.add(remoteView); } } @@ -932,7 +935,7 @@ private void checkAndPrepareMeta() { } } else { remoteOdbcTable.resetIdsForRestore(env); - restoredTbls.add(remoteOdbcTable); + stagingRestoreTables.add(remoteOdbcTable); } } @@ -965,7 +968,7 @@ private void checkAndPrepareMeta() { } // generate create replica task for all restored tables - for (Table restoreTbl : restoredTbls) { + for (Table restoreTbl : stagingRestoreTables) { if (restoreTbl.getType() == TableType.OLAP) { OlapTable restoreOlapTable = (OlapTable) restoreTbl; for (Partition restorePart : restoreOlapTable.getPartitions()) { @@ -991,6 +994,7 @@ private void checkAndPrepareMeta() { tableName = tableAliasWithAtomicRestore(tableName); } restoreTbl.setName(tableName); + restoredTbls.add(restoreTbl); } if (LOG.isDebugEnabled()) {