Skip to content

Commit

Permalink
Merge pull request #38959 from gsmet/filter-health-checks
Browse files Browse the repository at this point in the history
Agroal - Only generate health checks for JDBC datasources
  • Loading branch information
gsmet committed Feb 24, 2024
2 parents 594cc8a + 5ee3dc6 commit 8c025c6
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 21 deletions.
Expand Up @@ -18,6 +18,7 @@
import org.eclipse.microprofile.health.Readiness;

import io.agroal.api.AgroalDataSource;
import io.quarkus.agroal.runtime.AgroalDataSourceSupport;
import io.quarkus.agroal.runtime.DataSources;
import io.quarkus.arc.Arc;
import io.quarkus.datasource.common.runtime.DataSourceUtil;
Expand All @@ -40,9 +41,10 @@ protected void init() {
}
DataSourceSupport support = Arc.container().instance(DataSourceSupport.class)
.get();
Set<String> names = support.getConfiguredNames();
AgroalDataSourceSupport agroalSupport = Arc.container().instance(AgroalDataSourceSupport.class)
.get();
Set<String> excludedNames = support.getInactiveOrHealthCheckExcludedNames();
for (String name : names) {
for (String name : agroalSupport.entries.keySet()) {
if (excludedNames.contains(name)) {
continue;
}
Expand Down
Expand Up @@ -15,20 +15,12 @@ public class DataSourceRecorder {
public RuntimeValue<DataSourceSupport> createDataSourceSupport(
DataSourcesBuildTimeConfig buildTimeConfig,
DataSourcesRuntimeConfig runtimeConfig) {
Stream.Builder<String> configured = Stream.builder();
Stream.Builder<String> excludedForHealthChecks = Stream.builder();
for (Map.Entry<String, DataSourceBuildTimeConfig> dataSource : buildTimeConfig.dataSources().entrySet()) {
// TODO this is wrong, as the default datasource could be configured without db-kind being set:
// it's inferred automatically for the default datasource when possible.
// See https://github.com/quarkusio/quarkus/issues/37779
if (dataSource.getValue().dbKind().isPresent()) {
configured.add(dataSource.getKey());
}
if (dataSource.getValue().healthExclude()) {
excludedForHealthChecks.add(dataSource.getKey());
}
}
Set<String> names = configured.build().collect(toUnmodifiableSet());
Set<String> excludedNames = excludedForHealthChecks.build().collect(toUnmodifiableSet());

Stream.Builder<String> inactive = Stream.builder();
Expand All @@ -39,6 +31,6 @@ public RuntimeValue<DataSourceSupport> createDataSourceSupport(
}
Set<String> inactiveNames = inactive.build().collect(toUnmodifiableSet());

return new RuntimeValue<>(new DataSourceSupport(names, excludedNames, inactiveNames));
return new RuntimeValue<>(new DataSourceSupport(excludedNames, inactiveNames));
}
}
Expand Up @@ -12,26 +12,17 @@
*/
public class DataSourceSupport {

private final Set<String> configuredNames;
private final Set<String> inactiveNames;
private final Set<String> inactiveOrHealthCheckExcludedNames;

public DataSourceSupport(Set<String> configuredNames, Set<String> healthCheckExcludedNames,
public DataSourceSupport(Set<String> healthCheckExcludedNames,
Set<String> inactiveNames) {
this.configuredNames = configuredNames;
this.inactiveOrHealthCheckExcludedNames = new HashSet<>();
inactiveOrHealthCheckExcludedNames.addAll(inactiveNames);
inactiveOrHealthCheckExcludedNames.addAll(healthCheckExcludedNames);
this.inactiveNames = inactiveNames;
}

// TODO careful when using this, as it might (incorrectly) not include the default datasource.
// See TODO in code that calls the constructor of this class.
// See https://github.com/quarkusio/quarkus/issues/37779
public Set<String> getConfiguredNames() {
return configuredNames;
}

public Set<String> getInactiveNames() {
return inactiveNames;
}
Expand Down

0 comments on commit 8c025c6

Please sign in to comment.