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);
} catch (Exception e) {
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.DataSourceProperty;
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.DsStrUtils;
import lombok.AllArgsConstructor;
@ -66,7 +67,12 @@ public class BeeCpDataSourceCreator implements DataSourceCreator {
config.setDriverClassName(driverClassName);
}
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
return new BeeDataSource(config);
try {
return new BeeDataSource(config);
} catch (Exception e) {
throw new ErrorCreateDataSourceException(
"dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
}
}
BeeDataSource beeDataSource = new BeeDataSource();
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.DataSourceProperty;
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.DsStrUtils;
import lombok.AllArgsConstructor;
@ -53,7 +54,13 @@ public class Dbcp2DataSourceCreator implements DataSourceCreator {
dataSource.setDriverClassName(driverClassName);
}
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
dataSource.start();
try {
dataSource.start();
}catch (Exception e) {
throw new ErrorCreateDataSourceException(
"dynamic-datasource create Dbcp2 database named " + dataSourceProperty.getPoolName() + " error", e);
}
}
return dataSource;
}

View File

@ -123,7 +123,7 @@ public class DruidDataSourceCreator implements DataSourceCreator {
try {
configMethod.invoke(dataSource, properties);
} catch (Exception ignore) {
// Druid only prints logs when copying property errors
}
//连接参数单独设置
dataSource.setConnectProperties(config.getConnectionProperties());
@ -135,8 +135,9 @@ public class DruidDataSourceCreator implements DataSourceCreator {
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
try {
dataSource.init();
} catch (SQLException e) {
throw new ErrorCreateDataSourceException("druid create error", e);
} catch (Exception e) {
throw new ErrorCreateDataSourceException(
"dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
}
}
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.DataSourceProperty;
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.DsStrUtils;
import com.zaxxer.hikari.HikariConfig;
@ -82,14 +83,19 @@ public class HikariDataSourceCreator implements DataSourceCreator {
config.setDriverClassName(driverClassName);
}
if (Boolean.FALSE.equals(dataSourceProperty.getLazy())) {
return new HikariDataSource(config);
try {
return new HikariDataSource(config);
}catch (Exception e){
throw new ErrorCreateDataSourceException(
"dynamic-datasource create datasource named [" + dataSourceProperty.getPoolName() + "] error", e);
}
}
config.validate();
HikariDataSource dataSource = new HikariDataSource();
try {
configCopyMethod.invoke(config, dataSource);
} 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;
}