This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 6bde53b102195bdcfcaf6c648f499a56c85331f4
Author: Mingyu Chen <morning...@163.com>
AuthorDate: Sat Jan 14 09:41:37 2023 +0800

    [fix](multi-catalog) fix bug that replay init catalog may happen after 
catalog is dropped (#15919)
---
 build.sh                                               |  1 +
 .../java/org/apache/doris/datasource/CatalogMgr.java   | 18 ++++++++++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/build.sh b/build.sh
index 9ecf89dfca..130018a18b 100755
--- a/build.sh
+++ b/build.sh
@@ -145,6 +145,7 @@ if [[ "$#" == 1 ]]; then
     BUILD_META_TOOL='OFF'
     BUILD_SPARK_DPP=1
     BUILD_HIVE_UDF=1
+    BUILD_JAVA_UDF=1
     CLEAN=0
 else
     while true; do
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 e6cf9a4ee1..17b71aefaa 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
@@ -49,7 +49,6 @@ import org.apache.doris.persist.gson.GsonUtils;
 import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.qe.ShowResultSet;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.gson.annotations.SerializedName;
@@ -515,17 +514,27 @@ public class CatalogMgr implements Writable, 
GsonPostProcessable {
         }
     }
 
+    // init catalog and init db can happen at any time,
+    // even after catalog or db is dropped.
+    // Because it may already hold the catalog or db object before they are 
being dropped.
+    // So just skip the edit log if object does not exist.
     public void replayInitCatalog(InitCatalogLog log) {
         ExternalCatalog catalog = (ExternalCatalog) 
idToCatalog.get(log.getCatalogId());
-        Preconditions.checkArgument(catalog != null);
+        if (catalog == null) {
+            return;
+        }
         catalog.replayInitCatalog(log);
     }
 
     public void replayInitExternalDb(InitDatabaseLog log) {
         ExternalCatalog catalog = (ExternalCatalog) 
idToCatalog.get(log.getCatalogId());
-        Preconditions.checkArgument(catalog != null);
+        if (catalog == null) {
+            return;
+        }
         ExternalDatabase db = catalog.getDbForReplay(log.getDbId());
-        Preconditions.checkArgument(db != null);
+        if (db == null) {
+            return;
+        }
         db.replayInitDb(log, catalog);
     }
 
@@ -598,3 +607,4 @@ public class CatalogMgr implements Writable, 
GsonPostProcessable {
         internalCatalog = (InternalCatalog) 
idToCatalog.get(InternalCatalog.INTERNAL_DS_ID);
     }
 }
+


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to