From 95d3fbdf0bd3f38db710bbee746727942a7f7b43 Mon Sep 17 00:00:00 2001 From: Brett Wooldridge Date: Sat, 18 Jan 2014 23:30:38 +0900 Subject: [PATCH] Add short-circuit to aliveness check if connection was used within the last second. --- src/main/java/com/zaxxer/hikari/HikariPool.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/HikariPool.java b/src/main/java/com/zaxxer/hikari/HikariPool.java index 92d2b79b..20d24f4e 100644 --- a/src/main/java/com/zaxxer/hikari/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/HikariPool.java @@ -406,11 +406,6 @@ public final class HikariPool implements HikariPoolMBean */ private boolean isConnectionAlive(final IHikariConnectionProxy connection, long timeoutMs) { - if (timeoutMs < 1000) - { - timeoutMs = 1000; - } - try { connection.setAutoCommit(isAutoCommit); @@ -419,8 +414,19 @@ public final class HikariPool implements HikariPoolMBean connection.setTransactionIsolation(transactionIsolation); } + // If the connection was used less than a second ago, short-circuit the alive test + if (System.currentTimeMillis() - connection.getLastAccess() < 1000) + { + return true; + } + try { + if (timeoutMs < 1000) + { + timeoutMs = 1000; + } + if (jdbc4ConnectionTest) { return connection.isValid((int) TimeUnit.MILLISECONDS.toSeconds(timeoutMs));