From c1006a04252c35ef49f5b8be43311c5c46461622 Mon Sep 17 00:00:00 2001 From: qiye Date: Fri, 26 Jan 2024 21:11:16 +0800 Subject: [PATCH] [fix](ES catalog) throw exception when ES meta track failed (#30409) --- .../main/java/org/apache/doris/catalog/EsTable.java | 7 ++++--- .../external/elasticsearch/EsMetaStateTracker.java | 12 +++++++++++- .../java/org/apache/doris/planner/EsScanNode.java | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java index a06da2af05362a..a29c547fa9791a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java @@ -18,6 +18,7 @@ package org.apache.doris.catalog; import org.apache.doris.common.DdlException; +import org.apache.doris.common.UserException; import org.apache.doris.common.io.Text; import org.apache.doris.external.elasticsearch.EsMetaStateTracker; import org.apache.doris.external.elasticsearch.EsRestClient; @@ -140,15 +141,15 @@ public EsTable(long id, String name, List schema, TableType tableType) { super(id, name, tableType, schema); } - public Map fieldsContext() { + public Map fieldsContext() throws UserException { return esMetaStateTracker.searchContext().fetchFieldsContext(); } - public Map docValueContext() { + public Map docValueContext() throws UserException { return esMetaStateTracker.searchContext().docValueFieldsContext(); } - public List needCompatDateFields() { + public List needCompatDateFields() throws UserException { return esMetaStateTracker.searchContext().needCompatDateFields(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsMetaStateTracker.java b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsMetaStateTracker.java index 0b556e46c6269e..d3b1539df6fa3a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsMetaStateTracker.java +++ b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsMetaStateTracker.java @@ -18,6 +18,10 @@ package org.apache.doris.external.elasticsearch; import org.apache.doris.catalog.EsTable; +import org.apache.doris.common.UserException; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.LinkedList; import java.util.List; @@ -32,6 +36,8 @@ */ public class EsMetaStateTracker { + private static final Logger LOG = LogManager.getLogger(EsMetaStateTracker.class); + private List builtinSearchPhase = new LinkedList<>(); private SearchContext searchContext; @@ -41,7 +47,11 @@ public EsMetaStateTracker(EsRestClient client, EsTable esTable) { searchContext = new SearchContext(esTable); } - public SearchContext searchContext() { + public SearchContext searchContext() throws UserException { + if (searchContext == null) { + LOG.warn("ES meta state track failed, please check ES health status."); + throw new UserException("ES meta state track failed, please check ES health status."); + } return searchContext; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java index 5da04b1f813aef..16e6ed040b48d2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java @@ -314,7 +314,7 @@ public String getNodeExplainString(String prefix, TExplainLevel detailLevel) { return output.toString(); } - private void buildQuery() { + private void buildQuery() throws UserException { if (conjuncts.isEmpty()) { queryBuilder = QueryBuilders.matchAllQuery(); } else {