From bd41341a97a009a97d4f57f24a1e0cdf04720b8a Mon Sep 17 00:00:00 2001 From: wuwenchi Date: Tue, 14 May 2024 23:40:13 +0800 Subject: [PATCH] [bugfix](tvf)catch exception for fetching SchemaTableData #34856 --- .../iceberg/IcebergMetadataCache.java | 3 +++ .../doris/service/FrontendServiceImpl.java | 23 +++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataCache.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataCache.java index 67d6e6cb66..acda08b737 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataCache.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataCache.java @@ -72,6 +72,9 @@ public class IcebergMetadataCache { public List getSnapshotList(TIcebergMetadataParams params) throws UserException { CatalogIf catalog = Env.getCurrentEnv().getCatalogMgr().getCatalog(params.getCatalog()); + if (catalog == null) { + throw new UserException("The specified catalog does not exist:" + params.getCatalog()); + } IcebergMetadataCacheKey key = IcebergMetadataCacheKey.of(catalog, params.getDatabase(), params.getTable()); return snapshotListCache.get(key); diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java index 68ecf1b08e..6b262baa2e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java @@ -2303,15 +2303,20 @@ public class FrontendServiceImpl implements FrontendService.Iface { @Override public TFetchSchemaTableDataResult fetchSchemaTableData(TFetchSchemaTableDataRequest request) throws TException { - if (!request.isSetSchemaTableName()) { - return MetadataGenerator.errorResult("Fetch schema table name is not set"); - } - // tvf queries - if (request.getSchemaTableName() == TSchemaTableName.METADATA_TABLE) { - return MetadataGenerator.getMetadataTable(request); - } else { - // database information_schema's tables - return MetadataGenerator.getSchemaTableData(request); + try { + if (!request.isSetSchemaTableName()) { + return MetadataGenerator.errorResult("Fetch schema table name is not set"); + } + // tvf queries + if (request.getSchemaTableName() == TSchemaTableName.METADATA_TABLE) { + return MetadataGenerator.getMetadataTable(request); + } else { + // database information_schema's tables + return MetadataGenerator.getSchemaTableData(request); + } + } catch (Exception e) { + LOG.warn("Failed to fetchSchemaTableData", e); + return MetadataGenerator.errorResult(e.getMessage()); } }