quarkusio/quarkus · error · IOException

We didn't found any HttpFunction to run (or there is multipl

Error message

We didn't found any HttpFunction to run (or there is multiple one and none selected inside your application.properties)

What it means

QuarkusHttpFunction.service throws this when the Quarkus app started but no HttpFunction delegate was bound. The delegate is resolved at startup from CDI beans implementing HttpFunction; it is null when none exist or when multiple exist without an explicit selection.

Source

Thrown at extensions/google-cloud-functions/runtime/src/main/java/io/quarkus/gcp/functions/QuarkusHttpFunction.java:76

                throw new RuntimeException(e);
            }
        }
    }

    static void clearState() {
        delegate = null;
        delegateClassLoader = null;
    }

    @Override
    public void service(HttpRequest httpRequest, HttpResponse httpResponse) throws Exception {
        if (!started) {
            throw new IOException(deploymentStatus);
        }

        // maybe we can check this at static init
        if (delegate == null) {
            throw new IOException("We didn't found any HttpFunction to run " +
                    "(or there is multiple one and none selected inside your application.properties)");
        }

        ClassLoader currentCl = Thread.currentThread().getContextClassLoader();
        try {
            Thread.currentThread().setContextClassLoader(delegateClassLoader);
            delegate.service(httpRequest, httpResponse);
        } finally {
            Thread.currentThread().setContextClassLoader(currentCl);
        }
    }
}

View on GitHub (pinned to e1c734241f)

Solutions

  1. Provide exactly one HttpFunction bean, or
  2. With multiple implementations, set quarkus.google-cloud-functions.function=<FQCN> in application.properties
  3. Annotate/implement the class so it is registered as an unremovable CDI bean

Example fix

# before
# (two HttpFunction impls, no selection)
# after
quarkus.google-cloud-functions.function=com.example.MyHttpFunction
Defensive patterns

Strategy: validation

Validate before calling

long count = Arc.container().select(HttpFunction.class).count();
String selected = config.getValue("quarkus.google-cloud-functions.function", String.class);
if (count == 0 || (count > 1 && selected == null)) {
    throw new IllegalStateException("HttpFunction delegate not uniquely selected");
}

Try / catch

try {
    function.service(request, response);
} catch (IOException e) {
    if (e.getMessage().contains("didn't found any HttpFunction")) {
        throw new IllegalStateException("Set quarkus.google-cloud-functions.function or keep a single HttpFunction bean");
    }
    throw e;
}

Prevention

When it happens

Trigger: An HTTP request hits the function while the application has zero HttpFunction beans, or has several and none was selected via the configuration property.

Common situations: Adding a second HttpFunction implementation without selecting one, deleting/renaming the implementation, or the implementing class not being a CDI-discoverable bean.

Related errors


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