From dfb5d4bc132913a7d3c2e0765dfd73dfbac48ea8 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Sun, 23 Jul 2023 11:24:20 +0800 Subject: [PATCH] [fix](catalog) do not call makeSureInitialized when create/drop table/db from hms meta event (#21941) Supplement to #21104 --- .../doris/catalog/external/ExternalDatabase.java | 6 +++++- .../doris/catalog/external/HMSExternalDatabase.java | 13 ++++++++++++- .../catalog/external/IcebergExternalDatabase.java | 5 ++--- .../catalog/external/PaimonExternalDatabase.java | 5 ++--- .../org/apache/doris/datasource/CatalogMgr.java | 8 ++++---- .../apache/doris/datasource/ExternalCatalog.java | 4 ++-- .../apache/doris/datasource/HMSExternalCatalog.java | 6 ++---- 7 files changed, 29 insertions(+), 18 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalDatabase.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalDatabase.java index 0a82d37ff3..fa2ecd4011 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalDatabase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalDatabase.java @@ -347,13 +347,17 @@ public abstract class ExternalDatabase throw new NotImplementedException("dropTable() is not implemented"); } + public void dropTableForReplay(String tableName) { + throw new NotImplementedException("replayDropTableFromEvent() is not implemented"); + } + @Override public CatalogIf getCatalog() { return extCatalog; } // Only used for sync hive metastore event - public void replayCreateTableFromEvent(String tableName, long tableId) { + public void createTableForReplay(String tableName, long tableId) { throw new NotImplementedException("createTable() is not implemented"); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalDatabase.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalDatabase.java index 093ebe8b40..d75f86bd08 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalDatabase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalDatabase.java @@ -74,7 +74,18 @@ public class HMSExternalDatabase extends ExternalDatabase { } @Override - public void replayCreateTableFromEvent(String tableName, long tableId) { + public void dropTableForReplay(String tableName) { + LOG.debug("replayDropTableFromEvent [{}]", tableName); + Long tableId = tableNameToId.remove(tableName); + if (tableId == null) { + LOG.warn("replayDropTableFromEvent [{}] failed", tableName); + return; + } + idToTbl.remove(tableId); + } + + @Override + public void createTableForReplay(String tableName, long tableId) { LOG.debug("create table [{}]", tableName); tableNameToId.put(tableName, tableId); HMSExternalTable table = getExternalTable(tableName, tableId, extCatalog); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/IcebergExternalDatabase.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/IcebergExternalDatabase.java index 8653c3e2dd..a915b3b241 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/IcebergExternalDatabase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/IcebergExternalDatabase.java @@ -49,9 +49,8 @@ public class IcebergExternalDatabase extends ExternalDatabase db = getDbForInit(dbName, dbId, logType);