support transactionQueryTimeout

This commit is contained in:
wenshao
2011-12-28 16:57:52 +08:00
parent 7d878c1443
commit f80fb10be2
3 changed files with 32 additions and 13 deletions
@@ -132,6 +132,7 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
protected Driver driver;
protected int queryTimeout;
protected int transactionQueryTimeout;
protected long createErrorCount;
@@ -201,6 +202,18 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
private final AtomicLong executeCount = new AtomicLong();
public int getTransactionQueryTimeout() {
if (transactionQueryTimeout <= 0) {
return queryTimeout;
}
return transactionQueryTimeout;
}
public void setTransactionQueryTimeout(int transactionQueryTimeout) {
this.transactionQueryTimeout = transactionQueryTimeout;
}
public long getExecuteCount() {
return executeCount.get();
}
@@ -1029,7 +1042,11 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
return transactionIdSeed.getAndIncrement();
}
void initStatement(Statement stmt) throws SQLException {
void initStatement(PoolableConnection conn, Statement stmt) throws SQLException {
boolean transaction = !conn.getConnectionHolder().isUnderlyingAutoCommit();
int queryTimeout = transaction ? getTransactionQueryTimeout() : getQueryTimeout();
if (queryTimeout > 0) {
stmt.setQueryTimeout(queryTimeout);
}