Add calculated effective acquisition time and inter-attempt delay.

pull/60/head
Brett Wooldridge 11 years ago
parent 3869ed0edb
commit 4dea4c8d41

@ -337,17 +337,19 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener
private void addConnection()
{
final int acquisitionTimeout = (int) configuration.getConnectionTimeout();
int retries = configuration.getAcquireRetries();
final int acquireRetries = configuration.getAcquireRetries();
int loginTimeout = 2000;
if (retries == 0)
if (acquireRetries == 0)
{
loginTimeout = (acquisitionTimeout == 0 ? Integer.MAX_VALUE : acquisitionTimeout);
}
else if (acquisitionTimeout > 0)
{
loginTimeout = (acquisitionTimeout / (retries + 1));
loginTimeout = (acquisitionTimeout / (acquireRetries + 1));
}
long start = 0;
int retries = 0;
while (!shutdown)
{
try
@ -359,6 +361,7 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener
break;
}
start = System.currentTimeMillis();
dataSource.setLoginTimeout(loginTimeout);
Connection connection = dataSource.getConnection();
@ -378,7 +381,7 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener
}
catch (Exception e)
{
if (retries++ > configuration.getAcquireRetries())
if (retries++ > acquireRetries)
{
if (debug)
{
@ -394,7 +397,11 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener
try
{
Thread.sleep(configuration.getAcquireRetryDelay());
long sleep = loginTimeout - (System.currentTimeMillis() - start);
if (sleep > 0)
{
Thread.sleep(sleep);
}
}
catch (InterruptedException e1)
{

Loading…
Cancel
Save