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()) {