quarkusio/quarkus · error · RuntimeException
There are no functions to process lambda
Error message
There are no functions to process lambda
What it means
Funqy Amazon Lambda dispatches incoming invocations to a chosen function invoker. If no quarkus.funqy.export is set and the registry contains zero functions, there is nothing to dispatch to, so this RuntimeException is thrown at runtime init.
Source
Thrown at extensions/funqy/funqy-amazon-lambda/runtime/src/main/java/io/quarkus/funqy/lambda/FunqyLambdaBindingRecorder.java:95
}
if (invoker.hasOutput()) {
JavaType javaOutputType = objectMapper.constructType(invoker.getOutputType());
ObjectWriter writer = objectMapper.writerFor(javaOutputType);
invoker.getBindingContext().put(ObjectWriter.class.getName(), writer);
}
}
}
public void chooseInvoker() {
// this is done at Runtime so that we can change it with an environment variable.
if (runtimeConfig.getValue().export().isPresent()) {
invoker = FunctionRecorder.registry.matchInvoker(runtimeConfig.getValue().export().get());
if (invoker == null) {
throw new RuntimeException(
"quarkus.funqy.export does not match a function: " + runtimeConfig.getValue().export().get());
}
} else if (FunctionRecorder.registry.invokers().size() == 0) {
throw new RuntimeException("There are no functions to process lambda");
} else if (FunctionRecorder.registry.invokers().size() > 1) {
throw new RuntimeException("Too many functions. You need to set quarkus.funqy.export");
} else {
invoker = FunctionRecorder.registry.invokers().iterator().next();
}
ObjectReader objectReader = null;
if (invoker.hasInput()) {
objectReader = (ObjectReader) invoker.getBindingContext().get(ObjectReader.class.getName());
if (amazonBuildTimeConfig.advancedEventHandling().enabled()) {
// We create a copy, because the mapper will be reconfigured for the advanced event handling,
// and we do not want to adjust the ObjectMapper, which is available in arc context.
JsonMapper jsonMapper = AmazonLambdaMapperRecorder.objectMapper;
JsonMapper.Builder builder = jsonMapper.rebuild();
reader = new AwsEventInputReader(builder, objectReader, amazonBuildTimeConfig);
} else {View on GitHub (pinned to e1c734241f)
Solutions
- Add @Funq-annotated function methods to the application
- Ensure the module containing the functions is included in the deployed artifact
- Verify the Lambda is pointed at the correct JAR/native binary build output
- If the app intentionally has no functions, remove the funqy-amazon-lambda binding dependency
Example fix
// before
class Functions { }
// after
class Functions {
@Funq
public String hello(String name) { return "hello " + name; }
} Defensive patterns
Strategy: validation
Validate before calling
long count = Arrays.stream(Functions.class.getDeclaredMethods())
.filter(m -> m.isAnnotationPresent(Funq.class)).count();
if (count == 0) throw new IllegalStateException("No @Funq functions found; Lambda has nothing to invoke"); Prevention
- Ensure at least one @Funq method exists in the deployed artifact
- Verify the Lambda points at the right build output
- Include the module containing functions in the deployment package
When it happens
Trigger: The Lambda runtime starts with no @Funq-annotated functions registered in FunctionRecorder.registry and no quarkus.funqy.export configured.
Common situations: Deployed a Lambda artifact whose code has no @Funq methods; functions in a module not included in the build; wrong artifact deployed to Lambda; dependency providing Funqy binding but no function beans.
Related errors
- quarkus.funqy.export does not match a function: ${export}
- Too many functions. You need to set quarkus.funqy.export
- Could not deserialize the provided message.
- Could not serialize the provided output.
- DynamoDB records are too specific. It is not supported to ex
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/5b65e7e375d3ff8d.
Report an issue: GitHub.