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 the

View on GitHub (pinned to 7491200858)

Solutions

  1. Inspect the chained worker error — it names the actual script/runtime failure
  2. Fix the offending script or job input; transient worker crashes often stem from OOM or unhandled script exceptions
  3. 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.