{"record":{"id":"b747a60f63dadf13","repo":"tinyhumansai/openhuman","slug":"reading-pool-job-response","errorCode":null,"errorMessage":"reading pool job response","messagePattern":"reading pool job response","errorType":"exception","errorClass":"SubmitError","httpStatus":null,"severity":"error","filePath":"src/openhuman/runtime/pool/worker.rs","lineNumber":262,"sourceCode":"                    Ok(inner) => inner,\n                    Err(_) => {\n                        return Err(SubmitError::post(anyhow::anyhow!(\n                            \"pool worker job timed out (hard deadline; worker wedged)\"\n                        )))\n                    }\n                },\n                None => self.responses.next_line().await,\n            };\n            let line = match next {\n                Ok(Some(line)) => line,\n                Ok(None) => {\n                    return Err(SubmitError::post(anyhow::anyhow!(\n                        \"pool worker closed stdout\"\n                    )))\n                }\n                Err(error) => {\n                    return Err(SubmitError::post(\n                        anyhow::Error::new(error).context(\"reading pool job response\"),\n                    ))\n                }\n            };\n            let response: PoolJobResponse = match serde_json::from_str(&line) {\n                Ok(response) => response,\n                Err(error) => {\n                    tracing::warn!(\n                        lang = self.launch.lang.id(),\n                        \"[runtime_pool] unparseable worker line skipped: {error}\"\n                    );\n                    continue;\n                }\n            };\n            if response.id.as_deref() != Some(req.id.as_str()) {\n                tracing::debug!(\n                    lang = self.launch.lang.id(),\n                    \"[runtime_pool] skipped response for different id={:?}\",\n                    response.id","sourceCodeStart":244,"sourceCodeEnd":280,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/runtime/pool/worker.rs#L244-L280","documentation":"Reading the response line from the worker's stdout failed after the job was submitted. Per the submit contract this is a post-submit SubmitError: the job may or may not have executed, and the worker's stdio framing can no longer be trusted, so the caller must discard the worker. Ok(None) (worker closed stdout) and hard-deadline timeout (worker wedged) map to the same class.","triggerScenarios":"Thrown at src/openhuman/runtime/pool/worker.rs:262 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Discard the wedged/dead worker; do not reuse it for further jobs","Check whether the job has side effects before blindly retrying — it may have run; use idempotency keys if the job type is effectful","Diagnose why the worker stopped responding (infinite loop past its soft deadline, blocked syscall, crash) from its logs"],"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"}