|
|
|
@ -234,8 +234,6 @@ public final class HikariPool extends BaseHikariPool
|
|
|
|
|
*/
|
|
|
|
|
private class HouseKeeper implements Runnable
|
|
|
|
|
{
|
|
|
|
|
private long past;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void run()
|
|
|
|
|
{
|
|
|
|
@ -246,19 +244,13 @@ public final class HikariPool extends BaseHikariPool
|
|
|
|
|
final long now = System.currentTimeMillis();
|
|
|
|
|
final long idleTimeout = configuration.getIdleTimeout();
|
|
|
|
|
|
|
|
|
|
if (now < past) { // handles the aberrant case of a computer clock rolling backward
|
|
|
|
|
past = now;
|
|
|
|
|
softEvictConnections();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
for (PoolBagEntry bagEntry : connectionBag.values(STATE_NOT_IN_USE)) {
|
|
|
|
|
if (connectionBag.reserve(bagEntry)) {
|
|
|
|
|
if (bagEntry.evicted || (idleTimeout > 0L && now > bagEntry.lastAccess + idleTimeout)) {
|
|
|
|
|
closeConnection(bagEntry);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
connectionBag.unreserve(bagEntry);
|
|
|
|
|
}
|
|
|
|
|
for (PoolBagEntry bagEntry : connectionBag.values(STATE_NOT_IN_USE)) {
|
|
|
|
|
if (connectionBag.reserve(bagEntry)) {
|
|
|
|
|
if (bagEntry.evicted || (idleTimeout > 0L && now > bagEntry.lastAccess + idleTimeout)) {
|
|
|
|
|
closeConnection(bagEntry);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
connectionBag.unreserve(bagEntry);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|