diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java index 2ca083c73fb1b1..4ebdde3d7451c7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java @@ -134,6 +134,8 @@ import org.apache.doris.datasource.hive.HMSCachedClientFactory; import org.apache.doris.datasource.property.constants.HMSProperties; import org.apache.doris.external.elasticsearch.EsRepository; +import org.apache.doris.nereids.trees.plans.commands.info.DropMTMVInfo; +import org.apache.doris.nereids.trees.plans.commands.info.TableNameInfo; import org.apache.doris.persist.AlterDatabasePropertyInfo; import org.apache.doris.persist.AutoIncrementIdUpdateLog; import org.apache.doris.persist.ColocatePersistInfo; @@ -2590,7 +2592,20 @@ private void createOlapTable(Database db, CreateTableStmt stmt) throws UserExcep throw e; } if (olapTable instanceof MTMV) { - Env.getCurrentEnv().getMtmvService().createMTMV((MTMV) olapTable); + try { + Env.getCurrentEnv().getMtmvService().createMTMV((MTMV) olapTable); + } catch (Throwable t) { + LOG.warn("create mv failed, start rollback, error msg: " + t.getMessage()); + try { + DropMTMVInfo dropMTMVInfo = new DropMTMVInfo( + new TableNameInfo(olapTable.getDatabase().getFullName(), olapTable.getName()), true); + Env.getCurrentEnv().dropTable(dropMTMVInfo.translateToLegacyStmt()); + } catch (Throwable throwable) { + LOG.warn("rollback mv failed, please drop mv by manual, error msg: " + t.getMessage()); + } + throw t; + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java index 81da2946ff1223..9f30c6774a449e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVUtil.java @@ -470,7 +470,7 @@ private static boolean isSync(long visibleVersionTime, Set tables try { table = getTable(baseTableInfo); } catch (AnalysisException e) { - e.printStackTrace(); + LOG.warn("get table failed, {}", baseTableInfo, e); return false; } if (excludedTriggerTables.contains(table.getName())) {