[FIX] MySQLSourceConfig HikariCP

This commit is contained in:
microwin7 2021-09-04 08:51:34 +03:00
parent c0b1373542
commit 62991ed709

View file

@ -32,8 +32,8 @@ public final class MySQLSourceConfig implements AutoCloseable {
private String username;
private String password;
private String database;
private String timeZone;
private boolean enableHikari;
private String timezone;
private boolean useHikari;
// Cache
private transient DataSource source;
@ -93,22 +93,26 @@ public synchronized Connection getConnection() throws SQLException {
mysqlSource.setPassword(password);
mysqlSource.setDatabaseName(database);
mysqlSource.setTcpNoDelay(true);
if (timeZone != null) mysqlSource.setServerTimezone(timeZone);
if (timezone != null) mysqlSource.setServerTimezone(timezone);
hikari = false;
// Try using HikariCP
source = mysqlSource;
if (enableHikari) {
if (useHikari) {
try {
Class.forName("com.zaxxer.hikari.HikariDataSource");
hikari = true; // Used for shutdown. Not instanceof because of possible classpath error
HikariConfig cfg = new HikariConfig();
cfg.setDataSource(mysqlSource);
cfg.setPoolName(poolName);
cfg.setMaximumPoolSize(MAX_POOL_SIZE);
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDataSource(mysqlSource);
hikariConfig.setPoolName(poolName);
hikariConfig.setMinimumIdle(1);
hikariConfig.setMaximumPoolSize(MAX_POOL_SIZE);
hikariConfig.setConnectionTestQuery("SELECT 1");
hikariConfig.setConnectionTimeout(1000);
hikariConfig.setAutoCommit(true);
hikariConfig.setLeakDetectionThreshold(2000);
// Set HikariCP pool
// Replace source with hds
source = new HikariDataSource(cfg);
logger.warn("HikariCP pooling enabled for '{}'", poolName);
source = new HikariDataSource(hikariConfig);
} catch (ClassNotFoundException ignored) {
logger.debug("HikariCP isn't in classpath for '{}'", poolName);
}