hashicorp/nomad · error
failed to get deployment for job %q: %w
Error message
failed to get deployment for job %q: %w
What it means
SystemScheduler.process failed reading the latest deployment for the job from the state store. A transient/persistence error wrapped with %w so the underlying cause is preserved for operators.
Source
Thrown at scheduler/scheduler_system.go:142
numTaskGroups := 0
if !s.job.Stopped() {
numTaskGroups = len(s.job.TaskGroups)
}
s.queuedAllocs = make(map[string]int, numTaskGroups)
// Get the ready nodes in the required datacenters
if !s.job.Stopped() {
s.nodes, s.notReadyNodes, s.nodesByDC, err = readyNodesInDCsAndPool(
s.state, s.job.Datacenters, s.job.NodePool)
if err != nil {
return false, fmt.Errorf("failed to get ready nodes: %v", err)
}
}
s.deployment, err = s.state.LatestDeploymentByJobID(ws, s.eval.Namespace, s.eval.JobID)
if err != nil {
return false, fmt.Errorf("failed to get deployment for job %q: %w", s.eval.JobID, err)
}
// system deployments may be mutated in the reconciler because the node
// count can change between evaluations
s.deployment = s.deployment.Copy()
// Create a plan
s.plan = s.eval.MakePlan(s.job)
// Reset the failed allocations
s.failedTGAllocs = nil
// Create an evaluation context
s.ctx = feasible.NewEvalContext(s.eventsCh, s.state, s.plan, s.logger)
// Construct the placement stack
s.stack = feasible.NewSystemStack(false, s.ctx)
if !s.job.Stopped() {
s.setJob(s.job)View on GitHub (pinned to 482b49bf1a)
Solutions
- Check server logs for state store failures
- Allow the scheduler to retry the evaluation after the transient fault
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at scheduler/scheduler_system.go:142 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/f3d99506b34ac09d.
Report an issue: GitHub.