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

Reply via email to