Comment #867 Support network timeout even for Connection.isValid().

pull/876/head
Brett Wooldridge 8 years ago
parent e4871ee357
commit 9e9a97508c

@ -149,28 +149,30 @@ abstract class PoolBase
{ {
try { try {
try { try {
setNetworkTimeout(connection, validationTimeout);
final long validationSeconds = (int) Math.max(1000L, validationTimeout) / 1000;
if (isUseJdbc4Validation) { if (isUseJdbc4Validation) {
return connection.isValid((int) MILLISECONDS.toSeconds(Math.max(1000L, validationTimeout))); return connection.isValid((int) validationSeconds);
} }
setNetworkTimeout(connection, validationTimeout);
try (Statement statement = connection.createStatement()) { try (Statement statement = connection.createStatement()) {
if (isNetworkTimeoutSupported != TRUE) { if (isNetworkTimeoutSupported != TRUE) {
setQueryTimeout(statement, (int) MILLISECONDS.toSeconds(Math.max(1000L, validationTimeout))); setQueryTimeout(statement, (int) validationSeconds);
} }
statement.execute(config.getConnectionTestQuery()); statement.execute(config.getConnectionTestQuery());
} }
} }
finally { finally {
setNetworkTimeout(connection, networkTimeout);
if (isIsolateInternalQueries && !isAutoCommit) { if (isIsolateInternalQueries && !isAutoCommit) {
connection.rollback(); connection.rollback();
} }
} }
setNetworkTimeout(connection, networkTimeout);
return true; return true;
} }
catch (Exception e) { catch (Exception e) {

Loading…
Cancel
Save