From 8118f56487628b9f54110cb4bd78484807832fcf Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 11 Oct 2024 23:09:13 +0800 Subject: [PATCH 1/2] [improvement](jdbc catalog) Print more errors when Jdbc Catalog fails to obtain a connection on FE --- .../doris/datasource/jdbc/client/JdbcClient.java | 6 ++++-- .../jdbc/client/JdbcClientException.java | 15 +++++++++++++++ 2 files changed, 19 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 0832aa68f00372..5fdb34261fc166 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 @@ -137,6 +137,7 @@ private void initializeDataSource(JdbcClientConfig config) { dataSource.setConnectionTimeout(config.getConnectionPoolMaxWaitTime()); // default 5000 dataSource.setMaxLifetime(config.getConnectionPoolMaxLifeTime()); // default 30 min dataSource.setIdleTimeout(config.getConnectionPoolMaxLifeTime() / 2L); // default 15 min + dataSource.setInitializationFailTimeout(-1); LOG.info("JdbcClient set" + " ConnectionPoolMinSize = " + config.getConnectionPoolMinSize() + ", ConnectionPoolMaxSize = " + config.getConnectionPoolMaxSize() @@ -178,8 +179,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(); + } } From 1b52dee915060c3125223eda9d4c8c304d39f93f Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 11 Oct 2024 23:11:24 +0800 Subject: [PATCH 2/2] 1 --- .../java/org/apache/doris/datasource/jdbc/client/JdbcClient.java | 1 - 1 file changed, 1 deletion(-) 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 5fdb34261fc166..8c4ada01774559 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 @@ -137,7 +137,6 @@ private void initializeDataSource(JdbcClientConfig config) { dataSource.setConnectionTimeout(config.getConnectionPoolMaxWaitTime()); // default 5000 dataSource.setMaxLifetime(config.getConnectionPoolMaxLifeTime()); // default 30 min dataSource.setIdleTimeout(config.getConnectionPoolMaxLifeTime() / 2L); // default 15 min - dataSource.setInitializationFailTimeout(-1); LOG.info("JdbcClient set" + " ConnectionPoolMinSize = " + config.getConnectionPoolMinSize() + ", ConnectionPoolMaxSize = " + config.getConnectionPoolMaxSize()