quarkusio/quarkus · error · IllegalStateException

Failed to find any non-blocking provider for startup actions

Error message

Failed to find any non-blocking provider for startup actions. Either import the quarkus-vertx module, or do not declare non-blocking startup actions.

What it means

StartupBuildSteps verifies at build time that a non-blocking provider (the vertx module) is present when the application declares non-blocking startup actions (@Startup methods/observers that are non-blocking). If no NonBlockingProvider service is found on the classpath, it fails with this message telling you to import quarkus-vertx or avoid non-blocking startup actions.

Source

Thrown at extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/StartupBuildSteps.java:192

                                }
                            }
                        }
                    }
                    if (!startupMethods.isEmpty()) {
                        for (MethodInfo method : startupMethods) {
                            AnnotationValue priority = annotationStore.getAnnotation(method, STARTUP_NAME).value();
                            registerStartupObserver(observerRegistration, bean, bean.getIdentifier() + method.toString(),
                                    priority != null ? priority.asInt() : ObserverMethod.DEFAULT_PRIORITY, method);
                        }
                    }
                }
            }
        }
        // Verify at build-time that we do have the non-blocking provider
        if (checkNonBlockingProviders) {
            if (ServiceUtil.classNamesNamedIn(Thread.currentThread().getContextClassLoader(),
                    "META-INF/services/" + NonBlockingProvider.class.getName()).isEmpty()) {
                throw new IllegalStateException(NonBlockingSupport.ERROR_MSG);
            }
        }
    }

    private void registerStartupObserver(ObserverRegistrationPhaseBuildItem observerRegistration, BeanInfo btBean, String id,
            int priority, MethodInfo startupMethod) {
        ObserverConfigurator configurator = observerRegistration.getContext().configure()
                .beanClass(btBean.getBeanClass())
                .observedType(StartupEvent.class);
        configurator.id(id);
        configurator.priority(priority);
        configurator.notify(ng -> {
            BlockCreator b0 = ng.notifyMethod();

            // InjectableBean<Foo> bean = Arc.container().bean("bflmpsvz");
            LocalVar arc = b0.localVar("arc", b0.invokeStatic(ARC_CONTAINER));
            LocalVar rtBean = b0.localVar("bean",
                    b0.invokeInterface(ARC_CONTAINER_BEAN, arc, Const.of(btBean.getIdentifier())));

View on GitHub (pinned to e1c734241f)

Solutions

  1. Add the quarkus-vertx dependency to the project (io.quarkus:quarkus-vertx)
  2. Or make the startup action blocking (return void instead of Uni/CompletionStage)
  3. Or remove the non-blocking @Startup method if it is not needed
  4. Verify with mvn dependency:tree that quarkus-vertx is actually resolved (a BOM entry alone does not add it)

Example fix

// before (pom.xml): no vertx module
// after:
<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-vertx</artifactId>
</dependency>
Defensive patterns

Strategy: validation

Validate before calling

// pom.xml — ensure this dependency exists:
// io.quarkus:quarkus-vertx
// or verify no startup method is reactive:
// @Startup void init() { ... }  // blocking, OK

Prevention

When it happens

Trigger: Declaring a non-blocking startup action (e.g. @Startup on a bean method returning Uni/CompletionStage) while the quarkus-vertx module is not among the application's dependencies, so META-INF/services for NonBlockingProvider is empty.

Common situations: Using reactive startup logic in an app built without the vertx extension; removing quarkus-vertx in a dependency cleanup; templates/projects generated without vertx that later add reactive startup beans.

Related errors


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