bug fixed : dup close

This commit is contained in:
wenshao
2011-12-08 14:32:30 +08:00
parent e4456b916e
commit b08281a153
3 changed files with 31 additions and 2 deletions
@@ -512,6 +512,9 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
// exceptionSorter.isExceptionFatal
if (exceptionSorter != null && exceptionSorter.isExceptionFatal(sqlEx)) {
if (pooledConnection.isTraceEnable()) {
activeConnections.remove(pooledConnection);
}
this.discardConnection(holder.getConnection());
pooledConnection.disable();
}
@@ -58,6 +58,7 @@ public class PoolableConnection implements PooledConnection, Connection {
protected TransactionInfo transactionInfo;
private final boolean dupCloseLogEnable;
private boolean traceEnable = false;
private boolean diable = false;
public PoolableConnection(ConnectionHolder holder){
this.conn = holder.getConnection();
@@ -126,14 +127,24 @@ public class PoolableConnection implements PooledConnection, Connection {
}
void disable() {
this.traceEnable = false;
this.holder = null;
this.transactionInfo = null;
this.diable = true;
}
public boolean isDiable() {
return diable;
}
@Override
public void close() throws SQLException {
ConnectionHolder holder = this.holder;
if (this.diable) {
return;
}
if (holder == null && dupCloseLogEnable) {
LOG.error("dup close");
return;