tinyhumansai/openhuman · error · PoolRunError
{} worker error: {err}
Error message
{} worker error: {err} What it means
A pooled language-runtime worker (language id interpolated into the prefix) replied to a job with an error response rather than a result. The pool itself is healthy — the worker was already recycled or returned to the idle set — but the job it executed failed worker-side: a script crash, an internal worker exception, or a job payload the worker could not process. The error is the worker's reported failure, propagated to the caller of `execute`.
Source
Thrown at src/openhuman/runtime/pool/pool.rs:182
self.jobs_total.fetch_add(1, Ordering::Relaxed);
// Recycle after N jobs, otherwise return the warm worker to the pool.
if worker.should_recycle(self.settings.recycle_after_jobs) {
tracing::debug!(
lang = self.launch.lang.id(),
jobs = worker.jobs_done(),
"[runtime_pool] recycling worker after job budget"
);
worker.shutdown();
} else {
self.idle.lock().await.push(worker);
}
if let Some(err) = response.error {
// The worker replied with a harness-level error: the job was
// dispatched (and may have run), so this is terminal.
return Err(PoolRunError::PostDispatch(anyhow::anyhow!(
"{} worker error: {err}",
self.launch.lang.id()
)));
}
Ok(PoolExecOutcome {
stdout: response.stdout,
stderr: response.stderr,
exit_code: response.exit_code,
timed_out: response.timed_out,
elapsed,
queue_wait,
})
}
/// Submit on a warm-or-fresh worker. A **pre-dispatch** failure (e.g. a
/// reused idle worker that died on write) respawns once — the job never ran,
/// so that is safe. A **post-dispatch** failure is terminal: the job may have
/// executed, so it is never re-run (no duplicate side effects). Returns theView on GitHub (pinned to 7491200858)
Solutions
- Inspect the chained worker error — it names the actual script/runtime failure
- Fix the offending script or job input; transient worker crashes often stem from OOM or unhandled script exceptions
- If a specific job consistently kills workers, run it with more worker memory or split it into smaller jobs
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/runtime/pool/pool.rs:182 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/368886ea13258fac.
Report an issue: GitHub.