From fc32b4de73990c447a47552adf27f64f08ce37d7 Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 17 Sep 2015 12:39:16 +0530 Subject: [PATCH 1/8] removed redundant creationTime. lastAceess is initialized at creation as well. --- .../com/zaxxer/hikari/pool/PoolEntry.java | 22 ++----------------- .../com/zaxxer/hikari/util/ConcurrentBag.java | 10 ++++----- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java index 07ed2447..6bcdf3ba 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java @@ -18,8 +18,6 @@ package com.zaxxer.hikari.pool; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicInteger; @@ -37,10 +35,7 @@ import com.zaxxer.hikari.util.FastList; */ public final class PoolEntry implements IConcurrentBagEntry { - private static final Logger LOGGER; - private static final SimpleDateFormat DATE_FORMAT; - - public final long creationTime; + private static final Logger LOGGER = LoggerFactory.getLogger(PoolEntry.class); public Connection connection; public long lastAccess; @@ -54,17 +49,10 @@ public final class PoolEntry implements IConcurrentBagEntry private volatile ScheduledFuture endOfLife; - static - { - LOGGER = LoggerFactory.getLogger(PoolEntry.class); - DATE_FORMAT = new SimpleDateFormat("MMM dd, HH:mm:ss.SSS"); - } - PoolEntry(final Connection connection, final PoolBase pool) { this.connection = connection; this.poolBase = pool; - this.creationTime = System.currentTimeMillis(); this.state = new AtomicInteger(STATE_NOT_IN_USE); this.lastAccess = ClockSource.INSTANCE.currentTime(); this.openStatements = new FastList<>(Statement.class, 16); @@ -159,8 +147,7 @@ public final class PoolEntry implements IConcurrentBagEntry public String toString() { return connection - + ", created " + formatDateTime(creationTime) - + ", last release " + ClockSource.INSTANCE.elapsedMillis(lastAccess) + "ms ago, " + + ", last access " + ClockSource.INSTANCE.elapsedMillis(lastAccess) + "ms ago, " + stateToString(); } @@ -174,11 +161,6 @@ public final class PoolEntry implements IConcurrentBagEntry connection = null; } - private static synchronized String formatDateTime(final long timestamp) - { - return DATE_FORMAT.format(new Date(timestamp)); - } - private String stateToString() { switch (state.get()) { diff --git a/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java b/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java index 51f408d6..4c446954 100644 --- a/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java +++ b/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java @@ -244,9 +244,9 @@ public class ConcurrentBag implements AutoCloseab public List values(final int state) { final ArrayList list = new ArrayList<>(sharedList.size()); - for (final T reference : sharedList) { - if (reference.getState() == state) { - list.add(reference); + for (final T entry : sharedList) { + if (entry.getState() == state) { + list.add(entry); } } @@ -320,8 +320,8 @@ public class ConcurrentBag implements AutoCloseab public int getCount(final int state) { int count = 0; - for (final T reference : sharedList) { - if (reference.getState() == state) { + for (final T entry : sharedList) { + if (entry.getState() == state) { count++; } } From df6f04403a54f4e00bc27c66c3008f8a26f9000b Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 17 Sep 2015 14:13:21 +0530 Subject: [PATCH 2/8] duplicate --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index fde632ac..53a9f048 100644 --- a/README.md +++ b/README.md @@ -360,7 +360,6 @@ Here is a list of JDBC *DataSource* classes for popular databases: | Apache Derby | Derby | org.apache.derby.jdbc.ClientDataSource | | Firebird | Jaybird | org.firebirdsql.pool.FBSimpleDataSource | | H2 | H2 | org.h2.jdbcx.JdbcDataSource | -| IBM AS400 | IBM | com.ibm.as400.access.AS400JDBCDriver | | HSQLDB | HSQLDB | org.hsqldb.jdbc.JDBCDataSource | | IBM AS400 | IBM | com.ibm.as400.access.AS400JDBCDriver | | IBM DB2 | DB2 | com.ibm.db2.jcc.DB2SimpleDataSource | From d0f84e101d9ea37315bcaaa740a93e414deaa175 Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 17 Sep 2015 16:46:45 +0530 Subject: [PATCH 3/8] cleanup --- src/main/java/com/zaxxer/hikari/pool/HikariPool.java | 10 +++++----- src/main/java/com/zaxxer/hikari/pool/PoolBase.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 22e5bd46..3a7351a0 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -67,21 +67,21 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL private static final ClockSource clockSource = ClockSource.INSTANCE; - private final long ALIVE_BYPASS_WINDOW_MS = Long.getLong("com.zaxxer.hikari.aliveBypassWindow", TimeUnit.SECONDS.toMillis(1)); - private final long HOUSEKEEPING_PERIOD_MS = Long.getLong("com.zaxxer.hikari.housekeeping.periodMs", TimeUnit.SECONDS.toMillis(30)); + private static final long ALIVE_BYPASS_WINDOW_MS = Long.getLong("com.zaxxer.hikari.aliveBypassWindow", TimeUnit.SECONDS.toMillis(1)); + private static final long HOUSEKEEPING_PERIOD_MS = Long.getLong("com.zaxxer.hikari.housekeeping.periodMs", TimeUnit.SECONDS.toMillis(30)); private static final int POOL_NORMAL = 0; private static final int POOL_SUSPENDED = 1; private static final int POOL_SHUTDOWN = 2; - final ConcurrentBag connectionBag; - final ScheduledThreadPoolExecutor houseKeepingExecutorService; + private volatile int poolState; private final AtomicInteger totalConnections; private final ThreadPoolExecutor addConnectionExecutor; private final ThreadPoolExecutor closeConnectionExecutor; + private final ScheduledThreadPoolExecutor houseKeepingExecutorService; - private volatile int poolState; + private final ConcurrentBag connectionBag; private final String poolName; private final ProxyLeakTask leakTask; diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java index 09cee341..faab6bca 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java @@ -29,7 +29,7 @@ import com.zaxxer.hikari.util.UtilityElf; abstract class PoolBase { - protected final Logger LOGGER = LoggerFactory.getLogger(getClass()); + protected final Logger LOGGER = LoggerFactory.getLogger(PoolBase.class); protected final HikariConfig config; protected long connectionTimeout; From 0069a4eff8ab668d211096c227d93f665bfb1d02 Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 17 Sep 2015 17:13:53 +0530 Subject: [PATCH 4/8] duplicate2 --- src/main/java/com/zaxxer/hikari/pool/HikariPool.java | 2 -- src/main/java/com/zaxxer/hikari/pool/PoolBase.java | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 3a7351a0..b2e52238 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -83,7 +83,6 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL private final ConcurrentBag connectionBag; - private final String poolName; private final ProxyLeakTask leakTask; private final SuspendResumeLock suspendResumeLock; @@ -99,7 +98,6 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL { super(config); - this.poolName = config.getPoolName(); this.connectionBag = new ConcurrentBag<>(this); this.totalConnections = new AtomicInteger(); this.suspendResumeLock = config.isAllowPoolSuspension() ? new SuspendResumeLock() : SuspendResumeLock.FAUX_LOCK; diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java index faab6bca..46adb728 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java @@ -31,6 +31,7 @@ abstract class PoolBase { protected final Logger LOGGER = LoggerFactory.getLogger(PoolBase.class); protected final HikariConfig config; + protected final String poolName; protected long connectionTimeout; private static final String[] RESET_STATES = {"readOnly", "autoCommit", "isolation", "catalog", "netTimeout"}; @@ -45,8 +46,6 @@ abstract class PoolBase private Executor netTimeoutExecutor; private DataSource dataSource; - // private final HikariPool hikariPool; - private final String poolName; private final String catalog; private final boolean isReadOnly; private final boolean isAutoCommit; From e3167d40a67dce82af81c4a7d5c21500e3c28355 Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 17 Sep 2015 19:36:24 +0530 Subject: [PATCH 5/8] protect pool entry --- .../metrics/CodaHaleMetricsTracker.java | 12 +--------- .../zaxxer/hikari/metrics/MetricsTracker.java | 12 ---------- .../com/zaxxer/hikari/pool/HikariPool.java | 2 +- .../java/com/zaxxer/hikari/pool/PoolBase.java | 2 +- .../com/zaxxer/hikari/pool/PoolEntry.java | 24 ++++++++++++------- 5 files changed, 18 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java b/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java index 6e6093a5..bad67085 100644 --- a/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java +++ b/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java @@ -21,12 +21,9 @@ import com.codahale.metrics.Histogram; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; import com.zaxxer.hikari.pool.PoolEntry; -import com.zaxxer.hikari.util.ClockSource; public final class CodaHaleMetricsTracker extends MetricsTracker { - private static final ClockSource clockSource = ClockSource.INSTANCE; - private final String poolName; private final Timer connectionObtainTimer; private final Histogram connectionUsage; @@ -95,7 +92,7 @@ public final class CodaHaleMetricsTracker extends MetricsTracker @Override public void recordConnectionUsage(final PoolEntry bagEntry) { - connectionUsage.update(clockSource.elapsedMillis(bagEntry.lastOpenTime)); + connectionUsage.update(bagEntry.getElapsedMillis()); } public Timer getConnectionAcquisitionTimer() @@ -122,12 +119,5 @@ public final class CodaHaleMetricsTracker extends MetricsTracker { innerContext.stop(); } - - /** {@inheritDoc} */ - @Override - public void setConnectionLastOpen(final PoolEntry bagEntry, final long now) - { - bagEntry.lastOpenTime = now; - } } } diff --git a/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java b/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java index b86060d8..2fe90c9a 100644 --- a/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java +++ b/src/main/java/com/zaxxer/hikari/metrics/MetricsTracker.java @@ -17,7 +17,6 @@ package com.zaxxer.hikari.metrics; import com.zaxxer.hikari.pool.PoolEntry; -import com.zaxxer.hikari.util.ClockSource; /** * This class only supports realtime, not historical metrics. @@ -59,16 +58,5 @@ public class MetricsTracker implements AutoCloseable { // do nothing } - - /** - * Set the lastOpenTime on the provided bag entry. - * - * @param bagEntry the bag entry - * @param now the last open timestamp from {@link ClockSource#currentTime()} - */ - public void setConnectionLastOpen(final PoolEntry bagEntry, final long now) - { - // do nothing - } } } diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index b2e52238..5382c384 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -171,7 +171,7 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL timeout = hardTimeout - clockSource.elapsedMillis(startTime, now); } else { - metricsContext.setConnectionLastOpen(poolEntry, now); + poolEntry.lastOpenTime = now; metricsContext.stop(); return poolEntry.createProxyConnection(leakTask.start(poolEntry), now); } diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java index 46adb728..22253a09 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java @@ -29,7 +29,7 @@ import com.zaxxer.hikari.util.UtilityElf; abstract class PoolBase { - protected final Logger LOGGER = LoggerFactory.getLogger(PoolBase.class); + private final Logger LOGGER = LoggerFactory.getLogger(PoolBase.class); protected final HikariConfig config; protected final String poolName; protected long connectionTimeout; diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java index 6bcdf3ba..251b7458 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java @@ -37,11 +37,11 @@ public final class PoolEntry implements IConcurrentBagEntry { private static final Logger LOGGER = LoggerFactory.getLogger(PoolEntry.class); - public Connection connection; - public long lastAccess; + Connection connection; + long lastAccess; - public volatile long lastOpenTime; - public volatile boolean evict; + volatile long lastOpenTime; + volatile boolean evict; private final FastList openStatements; private final PoolBase poolBase; @@ -63,7 +63,7 @@ public final class PoolEntry implements IConcurrentBagEntry * * @param lastAccess last access time-stamp */ - public void recycle(final long lastAccess) + void recycle(final long lastAccess) { this.lastAccess = lastAccess; poolBase.releaseConnection(this); @@ -72,7 +72,7 @@ public final class PoolEntry implements IConcurrentBagEntry /** * @param endOfLife */ - public void setFutureEol(final ScheduledFuture endOfLife) + void setFutureEol(final ScheduledFuture endOfLife) { this.endOfLife = endOfLife; } @@ -92,7 +92,7 @@ public final class PoolEntry implements IConcurrentBagEntry return poolBase.getPoolName(); } - public Connection getConnection() + Connection getConnection() { return connection; } @@ -107,16 +107,22 @@ public final class PoolEntry implements IConcurrentBagEntry return evict; } - public void evict() + void evict() { this.evict = true; } - public FastList getStatementsList() + FastList getStatementsList() { return openStatements; } + /** Returns millis since lastOpenTime */ + public long getElapsedMillis() + { + return ClockSource.INSTANCE.elapsedMillis(lastOpenTime); + } + // *********************************************************************** // IConcurrentBagEntry methods // *********************************************************************** From eaaf64f93ffd40b1a757a58b18cd7206c98e8fe6 Mon Sep 17 00:00:00 2001 From: Nitin Date: Fri, 18 Sep 2015 12:28:07 +0530 Subject: [PATCH 6/8] renamed and removed volatile from lastBorrowed and cleanup --- .../metrics/CodaHaleMetricsTracker.java | 2 +- .../com/zaxxer/hikari/pool/HikariPool.java | 6 ++--- .../com/zaxxer/hikari/pool/PoolEntry.java | 27 ++++++++----------- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java b/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java index bad67085..3d5409f0 100644 --- a/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java +++ b/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java @@ -92,7 +92,7 @@ public final class CodaHaleMetricsTracker extends MetricsTracker @Override public void recordConnectionUsage(final PoolEntry bagEntry) { - connectionUsage.update(bagEntry.getElapsedMillis()); + connectionUsage.update(bagEntry.getElapsedLastBorrowed()); } public Timer getConnectionAcquisitionTimer() diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 5382c384..ece1ee6a 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -166,12 +166,12 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL } final long now = clockSource.currentTime(); - if (poolEntry.evict || (clockSource.elapsedMillis(poolEntry.lastAccess, now) > ALIVE_BYPASS_WINDOW_MS && !isConnectionAlive(poolEntry.connection))) { + if (poolEntry.evict || (clockSource.elapsedMillis(poolEntry.lastAccessed, now) > ALIVE_BYPASS_WINDOW_MS && !isConnectionAlive(poolEntry.connection))) { closeConnection(poolEntry, "(connection evicted or dead)"); // Throw away the dead connection and try again timeout = hardTimeout - clockSource.elapsedMillis(startTime, now); } else { - poolEntry.lastOpenTime = now; + poolEntry.lastBorrowed = now; metricsContext.stop(); return poolEntry.createProxyConnection(leakTask.start(poolEntry), now); } @@ -625,7 +625,7 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL if (removable <= 0) { break; } - if (clockSource.elapsedMillis(poolEntry.lastAccess, now) > idleTimeout) { + if (clockSource.elapsedMillis(poolEntry.lastAccessed, now) > idleTimeout) { if (connectionBag.reserve(poolEntry)) { closeConnection(poolEntry, "(connection passed idleTimeout)"); removable--; diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java index 251b7458..fe7e9cc1 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java @@ -38,9 +38,8 @@ public final class PoolEntry implements IConcurrentBagEntry private static final Logger LOGGER = LoggerFactory.getLogger(PoolEntry.class); Connection connection; - long lastAccess; - - volatile long lastOpenTime; + long lastAccessed; + long lastBorrowed; volatile boolean evict; private final FastList openStatements; @@ -54,18 +53,18 @@ public final class PoolEntry implements IConcurrentBagEntry this.connection = connection; this.poolBase = pool; this.state = new AtomicInteger(STATE_NOT_IN_USE); - this.lastAccess = ClockSource.INSTANCE.currentTime(); + this.lastAccessed = ClockSource.INSTANCE.currentTime(); this.openStatements = new FastList<>(Statement.class, 16); } /** * Release this entry back to the pool. * - * @param lastAccess last access time-stamp + * @param lastAccessed last access time-stamp */ - void recycle(final long lastAccess) + void recycle(final long lastAccessed) { - this.lastAccess = lastAccess; + this.lastAccessed = lastAccessed; poolBase.releaseConnection(this); } @@ -97,11 +96,6 @@ public final class PoolEntry implements IConcurrentBagEntry return connection; } - public long getLastAccess() - { - return lastAccess; - } - public boolean isEvicted() { return evict; @@ -117,10 +111,10 @@ public final class PoolEntry implements IConcurrentBagEntry return openStatements; } - /** Returns millis since lastOpenTime */ - public long getElapsedMillis() + /** Returns millis since lastBorrowed */ + public long getElapsedLastBorrowed() { - return ClockSource.INSTANCE.elapsedMillis(lastOpenTime); + return ClockSource.INSTANCE.elapsedMillis(lastBorrowed); } // *********************************************************************** @@ -153,7 +147,8 @@ public final class PoolEntry implements IConcurrentBagEntry public String toString() { return connection - + ", last access " + ClockSource.INSTANCE.elapsedMillis(lastAccess) + "ms ago, " + + ", borrowed " + ClockSource.INSTANCE.elapsedMillis(lastBorrowed) + "ms ago, " + + ", accessed " + ClockSource.INSTANCE.elapsedMillis(lastAccessed) + "ms ago, " + stateToString(); } From ff8e54c56f42f5925bda3492a695dd53e6ce0cb3 Mon Sep 17 00:00:00 2001 From: Nitin Date: Fri, 18 Sep 2015 13:09:40 +0530 Subject: [PATCH 7/8] correct time --- src/main/java/com/zaxxer/hikari/pool/PoolEntry.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java index fe7e9cc1..aad2c3cf 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java @@ -146,9 +146,10 @@ public final class PoolEntry implements IConcurrentBagEntry @Override public String toString() { + final long now = ClockSource.INSTANCE.currentTime(); return connection - + ", borrowed " + ClockSource.INSTANCE.elapsedMillis(lastBorrowed) + "ms ago, " - + ", accessed " + ClockSource.INSTANCE.elapsedMillis(lastAccessed) + "ms ago, " + + ", borrowed " + ClockSource.INSTANCE.elapsedMillis(lastBorrowed, now) + "ms ago, " + + ", accessed " + ClockSource.INSTANCE.elapsedMillis(lastAccessed, now) + "ms ago, " + stateToString(); } From cc3f8614af2b24e274a820e08a8d8362d56e84fc Mon Sep 17 00:00:00 2001 From: Nitin Date: Fri, 18 Sep 2015 19:09:09 +0530 Subject: [PATCH 8/8] more cleanup --- .../java/com/zaxxer/hikari/pool/PoolBase.java | 32 +++++++++---------- .../com/zaxxer/hikari/pool/PoolEntry.java | 6 ++-- .../zaxxer/hikari/pool/ProxyConnection.java | 20 ++++++------ .../com/zaxxer/hikari/pool/ProxyLeakTask.java | 2 +- .../zaxxer/hikari/pool/ProxyResultSet.java | 2 +- .../zaxxer/hikari/pool/ProxyStatement.java | 2 +- .../java/com/zaxxer/hikari/ShutdownTest.java | 2 +- 7 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java index 22253a09..55e33fd4 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolBase.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolBase.java @@ -77,7 +77,7 @@ abstract class PoolBase initializeDataSource(); } - public String getPoolName() + String getPoolName() { return poolName; } @@ -88,7 +88,7 @@ abstract class PoolBase // JDBC methods // *********************************************************************** - public void quietlyCloseConnection(final Connection connection, final String closureReason) + void quietlyCloseConnection(final Connection connection, final String closureReason) { try { if (connection == null || connection.isClosed()) { @@ -109,7 +109,7 @@ abstract class PoolBase } } - public boolean isConnectionAlive(final Connection connection) + boolean isConnectionAlive(final Connection connection) { try { final long validationTimeout = config.getValidationTimeout(); @@ -143,17 +143,16 @@ abstract class PoolBase } } - public DataSource getUnwrappedDataSource() + Throwable getLastConnectionFailure() { - return dataSource; + return lastConnectionFailure.getAndSet(null); } - public Throwable getLastConnectionFailure() + public DataSource getUnwrappedDataSource() { - return lastConnectionFailure.getAndSet(null); + return dataSource; } - // *********************************************************************** // PoolEntry methods // *********************************************************************** @@ -163,7 +162,7 @@ abstract class PoolBase return new PoolEntry(newConnection(), this); } - public void resetConnectionState(final Connection connection, final ProxyConnection proxyConnection, final int dirtyBits) throws SQLException + void resetConnectionState(final Connection connection, final ProxyConnection proxyConnection, final int dirtyBits) throws SQLException { int resetBits = 0; @@ -200,9 +199,15 @@ abstract class PoolBase } } + void shutdownNetworkTimeoutExecutor() + { + if (netTimeoutExecutor != null && netTimeoutExecutor instanceof ThreadPoolExecutor) { + ((ThreadPoolExecutor) netTimeoutExecutor).shutdownNow(); + } + } // *********************************************************************** - // PoolMediator methods + // JMX methods // *********************************************************************** /** @@ -258,13 +263,6 @@ abstract class PoolBase } } - public void shutdownNetworkTimeoutExecutor() - { - if (netTimeoutExecutor != null && netTimeoutExecutor instanceof ThreadPoolExecutor) { - ((ThreadPoolExecutor) netTimeoutExecutor).shutdownNow(); - } - } - // *********************************************************************** // Private methods // *********************************************************************** diff --git a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java index aad2c3cf..291dab76 100644 --- a/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java +++ b/src/main/java/com/zaxxer/hikari/pool/PoolEntry.java @@ -81,12 +81,12 @@ public final class PoolEntry implements IConcurrentBagEntry return ProxyFactory.getProxyConnection(this, connection, openStatements, leakTask, now); } - public void resetConnectionState(final ProxyConnection proxyConnection, final int dirtyBits) throws SQLException + void resetConnectionState(final ProxyConnection proxyConnection, final int dirtyBits) throws SQLException { poolBase.resetConnectionState(connection, proxyConnection, dirtyBits); } - public String getPoolName() + String getPoolName() { return poolBase.getPoolName(); } @@ -96,7 +96,7 @@ public final class PoolEntry implements IConcurrentBagEntry return connection; } - public boolean isEvicted() + boolean isEvicted() { return evict; } diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java index c7778bca..3bb6ebfd 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java @@ -96,30 +96,30 @@ public abstract class ProxyConnection implements Connection } // *********************************************************************** - // Live Connection State accessors + // Connection State Accessors // *********************************************************************** - public final boolean getAutoCommitState() + final boolean getAutoCommitState() { return isAutoCommit; } - public final String getCatalogState() + final String getCatalogState() { return dbcatalog; } - public final int getTransactionIsolationState() + final int getTransactionIsolationState() { return transactionIsolation; } - public final boolean getReadOnlyState() + final boolean getReadOnlyState() { return isReadOnly; } - public final int getNetworkTimeoutState() + final int getNetworkTimeoutState() { return networkTimeout; } @@ -129,13 +129,13 @@ public abstract class ProxyConnection implements Connection // *********************************************************************** /** {@inheritDoc} */ - public final PoolEntry getPoolEntry() + final PoolEntry getPoolEntry() { return poolEntry; } /** {@inheritDoc} */ - public final SQLException checkException(final SQLException sqle) + final SQLException checkException(final SQLException sqle) { String sqlState = sqle.getSQLState(); if (sqlState != null) { @@ -156,13 +156,13 @@ public abstract class ProxyConnection implements Connection } /** {@inheritDoc} */ - public final void untrackStatement(final Statement statement) + final void untrackStatement(final Statement statement) { openStatements.remove(statement); } /** {@inheritDoc} */ - public final void markCommitStateDirty() + final void markCommitStateDirty() { if (isAutoCommit) { lastAccess = clockSource.currentTime(); diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyLeakTask.java b/src/main/java/com/zaxxer/hikari/pool/ProxyLeakTask.java index ee37d952..de3059e2 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyLeakTask.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyLeakTask.java @@ -87,7 +87,7 @@ class ProxyLeakTask implements Runnable LOGGER.warn("Connection leak detection triggered for connection {}, stack trace follows", connectionName, exception); } - public void cancel() + void cancel() { scheduledFuture.cancel(false); } diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java b/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java index 3aa1b622..63c075ae 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyResultSet.java @@ -39,7 +39,7 @@ public abstract class ProxyResultSet implements ResultSet this.delegate = resultSet; } - protected final SQLException checkException(SQLException e) + final SQLException checkException(SQLException e) { return connection.checkException(e); } diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java b/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java index 320dd921..307ae955 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyStatement.java @@ -40,7 +40,7 @@ public abstract class ProxyStatement implements Statement this.delegate = statement; } - protected final SQLException checkException(SQLException e) + final SQLException checkException(SQLException e) { return connection.checkException(e); } diff --git a/src/test/java/com/zaxxer/hikari/ShutdownTest.java b/src/test/java/com/zaxxer/hikari/ShutdownTest.java index 18792c40..de90431a 100644 --- a/src/test/java/com/zaxxer/hikari/ShutdownTest.java +++ b/src/test/java/com/zaxxer/hikari/ShutdownTest.java @@ -291,7 +291,7 @@ public class ShutdownTest Assert.fail(e.getMessage()); } finally { - TestElf.getPool(ds).quietlyCloseConnection(connection, "(because this is a test)"); + try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } ds.close(); } };