fixed onFatalError emptySingle improve

This commit is contained in:
agapple
2019-08-21 18:19:03 +08:00
parent c2a8d3d7b2
commit a8a2e60b9f
2 changed files with 17 additions and 7 deletions
+3 -3
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20_preview_10</version>
<version>1.1.20_preview_11</version>
<packaging>jar</packaging>
<name>druid</name>
@@ -16,8 +16,8 @@
<junit.version>4.12</junit.version>
<jmh.version>1.19</jmh.version>
<gpg.skip>false</gpg.skip>
<javadoc.skip>false</javadoc.skip>
<gpg.skip>true</gpg.skip>
<javadoc.skip>true</javadoc.skip>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk.version>1.6</jdk.version>
@@ -1754,8 +1754,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
}
lastFatalErrorTimeMillis = lastErrorTimeMillis;
onFatalError = true;
fatalErrorCount++;
if (fatalErrorCount - fatalErrorCountLastShrink > onFatalErrorMaxActive) {
onFatalError = true;
}
lastFatalError = error;
lastFatalErrorSql = sql;
} finally {
@@ -2498,6 +2500,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
&& (!(keepAlive && activeCount + poolingCount < minIdle)) // 在keepAlive场景不能放弃创建
&& (!initTask) // 线程池初始化时的任务不能放弃创建
&& !isFailContinuous() // failContinuous时不能放弃创建,否则会无法创建线程
&& !isOnFatalError() // onFatalError时不能放弃创建,否则会无法创建线程
) {
clearCreateTask(taskId);
return;
@@ -2985,14 +2988,14 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
boolean needFill = false;
int evictCount = 0;
int keepAliveCount = 0;
int fatalErrorIncrement = fatalErrorCount - fatalErrorCountLastShrink;
fatalErrorCountLastShrink = fatalErrorCount;
try {
if (!inited) {
return;
}
int fatalErrorIncrement = fatalErrorCount - fatalErrorCountLastShrink;
fatalErrorCountLastShrink = fatalErrorCount;
final int checkCount = poolingCount - minIdle;
final long currentTimeMillis = System.currentTimeMillis();
for (int i = 0; i < poolingCount; ++i) {
@@ -3127,6 +3130,13 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
} finally {
lock.unlock();
}
} else if (onFatalError || fatalErrorIncrement > 0) {
lock.lock();
try {
emptySignal();
} finally {
lock.unlock();
}
}
}