diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 5159b17d91..c775c5a038 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -532,8 +532,13 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat if (poolingCount == 0) { lowWater.signal(); // send signal to CreateThread create connection - estimate = notEmpty.awaitNanos(estimate); // signal by recycle or creator - + try { + estimate = notEmpty.awaitNanos(estimate); // signal by recycle or creator + } catch (InterruptedException ie) { + notEmpty.signal(); // propagate to non-interrupted thread + throw ie; + } + if (poolingCount == 0) { if (estimate > 0) { continue;