quarkusio/quarkus · error · RuntimeException
quarkus.funqy.export value does not map a function: ${export
Error message
quarkus.funqy.export value does not map a function: ${export} What it means
quarkus.funqy.export selects the default function by name at RUNTIME start. If the configured name does not match any registered FunctionInvoker, KnativeEventsBindingRecorder.start throws a RuntimeException naming the bad export value.
Source
Thrown at extensions/funqy/funqy-knative-events/runtime/src/main/java/io/quarkus/funqy/runtime/bindings/knative/events/KnativeEventsBindingRecorder.java:210
shutdown.addShutdownTask(new Runnable() {
@Override
public void run() {
FunctionConstructor.CONTAINER = null;
objectMapper = null;
typeTriggers = null;
}
});
FunctionConstructor.CONTAINER = beanContainer;
// This needs to happen in start at RUNTIME so that
// mappings can be overridden by environment variables
FunctionInvoker defaultInvoker = null;
if (runtimeConfig.getValue().export().isPresent()) {
defaultInvoker = FunctionRecorder.registry.matchInvoker(runtimeConfig.getValue().export().get());
if (defaultInvoker == null) {
throw new RuntimeException(
"quarkus.funqy.export value does not map a function: " + runtimeConfig.getValue().export().get());
}
}
if (eventsRuntimeConfig.getValue().mapping() != null) {
for (Map.Entry<String, FunqyKnativeEventsConfig.FunctionMapping> entry : eventsRuntimeConfig.getValue().mapping()
.entrySet()) {
String functionName = entry.getKey();
FunctionInvoker invoker = FunctionRecorder.registry.matchInvoker(functionName);
if (invoker == null) {
throw new RuntimeException("knative-events.function-mapping does not map to a function: " + functionName);
}
FunqyKnativeEventsConfig.FunctionMapping mapping = entry.getValue();
if (mapping.trigger().isPresent()) {
typeTriggers.compute(mapping.trigger().get(), (k, v) -> {
if (v == null) {
v = new ArrayList<>();View on GitHub (pinned to e1c734241f)
Solutions
- Set quarkus.funqy.export to the exact name of an existing Funqy function (the method name or the name given in @Function).
- Remove the quarkus.funqy.export property if only one function exists and default selection is fine.
- List registered functions (function names from @Function annotations) and fix the mismatch.
- Update the Knative env var / application.properties after renaming the function.
Example fix
// before quarkus.funqy.export=myFunction // after (function declared as @Function public void processOrder(...)) quarkus.funqy.export=processOrder
Defensive patterns
Strategy: validation
Validate before calling
String export = config.getOptionalValue("quarkus.funqy.export", String.class).orElse(null);
if (export != null && !registeredFunctionNames.contains(export)) {
throw new IllegalArgumentException("quarkus.funqy.export does not map a function: " + export);
} Type guard
boolean exportIsValid(String export, Set<String> knownFunctions) {
return export == null || knownFunctions.contains(export);
} Try / catch
try { app.start(); } catch (RuntimeException e) { if (e.getMessage().contains("quarkus.funqy.export value does not map a function")) { log.error("Fix quarkus.funqy.export to match a @Function name"); } throw e; } Prevention
- Keep quarkus.funqy.export in sync with @Function method names
- Verify env-var overrides (FUNQY_EXPORT / QUARKUS_FUNQY_EXPORT) in Knative deployments after renames
- Omit the property when there is only one function
- Smoke-test startup locally before pushing the container
When it happens
Trigger: Setting quarkus.funqy.export=<name> where <name> matches no @Function-annotated method name registered in FunctionRecorder.registry; evaluated in start() so application startup fails.
Common situations: Typo in the property value; renaming the Java method without updating the config; overriding via environment variable (FUNQY_EXPORT or quarkus.funqy.export) in Knative deployment with a stale function name; exporting a function that lives in a different artifact.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- knative-events.function-mapping does not map to a function:
- Only supported major versions are 0 and 1.
- Don't know how to get event data (dataContentType: '%s', jav
- Cannot deserialize data for data-content-encoding: '${dataCo
- Don't know how to get event data (dataContentType: '%s', jav
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/4c3c85ea53fe37e1.
Report an issue: GitHub.