diff --git a/pom.xml b/pom.xml
index e56f054f1f..a1d3f19dda 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.alibaba
druid
- 1.1.20_preview_05
+ 1.1.20_preview_06
jar
druid
diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
index 1b361ccbc1..e8398b29ff 100644
--- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java
@@ -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();