apache/druid · error · WebApplicationException
No task information found for task with id: [%s]
Error message
No task information found for task with id: [%s]
What it means
OverlordResource throws this 500 error while listing task status entries when a TaskStatusPlus record has no datasource information. Tasks always carry a datasource, so a null value means the task record is incomplete or corrupted in the task storage metadata store. The resource aborts the whole listing rather than return entries with unknown authorization semantics.
Source
Thrown at indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/OverlordResource.java:864
java.util.Optional<Resource> destinationResource = task.getDestinationResource();
destinationResource.ifPresent(resource -> resourceActions.add(new ResourceAction(resource, Action.WRITE)));
if (authConfig.isEnableInputSourceSecurity()) {
resourceActions.addAll(task.getInputSourceResources());
}
return resourceActions;
}
private List<TaskStatusPlus> securedTaskStatusPlus(
List<TaskStatusPlus> collectionToFilter,
@Nullable String dataSource,
HttpServletRequest req
)
{
Function<TaskStatusPlus, Iterable<ResourceAction>> raGenerator = taskStatusPlus -> {
final String taskId = taskStatusPlus.getId();
final String taskDatasource = taskStatusPlus.getDataSource();
if (taskDatasource == null) {
throw new WebApplicationException(
Response.serverError().entity(
StringUtils.format("No task information found for task with id: [%s]", taskId)
).build()
);
}
return Collections.singletonList(
new ResourceAction(new Resource(taskDatasource, ResourceType.DATASOURCE), Action.READ)
);
};
if (dataSource != null) {
//skip auth check here, as it's already done in getTasks
return collectionToFilter;
}
return Lists.newArrayList(
AuthorizationUtils.filterAuthorizedResources(
req,
collectionToFilter,
raGenerator,View on GitHub (pinned to 9b90983fd2)
Solutions
- Inspect the metadata store task table and find the row whose data_source column is NULL for the reported task id
- Delete the orphaned/corrupted task record or set its datasource (after stopping writes) so listing can proceed
- Check for indexer versions known to write tasks without datasource and upgrade
- If the record comes from a failed task-store migration, restore from backup and re-run the migration
Example fix
// before: whole listing fails on one bad record
throw new WebApplicationException(Response.serverError().entity(
StringUtils.format("No task information found for task with id: [%s]", taskId)).build());
// after: skip records lacking datasource (they cannot be authorized)
if (taskDatasource == null) {
LOG.warn("Skipping task [%s] with no datasource information", taskId);
return Collections.emptyList();
} Defensive patterns
Strategy: validation
Validate before calling
const resp = await fetch(`${overlord}/druid/indexer/v1/tasks`);
const tasks = await resp.json();
const bad = tasks.filter(t => !t.dataSource);
if (bad.length) console.warn('tasks missing datasource:', bad.map(t => t.id)); Type guard
function hasDataSource(t) { return t != null && typeof t.dataSource === 'string' && t.dataSource.length > 0; } Prevention
- Monitor the metadata store for task rows with NULL data_source
- Avoid manual edits to the task metadata table
- Keep indexer and overlord versions aligned
When it happens
Trigger: Calling GET on the overlord's task-listing endpoints (e.g. /druid/indexer/v1/tasks) via authorizedList/securedTaskStatusPlus when any task row retrieved from the task storage (metadata store) has getDataSource() == null.
Common situations: Corrupted or manually edited metadata store rows; tasks written by a buggy or downgraded indexer version that omitted the datasource; partial writes during metadata store failures.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- Cannot find any supervisor with id: [%s]
- Cannot find any task with id: [%s]
- authResult.getErrorMessage()
- authResult.getErrorMessage()
- Failed to sample data: %s
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/b3680817bd71a0f7.
Report an issue: GitHub.