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

  1. Add a supported reactive SQL client extension, e.g. io.quarkus:quarkus-reactive-pg-client
  2. Configure the reactive datasource (quarkus.datasource.db-kind, credentials, URL)
  3. 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

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


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/079509975146bac5. Report an issue: GitHub.