{"record":{"id":"8b51b56c1ab50564","repo":"quickwit-oss/quickwit","slug":"tasks-running-the-health-check-server-should-not-p","errorCode":null,"errorMessage":"tasks running the health check server should not panic or be cancelled","messagePattern":"tasks running the health check server should not panic or be cancelled","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-serve/src/lib.rs","lineNumber":1062,"sourceCode":"    ));\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    ) {\n        error!(\"server failed: {err:?}\");\n    }\n\n    let actor_exit_statuses = shutdown_handle\n        .await\n        .context(\"failed to gracefully shutdown services\")?;\n    Ok(actor_exit_statuses)","sourceCodeStart":1044,"sourceCodeEnd":1080,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-serve/src/lib.rs#L1044-L1080","documentation":"The JoinHandle for the spawned health check server task returned an error, meaning that task panicked or was cancelled instead of finishing. The `.expect` encodes the invariant that the health server runs until shutdown; a JoinError here points to an internal bug or external task abort.","triggerScenarios":"Thrown at quickwit/quickwit-serve/src/lib.rs:1062 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the panic backtrace and logs around the health server failure","Rule out external cancellation (runtime shutdown, test timeouts)","Report the issue with full logs if the cause is not identifiable"],"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"}