{"record":{"id":"0960280b53d6f434","repo":"quickwit-oss/quickwit","slug":"tasks-running-the-rest-server-should-not-panic-or","errorCode":null,"errorMessage":"tasks running the REST server should not panic or be cancelled","messagePattern":"tasks running the REST server should not panic or be cancelled","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-serve/src/lib.rs","lineNumber":1055,"sourceCode":"        ingester_decommission_timeout,\n        compactor_supervisor_opt,\n        compactor_decommission_timeout,\n        grpc_shutdown_trigger_tx,\n        rest_shutdown_trigger_tx,\n        health_shutdown_trigger_tx_opt,\n        cluster.clone(),\n    ));\n    let grpc_join_handle = async move {\n        spawn_named_task(grpc_server, \"grpc_server\")\n            .await\n            .expect(\"tasks running the gRPC server should not panic or be cancelled\")\n            .context(\"gRPC server failed\")\n    };\n\n    let rest_join_handle = async move {\n        spawn_named_task(rest_server, \"rest_server\")\n            .await\n            .expect(\"tasks running the REST server should not panic or be cancelled\")\n            .context(\"REST server failed\")\n    };\n\n    let health_join_handle = async move {\n        spawn_named_task(health_server_fut, \"health_server\")\n            .await\n            .expect(\"tasks running the health check server should not panic or be cancelled\")\n            .context(\"health check server failed\")\n    };\n\n    let chitchat_server_handle = cluster.chitchat_server_termination_watcher().await;\n\n    if let Err(err) = tokio::try_join!(\n        grpc_join_handle,\n        rest_join_handle,\n        health_join_handle,\n        chitchat_server_handle\n    ) {","sourceCodeStart":1037,"sourceCodeEnd":1073,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-serve/src/lib.rs#L1037-L1073","documentation":"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.","triggerScenarios":"Thrown at quickwit/quickwit-serve/src/lib.rs:1055 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the panic backtrace and preceding log lines for the fault inside the REST server task","Check for anything forcibly aborting tasks (test harness timeouts, tokio runtime shutdown)","Report the panic with logs to the Quickwit maintainers if no cause is apparent"],"exampleFix":null,"handlingStrategy":"try-catch","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"}