{"record":{"id":"8eadae9320b06bf3","repo":"tinyhumansai/openhuman","slug":"runtime-python-server-unavailable-message","errorCode":null,"errorMessage":"runtime python server unavailable: {message}","messagePattern":"runtime python server unavailable: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/runtime/python_server/server.rs","lineNumber":319,"sourceCode":"                );\n                existing.reset().await;\n                *guard = ServerCache::Empty;\n            }\n        }\n    }\n    match &*guard {\n        ServerCache::Ready(existing) => {\n            let existing = existing.clone();\n            if let Err(error) = existing.start().await {\n                let message = format!(\"{error:#}\");\n                log::warn!(\n                    \"[runtime_python_server] cached server failed to start; backing off: {message}\"\n                );\n                *guard = ServerCache::Failed {\n                    message: message.clone(),\n                    retry_after: Instant::now() + START_FAILURE_BACKOFF,\n                };\n                bail!(\"runtime python server unavailable: {message}\");\n            }\n            return Ok(existing);\n        }\n        ServerCache::Failed {\n            message,\n            retry_after,\n        } if Instant::now() < *retry_after => {\n            bail!(\"runtime python server unavailable after previous startup failure: {message}\");\n        }\n        ServerCache::Failed { .. } | ServerCache::Empty => {}\n    }\n\n    match start_new_server(config).await {\n        Ok(server) => {\n            *guard = ServerCache::Ready(server.clone());\n            Ok(server)\n        }\n        Err(error) => {","sourceCodeStart":301,"sourceCodeEnd":337,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/runtime/python_server/server.rs#L301-L337","documentation":"ensure_started tried to start a cached server and start() failed; the failure message is recorded and the cache flips to Failed with a backoff window, so immediate retries are refused by design. The underlying cause is in the embedded message (spawn/handshake/provision failure).","triggerScenarios":"Thrown at src/openhuman/runtime/python_server/server.rs:319 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the underlying start failure named in {message}","Wait out the startup-failure backoff before retrying","Re-provision the server venv if dependencies are the cause"],"exampleFix":null,"handlingStrategy":"retry","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"}