[
https://issues.apache.org/jira/browse/DBCP-597?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17823032#comment-17823032
]
Xiaotian Bai edited comment on DBCP-597 at 3/4/24 5:39 AM:
-----------------------------------------------------------
A quick simple test would be
{code:java}
SharedPoolDataSource ds = new SharedPoolDataSource();
ds.setValidationQuery("SELECT PG_SLEEP(10)");
ds.setValidationQueryTimeout(1);
try (Connection conn = ds.getConnection()){
fail("Expected a timeout exception for the database connection.");
} catch (Exception e) {
// expected, do nothing
}
{code}
I also tested this locally, the connection can be borrowed from the pool
without an exception.
was (Author: JIRAUSER304480):
A quick simple test would be
{code:java}
SharedPoolDataSource ds = new SharedPoolDataSource();
ds.setValidationQuery("SELECT PG_SLEEP(10)");
ds.setValidationQueryTimeout(1);
try (Connection conn = ds.getConnection()){
fail("Expected a timeout exception for the database connection.");
} catch (Exception e) {
// expected, do nothing
}
{code}
> Validation query not timing out on connections managed by
> SharedPoolDataSource
> -------------------------------------------------------------------------------
>
> Key: DBCP-597
> URL: https://issues.apache.org/jira/browse/DBCP-597
> Project: Commons DBCP
> Issue Type: Bug
> Affects Versions: 2.9.0
> Reporter: Xiaotian Bai
> Priority: Major
>
> We are running a Java application that uses
> *org.apache.commons.dbcp2.datasources.SharedPoolDataSource* to maintain a
> JDBC connection pool.
> In a recent database failover event, we noticed database validation queries
> were not timing out as expected, resulting in the application hanging and
> waiting indefinitely for a response from the database.
> The validation query and timeout were both explicitly set on the
> SharedPoolDataSource instance.
> {quote}ds = new SharedPoolDataSource();
> ds.setValidationQuery("SELECT 1")
> ds.setValidationQueryTimeout(5).
> {quote}
>
> Upon diving a bit into the source code, we suspect the issue was caused by
> this code:
> [https://github.com/apache/commons-dbcp/blob/master/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java#L465]
> {quote} conn = pconn.getConnection();
> stmt = conn.createStatement();
> rset = stmt.executeQuery(validationQuery);
> valid = rset.next();
> {quote}
>
> We noticed the _stmt_ statement object does not call setQueryTimeout() and
> the validation query seems to be executed with no timeout at all.
> Could you confirm that this is indeed a bug, not us missing some fundamental
> details? We would greatly appreciate a prompt resolution to this issue,
> thanks!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)