From 51c27ae8475103b6d7eaad03bf9ef80f6c527355 Mon Sep 17 00:00:00 2001 From: zrlw Date: Thu, 24 Mar 2022 16:43:33 +0800 Subject: [PATCH] close connection if putLast failed during fill operation --- src/main/java/com/alibaba/druid/pool/DruidDataSource.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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()) {