quickwit-oss/quickwit · error

{pipeline_exit_status}

Error message

{pipeline_exit_status}

What it means

After the merge pipeline was asked to quit, `merge_cli` checked the ActorExitStatus of the indexing pipeline handle; it was neither Success nor Quit, meaning the pipeline terminated because of a failure or panic in one of its actors. The message itself is just the formatted ActorExitStatus, so the root cause is in the pipeline's logs.

Solutions

  1. Inspect the preceding log lines for the actor error or panic that caused the pipeline failure
  2. Verify the index, split files, and metastore are accessible and consistent
  3. Re-run the merge command once the underlying cause is fixed
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at quickwit/quickwit-cli/src/tool.rs:666 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/d2027bed1774ba2c. Report an issue: GitHub.

Appendix: source

Thrown at quickwit/quickwit-cli/src/tool.rs:666

        if observation.num_ongoing_merges == 0 {
            info!("merge pipeline has no more ongoing merges, exiting");
            break;
        }

        if pipeline_handle.state().is_exit() {
            info!("merge pipeline has exited, exiting");
            break;
        }
    }

    let (pipeline_exit_status, _pipeline_statistics) = pipeline_handle.quit().await;
    indexing_service_handle.quit().await;
    if !matches!(
        pipeline_exit_status,
        ActorExitStatus::Success | ActorExitStatus::Quit
    ) {
        bail!(pipeline_exit_status);
    }
    println!("{} Merge successful.", "✔".color(GREEN_COLOR));
    Ok(())
}

pub async fn garbage_collect_index_cli(args: GarbageCollectIndexArgs) -> anyhow::Result<()> {
    debug!(args=?args, "garbage-collect-index");
    println!("❯ Garbage collecting index...");

    let config = load_node_config(&args.config_uri, None).await?;
    let (storage_resolver, metastore_resolver) =
        get_resolvers(&config.storage_configs, &config.metastore_configs);
    let metastore = metastore_resolver.resolve(&config.metastore_uri).await?;
    let mut index_service = IndexService::new(metastore, storage_resolver);

    if quickwit_common::is_parquet_pipeline_index(&args.index_id) {
        let removal_info = index_service
            .garbage_collect_parquet_index(&args.index_id, args.grace_period, args.dry_run)

View on GitHub (pinned to a39730c5cd)