quarkusio/quarkus · error · ConfigurationException
The OpenID Connect Database Token State Manager extension re
Error message
The OpenID Connect Database Token State Manager extension requires Reactive SQL Client extension. Please refer to the https://quarkus.io/guides/reactive-sql-clients for more information.
What it means
validateReactiveSqlClient throws when no supported Reactive SQL client extension is present at all. The OIDC DB token state manager persists tokens in a relational database and therefore requires at least one supported reactive SQL client extension to build its datasource.
Source
Thrown at extensions/oidc-db-token-state-manager/deployment/src/main/java/io/quarkus/oidc/db/token/state/manager/OidcDbTokenStateManagerProcessor.java:98
.done();
}
@BuildStep
ReactiveSqlClientBuildItem validateReactiveSqlClient(
Capabilities capabilities) {
ReactiveSqlClientBuildItem sqlClientDbTable = null;
for (String reactiveClient : SUPPORTED_REACTIVE_CLIENTS) {
if (capabilities.isPresent(reactiveClient)) {
if (sqlClientDbTable == null) {
sqlClientDbTable = new ReactiveSqlClientBuildItem(reactiveClient);
} else {
throw new ConfigurationException("The OpenID Connect Database Token State Manager extension is "
+ "only supported when exactly one Reactive SQL Client extension is present.");
}
}
}
if (sqlClientDbTable == null) {
throw new ConfigurationException(
"The OpenID Connect Database Token State Manager extension requires Reactive SQL Client extension. "
+ "Please refer to the https://quarkus.io/guides/reactive-sql-clients for more information.");
}
return sqlClientDbTable;
}
@BuildStep
AdditionalBeanBuildItem makeDbTokenStateManagerInitializerBean() {
return new AdditionalBeanBuildItem(OidcDbTokenStateManagerInitializer.class);
}
@BuildStep
@Record(STATIC_INIT)
BeanContainerListenerBuildItem createDbTokenStateInitializerProps(ReactiveSqlClientBuildItem sqlClientBuildItem,
OidcDbTokenStateManagerRecorder recorder) {
var supportedReactiveSqlClient = switch (sqlClientBuildItem.reactiveClient) {
case REACTIVE_PG_CLIENT -> SupportedReactiveSqlClient.POSTGRESQL;
case REACTIVE_MYSQL_CLIENT -> SupportedReactiveSqlClient.MYSQL;View on GitHub (pinned to e1c734241f)
Solutions
- Add a supported reactive SQL client extension, e.g. io.quarkus:quarkus-reactive-pg-client
- Configure the reactive datasource (quarkus.datasource.db-kind, credentials, URL)
- Confirm the extension list with ./mvnw quarkus:list-extensions or the Quarkus Dev UI
Example fix
// before <dependency>io.quarkus:quarkus-oidc-db-token-state-manager</dependency> // after <dependency>io.quarkus:quarkus-oidc-db-token-state-manager</dependency> <dependency>io.quarkus:quarkus-reactive-pg-client</dependency>
Defensive patterns
Strategy: validation
Validate before calling
if (SUPPORTED_REACTIVE_CLIENTS.stream().noneMatch(capabilities::isPresent)) {
throw new IllegalStateException("Add a reactive SQL client extension (e.g. quarkus-reactive-pg-client)");
} Prevention
- Add the reactive SQL client extension together with the token state manager extension
- Remember JDBC clients do not satisfy this requirement — reactive is required
- Verify installed extensions in Dev UI or quarkus:list-extensions
When it happens
Trigger: quarkus-oidc-db-token-state-manager is on the classpath but none of the supported reactive SQL client extensions (PostgreSQL, MySQL, MSSQL, DB2, Oracle) are present.
Common situations: Adding the token state manager extension and forgetting the database driver; using only JDBC clients (reactive ones are required); typo in the dependency artifact.
Understand the failure class
Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.
Related errors
- Unknown Reactive Sql Client <client>
- The OpenID Connect Database Token State Manager extension is
- Failed to find any non-blocking provider for startup actions
- Unknown cache type:
- The '%s' property can only be set to 'idtoken' for WEB_APP a
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/079509975146bac5.
Report an issue: GitHub.