From dfb616aed1a905a4118f3104c32b40c3cbbb9eb3 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 11 Sep 2011 10:42:56 +0000 Subject: [PATCH] startTransactionCount git-svn-id: http://code.alibabatech.com/svn/druid/trunk@738 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../druid/pool/DruidAbstractDataSource.java | 15 ++++++++++++--- .../druid/pool/DruidAbstractDataSourceMBean.java | 2 ++ .../com/alibaba/druid/pool/DruidDataSource.java | 4 ++++ .../alibaba/druid/pool/PoolableConnection.java | 4 ++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 5ccda76bb7..9c1f1bd187 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -172,24 +172,33 @@ public abstract class DruidAbstractDataSource implements DruidAbstractDataSource protected boolean breakAfterAcquireFailure = false; protected final AtomicLong commitCount = new AtomicLong(); + protected final AtomicLong startTransactionCount = new AtomicLong(); protected final AtomicLong rollbackCount = new AtomicLong(); public long getCommitCount() { return commitCount.get(); } - + public void incrementCommitCount() { commitCount.incrementAndGet(); } - + public long getRollbackCount() { return rollbackCount.get(); } - + public void incrementRollbackCount() { rollbackCount.incrementAndGet(); } + public long getStartTransactionCount() { + return startTransactionCount.get(); + } + + public void incrementStartTransactionCount() { + startTransactionCount.incrementAndGet(); + } + public boolean isBreakAfterAcquireFailure() { return breakAfterAcquireFailure; } diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java index 81b2c8b094..6fe855a117 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSourceMBean.java @@ -39,6 +39,8 @@ public interface DruidAbstractDataSourceMBean { long getCommitCount(); long getRollbackCount(); + + long getStartTransactionCount(); int getQueryTimeout(); diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 0c299c19b6..4763c99daf 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -127,6 +127,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat } finally { lock.unlock(); } + + commitCount.set(0); + rollbackCount.set(0); + startTransactionCount.set(0); } public boolean isEnable() { diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index d6c3ecdd05..17aeaa9900 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -528,6 +528,10 @@ public class PoolableConnection implements PooledConnection, Connection { checkOpen(); try { + if ((!autoCommit) && conn.getAutoCommit()) { + holder.getDataSource().incrementStartTransactionCount(); + } + conn.setAutoCommit(autoCommit); } catch (SQLException ex) { handleException(ex);