Hmbown/CodeWhale · error

worker has no Fleet task to restart

Error message

worker {worker_id} has no Fleet task to restart

What it means

Restart guard in Fleet restart_worker: neither the rebuilt ledger state nor the late-arrival lookup finds any task entry for the worker, so there is nothing to restart. The worker id names a worker with no Fleet task history in this run.

Solutions

  1. Verify the worker_id against the run's task list (inspect_worker / run state) before restarting.
  2. Start a new Fleet task for the worker if the old one was already cleaned up.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/tui/src/fleet/manager.rs:1068 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22). Data as JSON: /api/errors/61aef5edc063fbf2. Report an issue: GitHub.

Appendix: source

Thrown at crates/tui/src/fleet/manager.rs:1068

            &task.entry.task_id,
            Some(worker_id),
            &timestamp(),
            Some("operator"),
            Some("operator"),
        )?;
        if !cancelled {
            bail!("worker {worker_id} no longer has that running Fleet task");
        }
        self.refresh_run_status(&task.entry.run_id)?;
        self.inspect_worker(worker_id)
    }

    pub fn restart_worker(&self, worker_id: &str) -> Result<FleetRestartReport> {
        let state = self.ledger.rebuild_state()?;
        let Some(task) = active_task_for_worker(&state, worker_id)
            .or_else(|| latest_task_for_worker(&state, worker_id))
        else {
            bail!("worker {worker_id} has no Fleet task to restart");
        };
        let run = state
            .runs
            .get(&task.entry.run_id.0)
            .ok_or_else(|| anyhow!("Fleet run {} does not exist", task.entry.run_id.0))?;
        let max_workers = run
            .max_workers
            .unwrap_or_else(|| run.worker_specs.len().max(1))
            .clamp(1, 128);
        let mut coordination_guard = match &self.sub_agent_manager {
            Some(manager) => {
                let Ok(guard) = manager.try_write() else {
                    bail!("Fleet worker {worker_id} coordination state is busy; retry restart");
                };
                Some(guard)
            }
            None => None,
        };

View on GitHub (pinned to 73e0f67d83)