diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 79ce7a6a0f..1736360e2f 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -3823,17 +3823,23 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat throw new SQLException("interrupt", e); } + boolean result; try { if (!this.isFillable(toCount)) { JdbcUtils.close(holder.getConnection()); LOG.info("fill connections skip."); break; } - this.putLast(holder, System.currentTimeMillis()); + result = this.putLast(holder, System.currentTimeMillis()); fillCount++; } finally { lock.unlock(); } + + if (!result) { + JdbcUtils.close(holder.getConnection()); + LOG.info("connection fill failed."); + } } if (LOG.isInfoEnabled()) {