diff --git a/gradle.properties b/gradle.properties index f3dd5bd..eb4d16a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = org.xbib name = database -version = 1.4.3 +version = 1.4.4 org.gradle.warning.mode = ALL diff --git a/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/Pool.java b/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/Pool.java index 2abe27e..150910c 100644 --- a/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/Pool.java +++ b/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/Pool.java @@ -176,7 +176,7 @@ public class Pool implements BagStateListener { public void quietlyCloseConnection(Connection connection, String closureReason) { if (connection != null) { try { - logger.log(Level.FINE, () -> MessageFormat.format("{0} closing connection {1} {2}", poolName, connection, closureReason)); + logger.log(Level.FINE, () -> MessageFormat.format("{0} closing connection {1} {2} with a timeout of 15 seconds", poolName, connection, closureReason)); try (connection) { setNetworkTimeout(connection, TimeUnit.SECONDS.toMillis(15)); } catch (SQLException e) { diff --git a/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/PoolConfig.java b/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/PoolConfig.java index 8508b00..b094205 100644 --- a/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/PoolConfig.java +++ b/jdbc-connection-pool/src/main/java/org/xbib/jdbc/connection/pool/PoolConfig.java @@ -92,14 +92,14 @@ public class PoolConfig { this.properties = properties; this.minIdle = -1; this.maxPoolSize = -1; - this.maxLifetime = TimeUnit.MINUTES.toMillis(30); - this.connectionTimeout = TimeUnit.SECONDS.toMillis(30); - this.validationTimeout = TimeUnit.SECONDS.toMillis(5); + this.maxLifetime = TimeUnit.MINUTES.toMillis(60); + this.connectionTimeout = TimeUnit.SECONDS.toMillis(15); + this.validationTimeout = TimeUnit.SECONDS.toMillis(15); this.idleTimeout = TimeUnit.MINUTES.toMillis(1); this.initializationFailTimeout = -1; this.isAutoCommit = true; // JDBC convention this.aliveBypassWindowMs = TimeUnit.MILLISECONDS.toMillis(500); - this.housekeepingPeriodMs = TimeUnit.SECONDS.toMillis(30); + this.housekeepingPeriodMs = TimeUnit.SECONDS.toMillis(60); } /** @@ -639,13 +639,11 @@ public class PoolConfig { } } if (connectionTimeout < 250) { - logger.log(Level.WARNING, "connectionTimeout is less than 250ms, setting to ms: " + - poolName + " " + TimeUnit.MILLISECONDS.toMillis(250)); + logger.log(Level.WARNING, poolName + " connectionTimeout is less than 250ms, setting to " + TimeUnit.MILLISECONDS.toMillis(250) + " ms"); connectionTimeout = TimeUnit.MILLISECONDS.toMillis(250); } if (validationTimeout < 250) { - logger.log(Level.WARNING, "validationTimeout is less than 250ms, setting to ms" + - poolName + " " + TimeUnit.MILLISECONDS.toMillis(250)); + logger.log(Level.WARNING, poolName + " validationTimeout is less than 250ms, setting to ms" + TimeUnit.MILLISECONDS.toMillis(250) + " ms"); validationTimeout = TimeUnit.MILLISECONDS.toMillis(250); } if (maxPoolSize < 1) { @@ -655,14 +653,13 @@ public class PoolConfig { minIdle = maxPoolSize; } if (idleTimeout + TimeUnit.SECONDS.toMillis(1) > maxLifetime && maxLifetime > 0 && minIdle < maxPoolSize) { - logger.log(Level.WARNING, "idleTimeout is close to or more than maxLifetime, disabling it:" + poolName); + logger.log(Level.WARNING, poolName + " idleTimeout is close to or more than maxLifetime, disabling it"); idleTimeout = 0; } else if (idleTimeout != 0 && idleTimeout < TimeUnit.SECONDS.toMillis(10) && minIdle < maxPoolSize) { - logger.log(Level.WARNING, "idleTimeout is less than 10s, setting to default ms: " + - poolName + " " + TimeUnit.SECONDS.toMillis(10)); + logger.log(Level.WARNING, poolName + " idleTimeout is less than 10s, setting to default " + TimeUnit.SECONDS.toMillis(10) + " ms"); idleTimeout = TimeUnit.SECONDS.toMillis(10); } else if (idleTimeout != TimeUnit.SECONDS.toMillis(10) && idleTimeout != 0 && minIdle == maxPoolSize) { - logger.log(Level.WARNING, "idleTimeout has been set but has no effect because the pool is operating as a fixed size pool: " + poolName); + logger.log(Level.WARNING, poolName + " idleTimeout has been set but has no effect because the pool is operating as a fixed size pool"); } } diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/Database.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/Database.java index 499eeda..964262b 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/Database.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/Database.java @@ -125,7 +125,7 @@ public interface Database extends Supplier { * Probe the underlying connection. * @return true if database has executed a probe query successfully, false if not */ - boolean probe() throws SQLException; + boolean probe(int seconds) throws SQLException; Options options(); @@ -280,5 +280,5 @@ public interface Database extends Supplier { * @param consumer a consumer for the queue table data column or null * @throws SQLException if rollback fails */ - public void consumeQueue(String table, String channel, int limit, Consumer consumer) throws SQLException; + void consumeQueue(String table, String channel, int limit, Consumer consumer) throws SQLException; } diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseImpl.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseImpl.java index 41436e1..b91da50 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseImpl.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseImpl.java @@ -140,9 +140,8 @@ public class DatabaseImpl implements Database { } @Override - public boolean probe() throws SQLException { - // use a standard timeout of 5 seconds - return connection != null && connection.isValid(5); + public boolean probe(int seconds) throws SQLException { + return connection != null && connection.isValid(seconds); } @Override diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseProvider.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseProvider.java index 6dc1aec..bd00808 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseProvider.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/DatabaseProvider.java @@ -320,15 +320,15 @@ public final class DatabaseProvider implements Supplier, Closeable { return database; } - public boolean check() { + public boolean check(int seconds) { Metric metric = new Metric(logger.isLoggable(Level.FINE)); boolean probe = false; try { if (database != null) { - probe = database.probe(); + probe = database.probe(seconds); } else { get(); - probe = database.probe(); + probe = database.probe(seconds); } } catch (SQLException | RuntimeException e) { metric.checkpoint("fail", e.getMessage()); diff --git a/jdbc-query/src/main/java/org/xbib/jdbc/query/OptionsDefault.java b/jdbc-query/src/main/java/org/xbib/jdbc/query/OptionsDefault.java index d598c57..4e6f0fd 100644 --- a/jdbc-query/src/main/java/org/xbib/jdbc/query/OptionsDefault.java +++ b/jdbc-query/src/main/java/org/xbib/jdbc/query/OptionsDefault.java @@ -20,7 +20,7 @@ public class OptionsDefault implements Options { @Override public int timeoutSeconds() { - return 5; + return 15; } @Override diff --git a/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java b/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java index 07c78c9..6c5d084 100644 --- a/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java +++ b/jdbc-test/src/main/java/org/xbib/jdbc/test/CommonTest.java @@ -77,7 +77,7 @@ public abstract class CommonTest { dbp = createDatabaseProvider(new OptionsOverride() { }); db = dbp.get(); - if (!db.probe()) { + if (!db.probe(15)) { fail(); } db.dropTableQuietly(TEST_TABLE_NAME);