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

  1. Start the ingest API service (start_ingest_api_service with the same data dir) before looking it up.
  2. Ensure the querying node is configured to run the ingest service (role/config), or route ingest requests to an indexer node.
  3. 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

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


AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08). Data as JSON: /api/errors/24cabe0e05b368bf. Report an issue: GitHub.