This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 04d9ddbe264507da2a77f7560e0498595317431b Author: zhangdong <493738...@qq.com> AuthorDate: Sun Jul 23 11:24:20 2023 +0800 [fix](catalog) do not call makeSureInitialized when create/drop table/db from hms meta event (#21941) Supplement to #21104 --- .../org/apache/doris/catalog/external/ExternalDatabase.java | 6 +++++- .../apache/doris/catalog/external/HMSExternalDatabase.java | 13 ++++++++++++- .../doris/catalog/external/IcebergExternalDatabase.java | 5 ++--- .../doris/catalog/external/PaimonExternalDatabase.java | 5 ++--- .../main/java/org/apache/doris/datasource/CatalogMgr.java | 8 ++++---- .../java/org/apache/doris/datasource/ExternalCatalog.java | 4 ++-- .../org/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<T extends ExternalTable> 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<HMSExternalTable> { } @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<IcebergExternalTab } @Override - public void dropTable(String tableName) { + public void dropTableForReplay(String tableName) { LOG.debug("drop table [{}]", tableName); - makeSureInitialized(); Long tableId = tableNameToId.remove(tableName); if (tableId == null) { LOG.warn("drop table [{}] failed", tableName); @@ -60,7 +59,7 @@ public class IcebergExternalDatabase extends ExternalDatabase<IcebergExternalTab } @Override - public void replayCreateTableFromEvent(String tableName, long tableId) { + public void createTableForReplay(String tableName, long tableId) { LOG.debug("create table [{}]", tableName); tableNameToId.put(tableName, tableId); IcebergExternalTable table = new IcebergExternalTable(tableId, tableName, name, diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/PaimonExternalDatabase.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/PaimonExternalDatabase.java index 34cc7b96c0..a839b31298 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/PaimonExternalDatabase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/PaimonExternalDatabase.java @@ -49,9 +49,8 @@ public class PaimonExternalDatabase extends ExternalDatabase<PaimonExternalTable } @Override - public void dropTable(String tableName) { + public void dropTableForReplay(String tableName) { LOG.debug("drop table [{}]", tableName); - makeSureInitialized(); Long tableId = tableNameToId.remove(tableName); if (tableId == null) { LOG.warn("drop table [{}] failed", tableName); @@ -60,7 +59,7 @@ public class PaimonExternalDatabase extends ExternalDatabase<PaimonExternalTable } @Override - public void replayCreateTableFromEvent(String tableName, long tableId) { + public void createTableForReplay(String tableName, long tableId) { LOG.debug("create table [{}]", tableName); tableNameToId.put(tableName, tableId); PaimonExternalTable table = new PaimonExternalTable(tableId, tableName, name, diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java index 12fb7215f9..ca5c8faf8c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java @@ -738,7 +738,7 @@ public class CatalogMgr implements Writable, GsonPostProcessable { } db.writeLock(); try { - db.dropTable(table.getName()); + db.dropTableForReplay(table.getName()); db.setLastUpdateTime(log.getLastUpdateTime()); } finally { db.writeUnlock(); @@ -809,7 +809,7 @@ public class CatalogMgr implements Writable, GsonPostProcessable { } db.writeLock(); try { - db.replayCreateTableFromEvent(log.getTableName(), log.getTableId()); + db.createTableForReplay(log.getTableName(), log.getTableId()); db.setLastUpdateTime(log.getLastUpdateTime()); } finally { db.writeUnlock(); @@ -855,7 +855,7 @@ public class CatalogMgr implements Writable, GsonPostProcessable { LOG.warn("No db found with id:[{}], it may have been dropped.", log.getDbId()); return; } - catalog.dropDatabase(db.getFullName()); + catalog.dropDatabaseForReplay(db.getFullName()); Env.getCurrentEnv().getExtMetaCacheMgr().invalidateDbCache(catalog.getId(), db.getFullName()); } finally { writeUnlock(); @@ -896,7 +896,7 @@ public class CatalogMgr implements Writable, GsonPostProcessable { LOG.warn("No catalog found with id:[{}], it may have been dropped.", log.getCatalogId()); return; } - catalog.createDatabase(log.getDbId(), log.getDbName()); + catalog.createDatabaseForReplay(log.getDbId(), log.getDbName()); } finally { writeUnlock(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java index 20ac85f53f..f070cc6034 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java @@ -531,11 +531,11 @@ public abstract class ExternalCatalog dbNameToId.put(ClusterNamespace.getNameFromFullName(db.getFullName()), db.getId()); } - public void dropDatabase(String dbName) { + public void dropDatabaseForReplay(String dbName) { throw new NotImplementedException("dropDatabase not implemented"); } - public void createDatabase(long dbId, String dbName) { + public void createDatabaseForReplay(long dbId, String dbName) { throw new NotImplementedException("createDatabase not implemented"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/HMSExternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/HMSExternalCatalog.java index c3e71db222..d86ccc31c1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/HMSExternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/HMSExternalCatalog.java @@ -260,9 +260,8 @@ public class HMSExternalCatalog extends ExternalCatalog { } @Override - public void dropDatabase(String dbName) { + public void dropDatabaseForReplay(String dbName) { LOG.debug("drop database [{}]", dbName); - makeSureInitialized(); Long dbId = dbNameToId.remove(dbName); if (dbId == null) { LOG.warn("drop database [{}] failed", dbName); @@ -271,8 +270,7 @@ public class HMSExternalCatalog extends ExternalCatalog { } @Override - public void createDatabase(long dbId, String dbName) { - makeSureInitialized(); + public void createDatabaseForReplay(long dbId, String dbName) { LOG.debug("create database [{}]", dbName); dbNameToId.put(dbName, dbId); ExternalDatabase<? extends ExternalTable> db = getDbForInit(dbName, dbId, logType); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org