Skip to content

Commit a534b96

Browse files
authored
Merge pull request #5185 from anamarija/4082-validationQuery
Introduce the ability to configure Agroal validation query
2 parents 0553b00 + ecc658d commit a534b96

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

extensions/agroal/runtime/src/main/java/io/quarkus/agroal/runtime/AbstractDataSourceProducer.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.quarkus.agroal.runtime;
22

3+
import java.sql.Connection;
34
import java.sql.Driver;
5+
import java.sql.Statement;
46
import java.util.ArrayList;
57
import java.util.List;
68
import java.util.Optional;
@@ -167,6 +169,22 @@ public AgroalDataSource createDataSource(String dataSourceName,
167169
if (dataSourceRuntimeConfig.backgroundValidationInterval.isPresent()) {
168170
poolConfiguration.validationTimeout(dataSourceRuntimeConfig.backgroundValidationInterval.get());
169171
}
172+
if (dataSourceRuntimeConfig.validationQuerySql.isPresent()) {
173+
String validationQuery = dataSourceRuntimeConfig.validationQuerySql.get();
174+
poolConfiguration.connectionValidator(new ConnectionValidator() {
175+
176+
@Override
177+
public boolean isValid(Connection connection) {
178+
try (Statement stmt = connection.createStatement()) {
179+
stmt.execute(validationQuery);
180+
return true;
181+
} catch (Exception e) {
182+
log.warn("Connection validation failed", e);
183+
}
184+
return false;
185+
}
186+
});
187+
}
170188
if (dataSourceRuntimeConfig.idleRemovalInterval.isPresent()) {
171189
poolConfiguration.reapTimeout(dataSourceRuntimeConfig.idleRemovalInterval.get());
172190
}

extensions/agroal/runtime/src/main/java/io/quarkus/agroal/runtime/DataSourceRuntimeConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,10 @@ public class DataSourceRuntimeConfig {
124124
*/
125125
@ConfigItem
126126
public Optional<String> newConnectionSql;
127+
128+
/**
129+
* Query executed to validate a connection.
130+
*/
131+
@ConfigItem
132+
public Optional<String> validationQuerySql;
127133
}

0 commit comments

Comments
 (0)