{"record":{"id":"f86a88ccfc295b6b","repo":"quarkusio/quarkus","slug":"failed-to-find-any-non-blocking-provider-for-start-f86a88","errorCode":null,"errorMessage":"Failed to find any non-blocking provider for startup actions. Either import the quarkus-vertx module, or do not declare non-blocking startup actions.","messagePattern":"Failed to find any non-blocking provider for startup actions\\. Either import the quarkus-vertx module, or do not declare non-blocking startup actions\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/NonBlockingSupport.java","lineNumber":39,"sourceCode":"        ServiceLoader<NonBlockingProvider> loader = ServiceLoader.load(NonBlockingProvider.class);\n        Optional<NonBlockingProvider> first = loader.findFirst();\n        if (first.isEmpty()) {\n            PROVIDER = null;\n        } else {\n            PROVIDER = first.get();\n        }\n    }\n\n    /**\n     * Delegates this call to the declared {@link NonBlockingProvider} implementation, hopefully Quarkus Vert.x, if\n     * it is available.\n     *\n     * @throws RuntimeException if the Quarkus Vert.x extension is not present.\n     * @see NonBlockingProvider#subscribeAndAwait(Supplier)\n     */\n    public static <T> T subscribeAndAwait(Supplier<Uni<T>> uniSupplier) throws Throwable {\n        if (PROVIDER == null) {\n            throw new RuntimeException(\n                    ERROR_MSG);\n        }\n        return PROVIDER.subscribeAndAwait(uniSupplier);\n    }\n}\n","sourceCodeStart":21,"sourceCodeEnd":45,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/NonBlockingSupport.java#L21-L45","documentation":"NonBlockingSupport.subscribeAndAwait throws RuntimeException when the static PROVIDER is null, meaning the Quarkus Vert.x extension is not on the classpath so no NonBlockingProvider was registered. Non-blocking startup actions require a Vert.x-based event-loop provider to subscribe to the Uni and block for its result.","triggerScenarios":"Declaring a startup action/bean method as non-blocking (e.g. @NonBlocking / returning Uni via NonBlockingProvider helpers) while the application does not include the quarkus-vertx module.","commonSituations":"Removing or never adding the quarkus-vertx dependency while keeping non-blocking startup logic; an extension that transitively depended on vertx was upgraded/removed; tests running without the vertx extension.","solutions":["Add the quarkus-vertx dependency to the application","Make the startup action blocking so it does not require a non-blocking provider","If authoring a library, document/require quarkus-vertx for the non-blocking path"],"exampleFix":"// before\n<dependency> <!-- quarkus-vertx missing --> </dependency>\n// after\n<dependency>\n  <groupId>io.quarkus</groupId>\n  <artifactId>quarkus-vertx</artifactId>\n</dependency>","handlingStrategy":"validation","validationCode":"boolean vertxPresent;\ntry {\n    Class.forName(\"io.quarkus.vertx.runtime.NonBlockingProviderImpl\", false,\n            Thread.currentThread().getContextClassLoader());\n    vertxPresent = true;\n} catch (ClassNotFoundException e) { vertxPresent = false; }","typeGuard":null,"tryCatchPattern":"try {\n    NonBlockingSupport.subscribeAndAwait(uniSupplier);\n} catch (RuntimeException e) {\n    logger.error(\"Add io.quarkus:quarkus-vertx or make the startup action blocking\", e);\n}","preventionTips":["Add quarkus-vertx whenever you use non-blocking startup actions","Audit dependencies after upgrades to ensure quarkus-vertx was not dropped transitively","Prefer blocking startup actions in extensions that do not require Vert.x"],"tags":["quarkus","vertx","startup","non-blocking","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"}