From 3e6ef279259ef9ca74b706cdfddedeec54649888 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 7 Sep 2011 13:09:09 +0000 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81RemoveAbondon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@679 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../com/alibaba/druid/pool/DruidDataSource.java | 14 ++++++++++++++ .../com/alibaba/druid/bvt/pool/TestAbondon.java | 1 + 2 files changed, 15 insertions(+) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index e86c751d27..ebeb9535cc 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -771,6 +771,20 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat if (timeMillis >= removeAbandonedTimeoutMillis) { PoolableConnection pooledConnection = entry.getKey(); JdbcUtils.close(pooledConnection); + + if (isLogAbandoned()) { + StringBuilder buf = new StringBuilder(); + buf.append("abondon connection, open stackTrace\n"); + + StackTraceElement[] trace = activeInfo.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + buf.append("\tat "); + buf.append(trace[i].toString()); + buf.append("\n"); + } + + LOG.warn(buf.toString()); + } } } } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/TestAbondon.java b/src/test/java/com/alibaba/druid/bvt/pool/TestAbondon.java index 9dedf3d326..103abd9b2c 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/TestAbondon.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/TestAbondon.java @@ -16,6 +16,7 @@ public class TestAbondon extends TestCase { dataSource = new DruidDataSource(); dataSource.setRemoveAbandoned(true); dataSource.setRemoveAbandonedTimeoutMillis(10); + dataSource.setLogAbandoned(true); dataSource.setTimeBetweenEvictionRunsMillis(1); dataSource.setUrl("jdbc:mock:xxx");