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