mirror of
https://github.com/jlengrand/quarkus.git
synced 2026-03-10 08:41:22 +00:00
validationQuery option added for connection pool
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package io.quarkus.agroal.runtime;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.Driver;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -167,6 +169,22 @@ public abstract class AbstractDataSourceProducer {
|
||||
if (dataSourceRuntimeConfig.backgroundValidationInterval.isPresent()) {
|
||||
poolConfiguration.validationTimeout(dataSourceRuntimeConfig.backgroundValidationInterval.get());
|
||||
}
|
||||
if (dataSourceRuntimeConfig.validationQuerySql.isPresent()) {
|
||||
String validationQuery = dataSourceRuntimeConfig.validationQuerySql.get();
|
||||
poolConfiguration.connectionValidator(new ConnectionValidator() {
|
||||
|
||||
@Override
|
||||
public boolean isValid(Connection connection) {
|
||||
try (Statement stmt = connection.createStatement()) {
|
||||
stmt.execute(validationQuery);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.warn("Connection validation failed", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
if (dataSourceRuntimeConfig.idleRemovalInterval.isPresent()) {
|
||||
poolConfiguration.reapTimeout(dataSourceRuntimeConfig.idleRemovalInterval.get());
|
||||
}
|
||||
|
||||
@@ -124,4 +124,10 @@ public class DataSourceRuntimeConfig {
|
||||
*/
|
||||
@ConfigItem
|
||||
public Optional<String> newConnectionSql;
|
||||
|
||||
/**
|
||||
* Query executed to validate a connection.
|
||||
*/
|
||||
@ConfigItem
|
||||
public Optional<String> validationQuerySql;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user