You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/04/14 13:19:28 UTC
[doris] 04/04: [fix](info_db) avoid infodb query timeout when external catalog info is too large or is not reachable (#18662)
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 ca78c132d48bde99b940f2268d4e6fd94b1e31b7
Author: Mingyu Chen <mo...@163.com>
AuthorDate: Fri Apr 14 14:40:31 2023 +0800
[fix](info_db) avoid infodb query timeout when external catalog info is too large or is not reachable (#18662)
When query tables in information_schema databases, it may timeout due to:
There are external catalog with too many tables.
The external catalog is unreachable
So I add a new FE config infodb_support_ext_catalog.
The default is false, which means that when select from tables in information_schema database,
the result will not contain the information of the table in external catalog.
Describe your changes.
---
docs/en/docs/admin-manual/config/fe-config.md | 14 ++++++++++++++
docs/zh-CN/docs/admin-manual/config/fe-config.md | 15 +++++++++++++++
.../src/main/java/org/apache/doris/common/Config.java | 9 +++++++++
.../java/org/apache/doris/planner/SchemaScanNode.java | 3 +++
4 files changed, 41 insertions(+)
diff --git a/docs/en/docs/admin-manual/config/fe-config.md b/docs/en/docs/admin-manual/config/fe-config.md
index d661c32edc..3ca3c32c66 100644
--- a/docs/en/docs/admin-manual/config/fe-config.md
+++ b/docs/en/docs/admin-manual/config/fe-config.md
@@ -2386,3 +2386,17 @@ MasterOnly:true
Maximum number of error tablet showed in broker load.
+#### `infodb_support_ext_catalog`
+
+<version since="1.2.4"></version>
+
+Default: false
+
+IsMutable: true
+
+MasterOnly: false
+
+If false, when select from tables in information_schema database,
+the result will not contain the information of the table in external catalog.
+This is to avoid query time when external catalog is not reachable.
+
diff --git a/docs/zh-CN/docs/admin-manual/config/fe-config.md b/docs/zh-CN/docs/admin-manual/config/fe-config.md
index 2888279e0a..01d6abbdc7 100644
--- a/docs/zh-CN/docs/admin-manual/config/fe-config.md
+++ b/docs/zh-CN/docs/admin-manual/config/fe-config.md
@@ -2449,3 +2449,18 @@ hive partition 的最大缓存数量。
是否为 Master FE 节点独有的配置项:true
broker load job 保存的失败tablet 信息的最大数量
+
+#### `infodb_support_ext_catalog`
+
+<version since="1.2.4"></version>
+
+默认值:false
+
+是否可以动态配置:true
+
+是否为 Master FE 节点独有的配置项:false
+
+当设置为 false 时,查询 `information_schema` 中的表时,将不再返回 external catalog 中的表的信息。
+
+这个参数主要用于避免因 external catalog 无法访问、信息过多等原因导致的查询 `information_schema` 超时的问题。
+
diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
index 1c0b0acc6a..145b9fb894 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
@@ -1993,5 +1993,14 @@ public class Config extends ConfigBase {
*/
@ConfField(mutable = false, masterOnly = false)
public static String mysql_ssl_default_certificate_password = "doris";
+
+ /**
+ * If false, when select from tables in information_schema database,
+ * the result will not contain the information of the table in external catalog.
+ * This is to avoid query time when external catalog is not reachable.
+ * TODO: this is a temp solution, we should support external catalog in the future.
+ */
+ @ConfField(mutable = true)
+ public static boolean infodb_support_ext_catalog = false;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SchemaScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SchemaScanNode.java
index f00c8683f3..2107cb6c8e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/SchemaScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SchemaScanNode.java
@@ -23,6 +23,7 @@ import org.apache.doris.catalog.SchemaTable;
import org.apache.doris.common.Config;
import org.apache.doris.common.UserException;
import org.apache.doris.common.util.Util;
+import org.apache.doris.datasource.InternalCatalog;
import org.apache.doris.qe.ConnectContext;
import org.apache.doris.service.FrontendOptions;
import org.apache.doris.statistics.StatisticalType;
@@ -96,6 +97,8 @@ public class SchemaScanNode extends ScanNode {
}
if (schemaCatalog != null) {
msg.schema_scan_node.setCatalog(schemaCatalog);
+ } else if (!Config.infodb_support_ext_catalog) {
+ msg.schema_scan_node.setCatalog(InternalCatalog.INTERNAL_CATALOG_NAME);
}
msg.schema_scan_node.show_hidden_cloumns = Util.showHiddenColumns();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org