{"record":{"id":"079509975146bac5","repo":"quarkusio/quarkus","slug":"the-openid-connect-database-token-state-manager-ex-079509","errorCode":null,"errorMessage":"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.","messagePattern":"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\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"extensions/oidc-db-token-state-manager/deployment/src/main/java/io/quarkus/oidc/db/token/state/manager/OidcDbTokenStateManagerProcessor.java","lineNumber":98,"sourceCode":"                .done();\n    }\n\n    @BuildStep\n    ReactiveSqlClientBuildItem validateReactiveSqlClient(\n            Capabilities capabilities) {\n        ReactiveSqlClientBuildItem sqlClientDbTable = null;\n        for (String reactiveClient : SUPPORTED_REACTIVE_CLIENTS) {\n            if (capabilities.isPresent(reactiveClient)) {\n                if (sqlClientDbTable == null) {\n                    sqlClientDbTable = new ReactiveSqlClientBuildItem(reactiveClient);\n                } else {\n                    throw new ConfigurationException(\"The OpenID Connect Database Token State Manager extension is \"\n                            + \"only supported when exactly one Reactive SQL Client extension is present.\");\n                }\n            }\n        }\n        if (sqlClientDbTable == null) {\n            throw new ConfigurationException(\n                    \"The OpenID Connect Database Token State Manager extension requires Reactive SQL Client extension. \"\n                            + \"Please refer to the https://quarkus.io/guides/reactive-sql-clients for more information.\");\n        }\n        return sqlClientDbTable;\n    }\n\n    @BuildStep\n    AdditionalBeanBuildItem makeDbTokenStateManagerInitializerBean() {\n        return new AdditionalBeanBuildItem(OidcDbTokenStateManagerInitializer.class);\n    }\n\n    @BuildStep\n    @Record(STATIC_INIT)\n    BeanContainerListenerBuildItem createDbTokenStateInitializerProps(ReactiveSqlClientBuildItem sqlClientBuildItem,\n            OidcDbTokenStateManagerRecorder recorder) {\n        var supportedReactiveSqlClient = switch (sqlClientBuildItem.reactiveClient) {\n            case REACTIVE_PG_CLIENT -> SupportedReactiveSqlClient.POSTGRESQL;\n            case REACTIVE_MYSQL_CLIENT -> SupportedReactiveSqlClient.MYSQL;","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/oidc-db-token-state-manager/deployment/src/main/java/io/quarkus/oidc/db/token/state/manager/OidcDbTokenStateManagerProcessor.java#L80-L116","documentation":"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.","triggerScenarios":"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.","commonSituations":"Adding the token state manager extension and forgetting the database driver; using only JDBC clients (reactive ones are required); typo in the dependency artifact.","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"],"exampleFix":"// before\n<dependency>io.quarkus:quarkus-oidc-db-token-state-manager</dependency>\n// after\n<dependency>io.quarkus:quarkus-oidc-db-token-state-manager</dependency>\n<dependency>io.quarkus:quarkus-reactive-pg-client</dependency>","handlingStrategy":"validation","validationCode":"if (SUPPORTED_REACTIVE_CLIENTS.stream().noneMatch(capabilities::isPresent)) {\n    throw new IllegalStateException(\"Add a reactive SQL client extension (e.g. quarkus-reactive-pg-client)\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["quarkus","oidc","reactive-sql","missing-dependency"],"backgroundTag":"missing-dependency","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}