From b1e1b6c5e703a03322743fb79200851b9166143f Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 28 Aug 2012 10:25:23 +0800 Subject: [PATCH] decrease lock scope --- .../com/alibaba/druid/pool/DruidDataSource.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 148732e33f..01eb315ba9 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -722,7 +722,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat } finally { lock.unlock(); } - + holder.incrementUseCount(); DruidPooledConnection poolalbeConnection = new DruidPooledConnection(holder); @@ -1174,9 +1174,16 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat continue; } + DruidConnectionHolder holder = null; + try { + holder = new DruidConnectionHolder(DruidDataSource.this, connection); + } catch (SQLException ex) { + LOG.error("create connection holder error", ex); + break; + } + lock.lock(); try { - DruidConnectionHolder holder = new DruidConnectionHolder(DruidDataSource.this, connection); connections[poolingCount++] = holder; if (poolingCount > poolingPeak) { @@ -1188,9 +1195,6 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat notEmpty.signal(); notEmptySignalCount++; - } catch (SQLException ex) { - LOG.error("create connection holder error", ex); - break; } finally { lock.unlock(); } @@ -1214,7 +1218,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat if (closed) { break; } - + if (timeBetweenEvictionRunsMillis > 0) { Thread.sleep(timeBetweenEvictionRunsMillis); } else {