{"record":{"id":"d2027bed1774ba2c","repo":"quickwit-oss/quickwit","slug":"pipeline-exit-status","errorCode":null,"errorMessage":"{pipeline_exit_status}","messagePattern":"\\{pipeline_exit_status\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-cli/src/tool.rs","lineNumber":666,"sourceCode":"\n        if observation.num_ongoing_merges == 0 {\n            info!(\"merge pipeline has no more ongoing merges, exiting\");\n            break;\n        }\n\n        if pipeline_handle.state().is_exit() {\n            info!(\"merge pipeline has exited, exiting\");\n            break;\n        }\n    }\n\n    let (pipeline_exit_status, _pipeline_statistics) = pipeline_handle.quit().await;\n    indexing_service_handle.quit().await;\n    if !matches!(\n        pipeline_exit_status,\n        ActorExitStatus::Success | ActorExitStatus::Quit\n    ) {\n        bail!(pipeline_exit_status);\n    }\n    println!(\"{} Merge successful.\", \"✔\".color(GREEN_COLOR));\n    Ok(())\n}\n\npub async fn garbage_collect_index_cli(args: GarbageCollectIndexArgs) -> anyhow::Result<()> {\n    debug!(args=?args, \"garbage-collect-index\");\n    println!(\"❯ Garbage collecting index...\");\n\n    let config = load_node_config(&args.config_uri, None).await?;\n    let (storage_resolver, metastore_resolver) =\n        get_resolvers(&config.storage_configs, &config.metastore_configs);\n    let metastore = metastore_resolver.resolve(&config.metastore_uri).await?;\n    let mut index_service = IndexService::new(metastore, storage_resolver);\n\n    if quickwit_common::is_parquet_pipeline_index(&args.index_id) {\n        let removal_info = index_service\n            .garbage_collect_parquet_index(&args.index_id, args.grace_period, args.dry_run)","sourceCodeStart":648,"sourceCodeEnd":684,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-cli/src/tool.rs#L648-L684","documentation":"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.","triggerScenarios":"Thrown at quickwit/quickwit-cli/src/tool.rs:666 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the preceding log lines for the actor error or panic that caused the pipeline failure","Verify the index, split files, and metastore are accessible and consistent","Re-run the merge command once the underlying cause is fixed"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}