quickwit-oss/quickwit · error

tasks running the REST server should not panic or be…

Error message

tasks running the REST server should not panic or be cancelled

What it means

The JoinHandle for the spawned `rest_server` task returned an error instead of the server's result, meaning the task panicked or was cancelled before completing. This `.expect` is an internal invariant: the REST server task is expected to run until graceful shutdown, so a JoinError indicates a bug or forced cancellation, not a user-input problem.

Solutions

  1. Inspect the panic backtrace and preceding log lines for the fault inside the REST server task
  2. Check for anything forcibly aborting tasks (test harness timeouts, tokio runtime shutdown)
  3. Report the panic with logs to the Quickwit maintainers if no cause is apparent
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at quickwit/quickwit-serve/src/lib.rs:1055 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at quickwit/quickwit-serve/src/lib.rs:1055

        ingester_decommission_timeout,
        compactor_supervisor_opt,
        compactor_decommission_timeout,
        grpc_shutdown_trigger_tx,
        rest_shutdown_trigger_tx,
        health_shutdown_trigger_tx_opt,
        cluster.clone(),
    ));
    let grpc_join_handle = async move {
        spawn_named_task(grpc_server, "grpc_server")
            .await
            .expect("tasks running the gRPC server should not panic or be cancelled")
            .context("gRPC server failed")
    };

    let rest_join_handle = async move {
        spawn_named_task(rest_server, "rest_server")
            .await
            .expect("tasks running the REST server should not panic or be cancelled")
            .context("REST server failed")
    };

    let health_join_handle = async move {
        spawn_named_task(health_server_fut, "health_server")
            .await
            .expect("tasks running the health check server should not panic or be cancelled")
            .context("health check server failed")
    };

    let chitchat_server_handle = cluster.chitchat_server_termination_watcher().await;

    if let Err(err) = tokio::try_join!(
        grpc_join_handle,
        rest_join_handle,
        health_join_handle,
        chitchat_server_handle
    ) {

View on GitHub (pinned to a39730c5cd)