flowable/flowable-engine · error · FlowableIllegalArgumentException
configurations are null
Error message
configurations are null
What it means
EventSubscriptionQueryImpl.configurations() requires a non-null Collection of configuration values for an IN-style filter. Flowable throws FlowableIllegalArgumentException when the collection is null; empty is permitted, null is not, because the query builder cannot translate null into a predicate.
Solutions
- Default the collection to Collections.emptyList() before the call, or skip the configurations() call
- Coerce null lists to empty at deserialization time (e.g. initialize field to a new ArrayList)
- Validate the input list at the API boundary before building the query
Example fix
// before query.configurations(signalNames); // after query.configurations(signalNames == null ? Collections.emptyList() : signalNames);
Defensive patterns
Strategy: validation
Validate before calling
if (configurations == null) {
configurations = Collections.emptyList();
} Type guard
boolean validConfigurations(Collection<String> c) { return c != null && c.stream().allMatch(Objects::nonNull); } Try / catch
try {
query.configurations(configurations);
} catch (FlowableIllegalArgumentException e) {
log.warn("configurations null", e);
} Prevention
- Default collection fields to empty lists in DTOs
- Normalize null lists before query building
- Prefer empty-collection semantics over null in APIs
When it happens
Trigger: Calling eventSubscriptionQuery.configurations(null), e.g. passing a nullable list of message/signal names loaded from config or deserialized from a request with the field omitted.
Common situations: Batch lookups of subscriptions for multiple signal names where the name list is assembled dynamically and can be absent; JSON body field missing mapped to null.
Related errors
- ids are null
- Provided handlerTypes are null
- Provided handlerTypes are null
- Provided job id list is null
- Provided scope ids are null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/03b625de9ec376da.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-eventsubscription-service/src/main/java/org/flowable/eventsubscription/service/impl/EventSubscriptionQueryImpl.java:449
@Override
public EventSubscriptionQueryImpl configuration(String configuration) {
if (configuration == null) {
throw new FlowableIllegalArgumentException("configuration is null");
}
if (inOrStatement) {
this.currentOrQueryObject.configuration = configuration;
} else {
this.configuration = configuration;
}
return this;
}
@Override
public EventSubscriptionQueryImpl configurations(Collection<String> configurations) {
if (configurations == null) {
throw new FlowableIllegalArgumentException("configurations are null");
}
if (inOrStatement) {
this.currentOrQueryObject.configurations = configurations;
} else {
this.configurations = configurations;
}
return this;
}
@Override
public EventSubscriptionQueryImpl withoutConfiguration() {
if (inOrStatement) {
this.currentOrQueryObject.withoutConfiguration = true;
} else {
this.withoutConfiguration = true;
}View on GitHub (pinned to d6d39ce1c6)