mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
fixed onFatalError emptySingle improve
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_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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user