Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agroal - Only generate health checks for JDBC datasources #38959

Merged
merged 2 commits into from
Feb 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
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();
yrodiere marked this conversation as resolved.
Show resolved Hide resolved
Set<String> excludedNames = support.getInactiveOrHealthCheckExcludedNames();
for (String name : names) {
for (String name : agroalSupport.entries.keySet()) {
if (excludedNames.contains(name)) {
continue;
}
Expand Down
Original file line number Diff line number Diff line change
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));
}
}
Original file line number Diff line number Diff line change
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
Loading