From d553c2d7e98ada4f0cf1130721d54b3f9ea355d1 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 20 Jun 2015 23:10:27 +0800 Subject: [PATCH] bug fixed for CreateConnectionTask --- .../alibaba/druid/pool/DruidDataSource.java | 19 ++++++++++++++++++- 1 file changed, 18 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 8a73839301..8475be5795 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -1720,6 +1720,12 @@ public class DruidDataSource extends DruidAbstractDataSource try { holder = new DruidConnectionHolder(DruidDataSource.this, connection); } catch (SQLException ex) { + lock.lock(); + try { + createTaskCount--; + } finally { + lock.unlock(); + } LOG.error("create connection holder error", ex); return; } @@ -1791,7 +1797,12 @@ public class DruidDataSource extends DruidAbstractDataSource if (errorCount > connectionErrorRetryAttempts && timeBetweenConnectErrorMillis > 0) { if (breakAfterAcquireFailure) { - createTaskCount--; + lock.lock(); + try { + createTaskCount--; + } finally { + lock.unlock(); + } return; } @@ -1802,6 +1813,12 @@ public class DruidDataSource extends DruidAbstractDataSource LOG.error("create connection error", e); continue; } catch (Error e) { + lock.lock(); + try { + createTaskCount--; + } finally { + lock.unlock(); + } LOG.error("create connection error", e); break; }