flowable/flowable-engine · error · FlowableIllegalArgumentException
Provided job id list is null
Error message
Provided job id list is null
What it means
DeadLetterJobQueryImpl.jobIds(Collection<String>) validates the collection argument; a null list is rejected with FlowableIllegalArgumentException("Provided job id list is null"). Note the method is also invoked internally from execute() when expanding query filters, so a null list stored earlier surfaces at execution time.
Solutions
- Pass an empty collection instead of null if no ids should be filtered
- Null-check the collection before calling jobIds()
- Fix upstream data sources to return empty collections rather than null
- If triggered from execute(), ensure no code path assigns null to the query's jobIds field
Example fix
// before query.jobIds(idsFromSomewhere); // may be null // after query.jobIds(idsFromSomewhere == null ? Collections.emptyList() : idsFromSomewhere);
Defensive patterns
Strategy: validation
Validate before calling
query.jobIds(jobIds == null ? Collections.emptyList() : jobIds);
Type guard
boolean hasJobIds(Collection<String> ids) { return ids != null; } Try / catch
try {
query.jobIds(jobIds);
} catch (FlowableIllegalArgumentException e) {
query.jobIds(Collections.emptyList());
} Prevention
- Return empty collections, never null, from id-collecting code
- Normalize collections at API boundaries before query building
- Remember execute() re-invokes jobIds — stored nulls surface at execution time
- Add unit tests for queries built with absent filter values
When it happens
Trigger: Calling jobIds(null) directly; or a null jobIds collection having been set and then consumed by execute() (which calls this method) during query execution.
Common situations: Collecting job ids from an upstream call that returned null instead of an empty list; passing an uninitialized collection field; ORM/JSON deserialization producing null for an absent list.
Related errors
- Provided handlerTypes are null
- configurations are null
- ids are null
- Provided correlationId is null
- Provided execution id is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/3a030f9f570282d6.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-job-service/src/main/java/org/flowable/job/service/impl/DeadLetterJobQueryImpl.java:112
}
@Override
public DeadLetterJobQueryImpl jobId(String jobId) {
if (jobId == null) {
throw new FlowableIllegalArgumentException("Provided job id is null");
}
if (inOrStatement) {
this.currentOrQueryObject.id = jobId;
} else {
this.id = jobId;
}
return this;
}
@Override
public DeadLetterJobQuery jobIds(Collection<String> jobIds) {
if (jobIds == null) {
throw new FlowableIllegalArgumentException("Provided job id list is null");
}
if (inOrStatement) {
this.currentOrQueryObject.jobIds = jobIds;
} else {
this.jobIds = jobIds;
}
return this;
}
@Override
public DeadLetterJobQueryImpl processInstanceId(String processInstanceId) {
if (processInstanceId == null) {
throw new FlowableIllegalArgumentException("Provided process instance id is null");
}
if (inOrStatement) {
this.currentOrQueryObject.processInstanceId = processInstanceId;
} else {
this.processInstanceId = processInstanceId;View on GitHub (pinned to d6d39ce1c6)