From a871409259b08d0d84cc8045d279500854456938 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Tue, 19 Dec 2023 17:25:31 +0800 Subject: [PATCH] [feature](mtmv)after creating a materialized view, if other operations fail, roll back (#28621) after create mtmv, if create job failed,need drop mtmv --- .../doris/datasource/InternalCatalog.java | 17 ++++++++++++++++- .../java/org/apache/doris/mtmv/MTMVUtil.java | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) 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 dc332b96d0..a5bca6e46a 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.HMSCachedClient; 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; @@ -2591,7 +2593,20 @@ public class InternalCatalog implements CatalogIf { 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 308138157c..95db5bd070 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 @@ public class MTMVUtil { try { table = getTable(baseTableInfo); } catch (AnalysisException e) { - e.printStackTrace(); + LOG.warn("get table failed, {}", baseTableInfo, e); return false; } if (excludedTriggerTables.contains(table.getName())) {