flowable/flowable-engine · error · FlowableException
Error retrieving app engine info
Error message
Error retrieving app engine info
What it means
Thrown by HistoricTaskInstanceQuery.taskNameInIgnoreCase(Collection) when the passed collection is null. The query builder requires a concrete, non-null list of task names to build the SQL IN clause; a null would make it impossible to construct a valid query. This is an argument-validation guard at API entry.
Source
Thrown at modules/flowable-app-engine-rest/src/main/java/org/flowable/app/rest/service/api/management/AppEngineResource.java:66
restApiInterceptor.accessAppManagementInfo();
}
EngineInfoResponse response = new EngineInfoResponse();
try {
AppEngine appEngine = AppEngines.getDefaultAppEngine();
EngineInfo appEngineInfo = AppEngines.getAppEngineInfo(appEngine.getName());
if (appEngineInfo != null) {
response.setName(appEngineInfo.getName());
response.setResourceUrl(appEngineInfo.getResourceUrl());
response.setException(appEngineInfo.getException());
} else {
response.setName(appEngine.getName());
}
} catch (Exception e) {
throw new FlowableException("Error retrieving app engine info", e);
}
response.setVersion(AppEngine.class.getPackage().getImplementationVersion());
return response;
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Check the collection for null before calling taskNameInIgnoreCase and skip setting the filter when absent.
- Default to an empty list at the source and only call taskNameInIgnoreCase when it is non-empty (note: an empty list also throws).
- Fix the upstream producer so the name list is populated instead of null.
Example fix
// before
query.taskNameInIgnoreCase(names); // names may be null
// after
if (names != null && !names.isEmpty()) {
query.taskNameInIgnoreCase(names);
} Defensive patterns
Strategy: validation
Validate before calling
if (names == null) { return Collections.emptyList(); }
if (names.isEmpty()) { return Collections.emptyList(); }
query.taskNameInIgnoreCase(names); Type guard
static boolean isNonEmpty(Collection<String> c) { return c != null && !c.isEmpty(); } Try / catch
try {
query.taskNameInIgnoreCase(names);
} catch (FlowableIllegalArgumentException e) {
LOG.warn("Invalid task name filter: {}", e.getMessage());
return Collections.emptyList();
} Prevention
- Never pass optional collections straight into Flowable query builders
- Normalize null lists to empty lists at API boundaries
- Wrap query construction in a shared validation helper
When it happens
Trigger: Calling taskNameInIgnoreCase(null), typically when a nullable variable holding the name list is passed straight into the query builder.
Common situations: A method parameter or configuration value that resolves to null (empty optional, missing request parameter, unmapped JSON field) is forwarded directly to taskNameInIgnoreCase.
Related errors
- No deployment id available
- No resource name available
- variableNames are null or empty
- nameLike is null
- nameLikeIgnoreCase is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/6f6f65f10aa30cee.
Report an issue: GitHub.