diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index ad1f032472..6413a754a0 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -113,7 +113,7 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource private boolean testOnReturn = DEFAULT_TEST_ON_RETURN; private boolean testWhileIdle = DEFAULT_WHILE_IDLE; protected boolean poolPreparedStatements = false; - protected int maxPoolPreparedStatementPerConnectionSize = -1; + protected int maxPoolPreparedStatementPerConnectionSize = -1; protected boolean inited = false; @@ -166,6 +166,16 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource protected Date createdTime; + protected int connectionErrorRetryAttempts = 30; + + public int getConnectionErrorRetryAttempts() { + return connectionErrorRetryAttempts; + } + + public void setConnectionErrorRetryAttempts(int connectionErrorRetryAttempts) { + this.connectionErrorRetryAttempts = connectionErrorRetryAttempts; + } + public long getDupCloseCount() { return dupCloseCount.get(); } @@ -269,7 +279,7 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource public void setRemoveAbandonedTimeout(int removeAbandonedTimeout) { this.removeAbandonedTimeoutMillis = removeAbandonedTimeout * 1000; } - + public void setRemoveAbandonedTimeoutMillis(int removeAbandonedTimeoutMillis) { this.removeAbandonedTimeoutMillis = removeAbandonedTimeoutMillis; } diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index ebeb9535cc..e7afa14cf8 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -653,7 +653,6 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat public void run() { initedLatch.countDown(); - final int MAX_ERRRO_TRY = 3; int errorCount = 0; for (;;) { // addLast @@ -699,7 +698,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat errorCount++; - if (errorCount > MAX_ERRRO_TRY && timeBetweenConnectErrorMillis > 0) { + if (errorCount > connectionErrorRetryAttempts && timeBetweenConnectErrorMillis > 0) { try { Thread.sleep(timeBetweenConnectErrorMillis); } catch (InterruptedException e1) { diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSourceC3P0Adapter.java b/src/main/java/com/alibaba/druid/pool/DruidDataSourceC3P0Adapter.java index 931e6894dd..727538e5b8 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSourceC3P0Adapter.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSourceC3P0Adapter.java @@ -105,11 +105,11 @@ public class DruidDataSourceC3P0Adapter implements DataSource, DruidDataSourceC3 } public int getCheckoutTimeout() { - return (int) dataSource.getMaxWait(); + return (int) dataSource.getMaxWait() / 1000; } public void setCheckoutTimeout(int checkoutTimeout) { - dataSource.setMaxWait(checkoutTimeout); + dataSource.setMaxWait(checkoutTimeout * 1000); } public boolean isAutoCommitOnClose() { @@ -224,6 +224,46 @@ public class DruidDataSourceC3P0Adapter implements DataSource, DruidDataSourceC3 dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxStatementsPerConnection); } + public int getMaxStatements() { + return dataSource.getMaxOpenPreparedStatements(); + } + + public void setMaxStatements(int maxStatements) { + dataSource.setMaxOpenPreparedStatements(maxStatements); + } + + public int getUnreturnedConnectionTimeout() { + return dataSource.getRemoveAbandonedTimeout(); + } + + public void setUnreturnedConnectionTimeout(int unreturnedConnectionTimeout) { + dataSource.setRemoveAbandonedTimeout(unreturnedConnectionTimeout); + } + + public boolean isDebugUnreturnedConnectionStackTraces() { + return dataSource.isLogAbandoned(); + } + + public void setDebugUnreturnedConnectionStackTraces(boolean debugUnreturnedConnectionStackTraces) { + dataSource.setLogAbandoned(debugUnreturnedConnectionStackTraces); + } + + public int getAcquireRetryAttempts() { + return dataSource.getConnectionErrorRetryAttempts(); + } + + public void setAcquireRetryAttempts(int acquireRetryAttempts) { + dataSource.setConnectionErrorRetryAttempts(acquireRetryAttempts); + } + + public int getAcquireRetryDelay() { + return (int) (dataSource.getTimeBetweenConnectErrorMillis() / 1000L); + } + + public void setAcquireRetryDelay(int acquireRetryDelay) { + dataSource.setTimeBetweenConnectErrorMillis(((long) acquireRetryDelay) * 1000); + } + // ///////////////// @Override @@ -263,24 +303,11 @@ public class DruidDataSourceC3P0Adapter implements DataSource, DruidDataSourceC3 private int maxIdleTimeExcessConnections; private int maxConnectionAge; private String connectionCustomizerClassName; - private int unreturnedConnectionTimeout; - private boolean debugUnreturnedConnectionStackTraces; private String factoryClassLocation; private int acquireIncrement = 1; - private int acquireRetryDelay; - private int acquireRetryAttempts; private String connectionTesterClassName; private String automaticTestTable; - private int maxStatements; - - public int getMaxStatements() { - return maxStatements; - } - - public void setMaxStatements(int maxStatements) { - this.maxStatements = maxStatements; - } public String getConnectionTesterClassName() { return connectionTesterClassName; @@ -356,22 +383,6 @@ public class DruidDataSourceC3P0Adapter implements DataSource, DruidDataSourceC3 this.connectionCustomizerClassName = connectionCustomizerClassName; } - public int getUnreturnedConnectionTimeout() { - return unreturnedConnectionTimeout; - } - - public void setUnreturnedConnectionTimeout(int unreturnedConnectionTimeout) { - this.unreturnedConnectionTimeout = unreturnedConnectionTimeout; - } - - public boolean isDebugUnreturnedConnectionStackTraces() { - return debugUnreturnedConnectionStackTraces; - } - - public void setDebugUnreturnedConnectionStackTraces(boolean debugUnreturnedConnectionStackTraces) { - this.debugUnreturnedConnectionStackTraces = debugUnreturnedConnectionStackTraces; - } - public String getFactoryClassLocation() { return factoryClassLocation; } @@ -388,22 +399,6 @@ public class DruidDataSourceC3P0Adapter implements DataSource, DruidDataSourceC3 this.acquireIncrement = acquireIncrement; } - public int getAcquireRetryAttempts() { - return acquireRetryAttempts; - } - - public void setAcquireRetryAttempts(int acquireRetryAttempts) { - this.acquireRetryAttempts = acquireRetryAttempts; - } - - public int getAcquireRetryDelay() { - return acquireRetryDelay; - } - - public void setAcquireRetryDelay(int acquireRetryDelay) { - this.acquireRetryDelay = acquireRetryDelay; - } - public String getOverrideDefaultUser() { return overrideDefaultUser; }