From 2ef077e4b80d960cabcf3d67c35deb5e7441d669 Mon Sep 17 00:00:00 2001 From: wuwenchi Date: Thu, 23 May 2024 00:03:25 +0800 Subject: [PATCH] [bugfix](tvf)catch exception for fetching SchemaTableData for 2.0 (#35109) bp: #34856 --- .../external/iceberg/IcebergMetadataCache.java | 3 +++ .../doris/service/FrontendServiceImpl.java | 17 +++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/external/iceberg/IcebergMetadataCache.java b/fe/fe-core/src/main/java/org/apache/doris/planner/external/iceberg/IcebergMetadataCache.java index 93847190144858..4658ba8b8a4ad8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/external/iceberg/IcebergMetadataCache.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/external/iceberg/IcebergMetadataCache.java @@ -65,6 +65,9 @@ public 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.getId(), params.getDatabase(), params.getTable()); List ifPresent = snapshotListCache.getIfPresent(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 9128220d9b00f2..36fdec157ac6c4 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 @@ -2234,13 +2234,18 @@ public TFrontendPingFrontendResult ping(TFrontendPingFrontendRequest request) th @Override public TFetchSchemaTableDataResult fetchSchemaTableData(TFetchSchemaTableDataRequest request) throws TException { - switch (request.getSchemaTableName()) { - case METADATA_TABLE: - return MetadataGenerator.getMetadataTable(request); - default: - break; + try { + switch (request.getSchemaTableName()) { + case METADATA_TABLE: + return MetadataGenerator.getMetadataTable(request); + default: + break; + } + return MetadataGenerator.errorResult("Fetch schema table name is not set"); + } catch (Exception e) { + LOG.warn("Failed to fetchSchemaTableData", e); + return MetadataGenerator.errorResult(e.getMessage()); } - return MetadataGenerator.errorResult("Fetch schema table name is not set"); } private TNetworkAddress getClientAddr() {