From fd76d2448eda42493848eba2daef0e53c5826235 Mon Sep 17 00:00:00 2001 From: games647 Date: Mon, 4 Jun 2018 21:28:19 +0200 Subject: [PATCH] Add advanced options for the connection pool (Fixes #210) --- .../games647/fastlogin/core/AuthStorage.java | 12 +++--------- .../fastlogin/core/shared/FastLoginCore.java | 17 +++++++++++------ core/src/main/resources/config.yml | 4 ++++ 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/com/github/games647/fastlogin/core/AuthStorage.java b/core/src/main/java/com/github/games647/fastlogin/core/AuthStorage.java index 90b0c469..6c90eeed 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/AuthStorage.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/AuthStorage.java @@ -32,17 +32,11 @@ public class AuthStorage { private final FastLoginCore core; private final HikariDataSource dataSource; - public AuthStorage(FastLoginCore core, String driver, String host, int port, String databasePath - , String user, String pass, boolean useSSL) { + public AuthStorage(FastLoginCore core, String host, int port, String databasePath, + HikariConfig config, boolean useSSL) { this.core = core; - - HikariConfig config = new HikariConfig(); config.setPoolName(core.getPlugin().getName()); - config.setUsername(user); - config.setPassword(pass); - config.setDriverClassName(driver); - //a try to fix https://www.spigotmc.org/threads/fastlogin.101192/page-26#post-1874647 Properties properties = new Properties(); properties.setProperty("date_string_format", "yyyy-MM-dd HH:mm:ss"); @@ -55,7 +49,7 @@ public class AuthStorage { } String jdbcUrl = "jdbc:"; - if (driver.contains("sqlite")) { + if (config.getDriverClassName().contains("sqlite")) { String pluginFolder = core.getPlugin().getPluginFolder().toAbsolutePath().toString(); databasePath = databasePath.replace("{pluginDir}", pluginFolder); diff --git a/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java b/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java index b17ba03b..9b676354 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java @@ -8,6 +8,7 @@ import com.github.games647.fastlogin.core.hooks.AuthPlugin; import com.github.games647.fastlogin.core.hooks.DefaultPasswordGenerator; import com.github.games647.fastlogin.core.hooks.PasswordGenerator; import com.google.common.net.HostAndPort; +import com.zaxxer.hikari.HikariConfig; import java.io.IOException; import java.io.InputStream; @@ -150,8 +151,9 @@ public class FastLoginCore

> { } public boolean setupDatabase() { - String driver = config.getString("driver"); - if (!checkDriver(driver)) { + HikariConfig databaseConfig = new HikariConfig(); + databaseConfig.setDriverClassName(config.getString("driver")); + if (!checkDriver(databaseConfig.getDriverClassName())) { return false; } @@ -159,12 +161,15 @@ public class FastLoginCore

> { int port = config.get("port", 3306); String database = config.getString("database"); - String user = config.get("username", ""); - String password = config.get("password", ""); - boolean useSSL = config.get("useSSL", false); - storage = new AuthStorage(this, driver, host, port, database, user, password, useSSL); + databaseConfig.setUsername(config.get("username", "")); + databaseConfig.setPassword(config.get("password", "")); + + databaseConfig.setConnectionTimeout(config.getInt("timeout", 30) * 1000); + databaseConfig.setMaxLifetime(config.getInt("lifetime", 30) * 1000); + + storage = new AuthStorage(this, host, port, database, databaseConfig, useSSL); try { storage.createTables(); return true; diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index 510f3585..28715868 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -174,6 +174,10 @@ database: '{pluginDir}/FastLogin.db' #username: myUser #password: myPassword +# Advanced Connection Pool settings in seconds +#timeout: 30 +#lifetime: 30 + # It's strongly recommended to enable SSL and setup a SSL certificate if the MySQL server isn't running on the same # machine #useSSL: false