mirror of https://github.com/alibaba/druid.git
Add property `closeConnOnFatalError` to match HikariCP's behavior
This commit is contained in:
parent
a1536b8cf8
commit
c737d2a602
|
|
@ -147,6 +147,7 @@ public class DruidDataSource extends DruidAbstractDataSource
|
|||
private boolean asyncInit;
|
||||
protected boolean killWhenSocketReadTimeout;
|
||||
protected boolean checkExecuteTime;
|
||||
protected boolean closeConnOnFatalError = true;
|
||||
|
||||
private static List<Filter> autoFilters;
|
||||
private boolean loadSpifilterSkip;
|
||||
|
|
@ -185,6 +186,14 @@ public class DruidDataSource extends DruidAbstractDataSource
|
|||
this.asyncInit = asyncInit;
|
||||
}
|
||||
|
||||
public boolean isCloseConnOnFatalError() {
|
||||
return closeConnOnFatalError;
|
||||
}
|
||||
|
||||
public void setCloseConnOnFatalError(boolean closeConnOnFatalError) {
|
||||
this.closeConnOnFatalError = closeConnOnFatalError;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void configFromPropety(Properties properties) {
|
||||
configFromPropeties(properties);
|
||||
|
|
@ -1640,7 +1649,7 @@ public class DruidDataSource extends DruidAbstractDataSource
|
|||
ReentrantLock fatalErrorCountLock = hasHolderDataSource ? holder.getDataSource().lock : conn.lock;
|
||||
fatalErrorCountLock.lock();
|
||||
try {
|
||||
if ((!conn.closed) && !conn.disable) {
|
||||
if ((!conn.closed) && !conn.disable && isCloseConnOnFatalError()) {
|
||||
conn.disable(error);
|
||||
requireDiscard = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -326,5 +326,6 @@ public class DruidDataSourceUtils {
|
|||
trySetIntProperty(properties, "druid.socketTimeout", druidDataSource::setSocketTimeout);
|
||||
trySetIntProperty(properties, "druid.transactionQueryTimeout", druidDataSource::setTransactionQueryTimeout);
|
||||
trySetIntProperty(properties, "druid.loginTimeout", druidDataSource::setLoginTimeout);
|
||||
trySetBooleanProperty(properties, "druid.closeConnOnFatalError", druidDataSource::setCloseConnOnFatalError);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -396,6 +396,8 @@ public class DruidDataSourceUtilsTest extends TestCase {
|
|||
properties.put("druid.disableException", druidDisableException);
|
||||
String druidInstanceKey = "@lizongbo";
|
||||
properties.put("druid.instanceKey", druidInstanceKey);
|
||||
String druidCloseConnOnFatalError = "false";
|
||||
properties.put("druid.closeConnOnFatalError", druidCloseConnOnFatalError);
|
||||
|
||||
DruidDataSource dataSource = new DruidDataSource();
|
||||
dataSource.configFromPropeties(properties);
|
||||
|
|
@ -455,6 +457,7 @@ public class DruidDataSourceUtilsTest extends TestCase {
|
|||
assertEquals(druidKillWhenSocketReadTimeout, String.valueOf(dataSource.isKillWhenSocketReadTimeout()));
|
||||
//assertEquals(druidCheckExecuteTime, String.valueOf(dataSource.isCheckExecuteTime()));
|
||||
//assertEquals(druidLoadSpifilterSkip, String.valueOf(dataSource.isLoadSpifilterSkip()));
|
||||
assertEquals(druidCloseConnOnFatalError, String.valueOf(dataSource.isCloseConnOnFatalError()));
|
||||
}
|
||||
|
||||
public void testGenTestCode() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue