From 6358a52e89cd5568baf28d97d33a60a267e75adf Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 28 Nov 2011 10:01:42 +0800 Subject: [PATCH] dup close log configuable --- .../alibaba/druid/pool/DruidAbstractDataSource.java | 12 ++++++++++++ .../com/alibaba/druid/pool/PoolableConnection.java | 4 +++- .../alibaba/druid/pool/benckmark/Oracle_Case0.java | 8 ++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 549593b68f..44bfd59558 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -192,6 +192,18 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements 10 * 1000, 100 * 1000); + private boolean dupCloseLogEnable = true; + + + public boolean isDupCloseLogEnable() { + return dupCloseLogEnable; + } + + public void setDupCloseLogEnable(boolean dupCloseLogEnable) { + this.dupCloseLogEnable = dupCloseLogEnable; + } + + public Histogram getTransactionHistogram() { return transactionHistogram; } diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index c70d64c1c9..adc91e1161 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -56,10 +56,12 @@ public class PoolableConnection implements PooledConnection, Connection { protected Connection conn; protected ConnectionHolder holder; protected TransactionInfo transactionInfo; + private final boolean dupCloseLogEnable; public PoolableConnection(ConnectionHolder holder){ this.conn = holder.getConnection(); this.holder = holder; + dupCloseLogEnable = holder.getDataSource().isDupCloseLogEnable(); } public SQLException handleException(Throwable t) throws SQLException { @@ -115,7 +117,7 @@ public class PoolableConnection implements PooledConnection, Connection { public void close() throws SQLException { ConnectionHolder holder = this.holder; - if (holder == null) { + if (holder == null && dupCloseLogEnable) { LOG.error("dup close"); return; } diff --git a/src/test/java/com/alibaba/druid/pool/benckmark/Oracle_Case0.java b/src/test/java/com/alibaba/druid/pool/benckmark/Oracle_Case0.java index 3e00abe946..84c2d66bf8 100644 --- a/src/test/java/com/alibaba/druid/pool/benckmark/Oracle_Case0.java +++ b/src/test/java/com/alibaba/druid/pool/benckmark/Oracle_Case0.java @@ -16,9 +16,9 @@ package com.alibaba.druid.pool.benckmark; import java.sql.Connection; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; import java.text.NumberFormat; import javax.sql.DataSource; @@ -37,7 +37,7 @@ public class Oracle_Case0 extends TestCase { private String user; private String password; private String driverClass; - private int initialSize = 10; + private int initialSize = 1; private int minPoolSize = 1; private int maxPoolSize = 2; private int maxActive = 2; @@ -126,8 +126,8 @@ public class Oracle_Case0 extends TestCase { final int COUNT = 1000 * 1; for (int i = 0; i < COUNT; ++i) { Connection conn = dataSource.getConnection(); - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT 1 FROM DUAL"); + PreparedStatement stmt = conn.prepareStatement("SELECT 1 FROM DUAL"); + ResultSet rs = stmt.executeQuery(); rs.next(); rs.close(); stmt.close();