improved DruidDataSource for profile

This commit is contained in:
高铁
2016-02-02 16:04:42 +08:00
parent cdeec1f73c
commit 1dfe8112a7
8 changed files with 142 additions and 22 deletions
@@ -15,6 +15,7 @@
*/
package com.alibaba.druid.pool;
import com.alibaba.druid.pool.DruidAbstractDataSource.PhysicalConnectionInfo;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import com.alibaba.druid.util.JdbcConstants;
@@ -47,6 +48,10 @@ public final class DruidConnectionHolder {
private final long connectTimeMillis;
private transient long lastActiveTimeMillis;
private long useCount = 0;
private long lastNotEmptyWaitNanos;
private final long createNanoSpan;
private PreparedStatementPool statementPool;
@@ -65,11 +70,16 @@ public final class DruidConnectionHolder {
private boolean discard = false;
public static boolean holdabilityUnsupported = false;
public DruidConnectionHolder(DruidAbstractDataSource dataSource, PhysicalConnectionInfo pyConnectInfo) throws SQLException {
this(dataSource, pyConnectInfo.getPhysicalConnection(), pyConnectInfo.getConnectNanoSpan());
}
public DruidConnectionHolder(DruidAbstractDataSource dataSource, Connection conn) throws SQLException{
public DruidConnectionHolder(DruidAbstractDataSource dataSource, Connection conn, long connectNanoSpan) throws SQLException{
this.dataSource = dataSource;
this.conn = conn;
this.createNanoSpan = connectNanoSpan;
this.connectTimeMillis = System.currentTimeMillis();
this.lastActiveTimeMillis = connectTimeMillis;
@@ -256,6 +266,20 @@ public final class DruidConnectionHolder {
public void setDiscard(boolean discard) {
this.discard = discard;
}
public long getCreateNanoSpan() {
return createNanoSpan;
}
public long getLastNotEmptyWaitNanos() {
return lastNotEmptyWaitNanos;
}
protected void setLastNotEmptyWaitNanos(long lastNotEmptyWaitNanos) {
this.lastNotEmptyWaitNanos = lastNotEmptyWaitNanos;
}
public String toString() {
StringBuilder buf = new StringBuilder();