mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
长事务监控
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@862 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -583,7 +583,7 @@ public class PoolableConnection implements PooledConnection, Connection {
|
||||
} catch (SQLException ex) {
|
||||
handleException(ex);
|
||||
} finally {
|
||||
handleEndTransaction();
|
||||
handleEndTransaction(dataSource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -593,11 +593,11 @@ public class PoolableConnection implements PooledConnection, Connection {
|
||||
|
||||
@Override
|
||||
public void rollback() throws SQLException {
|
||||
checkOpen();
|
||||
|
||||
if (transactionInfo == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
checkOpen();
|
||||
|
||||
DruidAbstractDataSource dataSource = holder.getDataSource();
|
||||
dataSource.incrementRollbackCount();
|
||||
@@ -607,7 +607,7 @@ public class PoolableConnection implements PooledConnection, Connection {
|
||||
} catch (SQLException ex) {
|
||||
handleException(ex);
|
||||
} finally {
|
||||
handleEndTransaction();
|
||||
handleEndTransaction(dataSource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -630,14 +630,12 @@ public class PoolableConnection implements PooledConnection, Connection {
|
||||
} catch (SQLException ex) {
|
||||
handleException(ex);
|
||||
} finally {
|
||||
handleEndTransaction();
|
||||
handleEndTransaction(dataSource);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleEndTransaction() {
|
||||
private void handleEndTransaction(DruidAbstractDataSource dataSource) {
|
||||
if (transactionInfo != null) {
|
||||
DruidAbstractDataSource dataSource = holder.getDataSource();
|
||||
|
||||
long currentTimeMillis = System.currentTimeMillis();
|
||||
transactionInfo.setEndTimeMillis(currentTimeMillis);
|
||||
|
||||
|
||||
@@ -249,6 +249,8 @@ public class PoolableStatement extends PoolableWrapper implements Statement {
|
||||
@Override
|
||||
public final boolean execute(String sql) throws SQLException {
|
||||
checkOpen();
|
||||
|
||||
transactionRecord(sql);
|
||||
|
||||
try {
|
||||
return stmt.execute(sql);
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.sql.Date;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import junit.framework.TestCase;
|
||||
@@ -497,6 +498,10 @@ public class ConnectionTest4 extends TestCase {
|
||||
public void test_rollback() throws Exception {
|
||||
PoolableConnection conn = dataSource.getConnection().unwrap(PoolableConnection.class);
|
||||
|
||||
conn.setAutoCommit(false);
|
||||
Statement stmt = conn.createStatement();
|
||||
stmt.execute("SELECT 1");
|
||||
|
||||
conn.getConnection().close();
|
||||
{
|
||||
SQLException error = null;
|
||||
|
||||
Reference in New Issue
Block a user