From b01856a06764c70caffd91d16da8a0058093d404 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 11 Oct 2024 23:09:13 +0800 Subject: [PATCH] [improvement](jdbc catalog) Print more errors when Jdbc Catalog fails to obtain a connection on FE --- .../doris/datasource/jdbc/client/JdbcClient.java | 5 +++-- .../jdbc/client/JdbcClientException.java | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java index 0e57f989df34cb..eccfbe7ae8e98a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java @@ -175,8 +175,9 @@ public Connection getConnection() throws JdbcClientException { Thread.currentThread().setContextClassLoader(this.classLoader); conn = dataSource.getConnection(); } catch (Exception e) { - String errorMessage = String.format("Can not connect to jdbc due to error: %s, Catalog name: %s", - e.getMessage(), this.getCatalogName()); + String errorMessage = String.format( + "Catalog `%s` can not connect to jdbc due to error: %s", + this.getCatalogName(), JdbcClientException.getAllExceptionMessages(e)); throw new JdbcClientException(errorMessage, e); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java index 7fcea7aa61aa2f..b07662459daa5b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java @@ -48,4 +48,19 @@ private static Object[] escapePercentInArgs(Object... args) { } return escapedArgs; } + + public static String getAllExceptionMessages(Throwable throwable) { + StringBuilder sb = new StringBuilder(); + while (throwable != null) { + String message = throwable.getMessage(); + if (message != null && !message.isEmpty()) { + if (sb.length() > 0) { + sb.append(" | Caused by: "); + } + sb.append(message); + } + throwable = throwable.getCause(); + } + return sb.toString(); + } }