{"record":{"id":"b1ca698b38468314","repo":"tinyhumansai/openhuman","slug":"service-status-task-panicked","errorCode":null,"errorMessage":"service status task panicked","messagePattern":"service status task panicked","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/desktop/app_state/ops.rs","lineNumber":877,"sourceCode":"                }\n                Err(_) => {\n                    warn!(\n                        \"{LOG_PREFIX} local_ai timed out after {}s; using degraded sub-snapshot req_id={}\",\n                        SNAPSHOT_SUB_OP_TIMEOUT.as_secs(),\n                        req_id,\n                    );\n                    crate::openhuman::inference::LocalAiStatus::disabled(&config_for_local_ai)\n                }\n            };\n            (status, t.elapsed().as_millis())\n        },\n        async {\n            let t = Instant::now();\n            let status = tokio::task::spawn_blocking(move || {\n                crate::openhuman::platform::service::status(&config_for_service)\n            })\n            .await\n            .unwrap_or_else(|_| Err(anyhow::anyhow!(\"service status task panicked\")));\n            let status = match status {\n                Ok(s) => s,\n                Err(error) => {\n                    let message = error.to_string();\n                    warn!(\"{LOG_PREFIX} service status failed during snapshot: {message}\");\n                    ServiceStatus {\n                        state: ServiceState::Unknown(message.clone()),\n                        unit_path: None,\n                        label: \"OpenHuman\".to_string(),\n                        details: Some(message),\n                    }\n                }\n            };\n            (status, t.elapsed().as_millis())\n        }\n    );\n\n    let total_ms = t0.elapsed().as_millis();","sourceCodeStart":859,"sourceCodeEnd":895,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/desktop/app_state/ops.rs#L859-L895","documentation":"A spawn_blocking task collecting a sub-snapshot of the app status (one of the parallel status probes in the dashboard snapshot builder) panicked or was cancelled at join. The JoinError means the probe's own error handling was bypassed; the surrounding code degrades to a partial snapshot rather than failing the whole status request.","triggerScenarios":"Thrown at src/openhuman/desktop/app_state/ops.rs:877 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check logs for the panic inside the status probe","Treat the snapshot as degraded; individual sub-snapshots may show fallback values","Retry the status request; one-off panics usually clear"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}