diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 63b77a6138..ab3eccbbbb 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -677,10 +677,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat connectErrorCount.incrementAndGet(); throw new DataSourceDisableException(); } - + final long nanos = TimeUnit.MILLISECONDS.toNanos(maxWait); final int maxWaitThreadCount = getMaxWaitThreadCount(); - + DruidConnectionHolder holder; try { lock.lockInterruptibly(); @@ -811,6 +811,11 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat } } + if (!enable) { + discardConnection(holder.getConnection()); + return; + } + final long lastActiveTimeMillis = System.currentTimeMillis(); lock.lockInterruptibly(); try { @@ -916,11 +921,6 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat } void putLast(DruidConnectionHolder e, long lastActiveTimeMillis) throws SQLException { - if (!enable) { - discardConnection(e.getConnection()); - return; - } - e.setLastActiveTimeMillis(lastActiveTimeMillis); connections[poolingCount++] = e;