quickwit-oss/quickwit · error
ingest API service with queues directory located at `{}` is
Error message
ingest API service with queues directory located at `{}` is not initialized What it means
Ingest API service mailboxes are registered globally per queues directory path. get_ingest_api_service bails when no IngestApiService instance has been started for the given queues_dir_path — you are asking for a service lookup before (or without) the service being initialized at that data dir.
Source
Thrown at quickwit/quickwit-ingest/src/lib.rs:92
format!(
"failed to open the ingest API record log located at `{}`",
queues_dir_path.display()
)
})?;
let (ingest_api_service, _ingest_api_handle) = universe.spawn_builder().spawn(ingest_api_actor);
guard.insert(queues_dir_path.to_path_buf(), ingest_api_service.clone());
Ok(ingest_api_service)
}
/// Returns the instance of the single IngestApiService via a copy of its Mailbox.
pub async fn get_ingest_api_service(
queues_dir_path: &Path,
) -> anyhow::Result<Mailbox<IngestApiService>> {
let guard = INGEST_API_SERVICE_MAILBOXES.lock().await;
if let Some(mailbox) = guard.get(queues_dir_path) {
return Ok(mailbox.clone());
}
bail!(
"ingest API service with queues directory located at `{}` is not initialized",
queues_dir_path.display()
)
}
/// Starts an [`IngestApiService`] instance at `<data_dir_path>/queues`.
pub async fn start_ingest_api_service(
universe: &Universe,
data_dir_path: &Path,
config: &IngestApiConfig,
) -> anyhow::Result<Mailbox<IngestApiService>> {
let queues_dir_path = data_dir_path.join(QUEUES_DIR_NAME);
init_ingest_api(universe, &queues_dir_path, config).await
}
#[cfg(test)]
mod tests {
View on GitHub (pinned to a39730c5cd)
Solutions
- Start the ingest API service (start_ingest_api_service with the same data dir) before looking it up.
- Ensure the querying node is configured to run the ingest service (role/config), or route ingest requests to an indexer node.
- Verify queues_dir_path matches exactly (same data dir) between startup and lookup.
Defensive patterns
Strategy: try-catch
Try / catch
match get_ingest_api_service(&data_dir_path).await {
Ok(mailbox) => mailbox,
Err(_) => {
// service not started on this node: start it or route the request to a node that runs it
start_ingest_api_service(quickwit_config).await?;
get_ingest_api_service(&data_dir_path).await?
}
} Prevention
- Ensure ingest APIs are only called on nodes where the ingest service is enabled.
- Use a single shared data dir constant so startup and lookup paths match.
- Check service health/registration before sending ingest requests.
When it happens
Trigger: Calling get_ingest_api_service(queues_dir_path) when start_ingest_api_service was never called for that exact path, or was called with a different data dir path string.
Common situations: Calling ingest/ingest-status APIs on a searcher node that does not run the ingest service; mismatched or default data dir between service startup and lookup; service crashed/stopped before the lookup.
Related errors
- position of a Kafka partition should never be EOF
- position of a Kinesis shard should never be EOF
- node not found in pending
- OTP logs or traces do not support VRL transforms
- Encountered unknown command: code {other}
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/24cabe0e05b368bf.
Report an issue: GitHub.