mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
recover fatal error
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</artifactId>
|
||||
<version>1.1.20_preview_05</version>
|
||||
<version>1.1.20_preview_06</version>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
<name>druid</name>
|
||||
|
||||
@@ -1740,6 +1740,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
|
||||
sql = sql.substring(0, 1024);
|
||||
}
|
||||
|
||||
DruidAbstractDataSource dataSource = holder.getDataSource();
|
||||
|
||||
boolean requireDiscard = false;
|
||||
final ReentrantLock lock = conn.lock;
|
||||
lock.lock();
|
||||
@@ -1755,18 +1757,23 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
|
||||
fatalErrorCount++;
|
||||
lastFatalError = error;
|
||||
lastFatalErrorSql = sql;
|
||||
|
||||
ReentrantLock dataSourceLock = holder.getDataSource().lock;
|
||||
dataSourceLock.lock();
|
||||
try {
|
||||
emptySignal();
|
||||
} finally {
|
||||
dataSourceLock.unlock();
|
||||
}
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
|
||||
if(dataSource != null) {
|
||||
ReentrantLock dataSourceLock = dataSource.lock;
|
||||
dataSourceLock.lock();
|
||||
try {
|
||||
if (poolingCount < minIdle) {
|
||||
emptySignal();
|
||||
}
|
||||
}
|
||||
finally {
|
||||
dataSourceLock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
if (requireDiscard) {
|
||||
if (holder.statementTrace != null) {
|
||||
holder.lock.lock();
|
||||
|
||||
Reference in New Issue
Block a user