fix 数据源创建失败缺少cause(#653) (#657)

1. 修复(#653) 为所有的数据源创建时进行初始化的都添加统一的异常包装返回.
This commit is contained in:
Alvin Kwok 2024-07-23 09:41:39 +08:00 committed by GitHub
parent 1e4d58ff22
commit f93fff49c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 28 additions and 8 deletions

View File

@ -87,7 +87,7 @@ public class BasicDataSourceCreator implements DataSourceCreator {
return (DataSource) buildMethod.invoke(o6); return (DataSource) buildMethod.invoke(o6);
} catch (Exception e) { } catch (Exception e) {
throw new ErrorCreateDataSourceException( throw new ErrorCreateDataSourceException(
"dynamic-datasource create basic database named " + dataSourceProperty.getPoolName() + " error"); "dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
} }
} }

View File

@ -20,6 +20,7 @@ import cn.beecp.BeeDataSourceConfig;
import com.baomidou.dynamic.datasource.creator.DataSourceCreator; import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
import com.baomidou.dynamic.datasource.creator.DataSourceProperty; import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
import com.baomidou.dynamic.datasource.enums.DdConstants; import com.baomidou.dynamic.datasource.enums.DdConstants;
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator; import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils; import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -66,7 +67,12 @@ public class BeeCpDataSourceCreator implements DataSourceCreator {
config.setDriverClassName(driverClassName); config.setDriverClassName(driverClassName);
} }
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) { if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
try {
return new BeeDataSource(config); return new BeeDataSource(config);
} catch (Exception e) {
throw new ErrorCreateDataSourceException(
"dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
}
} }
BeeDataSource beeDataSource = new BeeDataSource(); BeeDataSource beeDataSource = new BeeDataSource();
try { try {

View File

@ -18,6 +18,7 @@ package com.baomidou.dynamic.datasource.creator.dbcp;
import com.baomidou.dynamic.datasource.creator.DataSourceCreator; import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
import com.baomidou.dynamic.datasource.creator.DataSourceProperty; import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
import com.baomidou.dynamic.datasource.enums.DdConstants; import com.baomidou.dynamic.datasource.enums.DdConstants;
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator; import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils; import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -53,7 +54,13 @@ public class Dbcp2DataSourceCreator implements DataSourceCreator {
dataSource.setDriverClassName(driverClassName); dataSource.setDriverClassName(driverClassName);
} }
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) { if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
try {
dataSource.start(); dataSource.start();
}catch (Exception e) {
throw new ErrorCreateDataSourceException(
"dynamic-datasource create Dbcp2 database named " + dataSourceProperty.getPoolName() + " error", e);
}
} }
return dataSource; return dataSource;
} }

View File

@ -123,7 +123,7 @@ public class DruidDataSourceCreator implements DataSourceCreator {
try { try {
configMethod.invoke(dataSource, properties); configMethod.invoke(dataSource, properties);
} catch (Exception ignore) { } catch (Exception ignore) {
// Druid only prints logs when copying property errors
} }
//连接参数单独设置 //连接参数单独设置
dataSource.setConnectProperties(config.getConnectionProperties()); dataSource.setConnectProperties(config.getConnectionProperties());
@ -135,8 +135,9 @@ public class DruidDataSourceCreator implements DataSourceCreator {
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) { if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
try { try {
dataSource.init(); dataSource.init();
} catch (SQLException e) { } catch (Exception e) {
throw new ErrorCreateDataSourceException("druid create error", e); throw new ErrorCreateDataSourceException(
"dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
} }
} }
return dataSource; return dataSource;

View File

@ -18,6 +18,7 @@ package com.baomidou.dynamic.datasource.creator.hikaricp;
import com.baomidou.dynamic.datasource.creator.DataSourceCreator; import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
import com.baomidou.dynamic.datasource.creator.DataSourceProperty; import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
import com.baomidou.dynamic.datasource.enums.DdConstants; import com.baomidou.dynamic.datasource.enums.DdConstants;
import com.baomidou.dynamic.datasource.exception.ErrorCreateDataSourceException;
import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator; import com.baomidou.dynamic.datasource.toolkit.ConfigMergeCreator;
import com.baomidou.dynamic.datasource.toolkit.DsStrUtils; import com.baomidou.dynamic.datasource.toolkit.DsStrUtils;
import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariConfig;
@ -82,14 +83,19 @@ public class HikariDataSourceCreator implements DataSourceCreator {
config.setDriverClassName(driverClassName); config.setDriverClassName(driverClassName);
} }
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) { if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
try {
return new HikariDataSource(config); return new HikariDataSource(config);
}catch (Exception e){
throw new ErrorCreateDataSourceException(
"dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
}
} }
config.validate(); config.validate();
HikariDataSource dataSource = new HikariDataSource(); HikariDataSource dataSource = new HikariDataSource();
try { try {
configCopyMethod.invoke(config, dataSource); configCopyMethod.invoke(config, dataSource);
} catch (IllegalAccessException | InvocationTargetException e) { } catch (IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException("HikariConfig failed to copy to HikariDataSource", e); throw new ErrorCreateDataSourceException("HikariConfig failed to copy to HikariDataSource", e);
} }
return dataSource; return dataSource;
} }