hashicorp/nomad · error

maximum attempts reached (%d)

Error message

maximum attempts reached (%d)

What it means

retryMax terminal error: the scheduler exhausted its maximum plan-application attempts without the callback reporting done and without a reset of the attempt counter (i.e. no forward progress across retries). The eval is marked failed via SetStatusError.

Source

Thrown at scheduler/util.go:86

	attempts := 0
	for attempts < max {
		done, err := cb()
		if err != nil {
			return err
		}
		if done {
			return nil
		}

		// Check if we should reset the number attempts
		if reset != nil && reset() {
			attempts = 0
		} else {
			attempts++
		}
	}
	return &SetStatusError{
		Err:        fmt.Errorf("maximum attempts reached (%d)", max),
		EvalStatus: structs.EvalStatusFailed,
	}
}

// progressMade checks to see if the plan result made allocations or updates.
// If the result is nil, false is returned.
func progressMade(result *structs.PlanResult) bool {
	return result != nil && (len(result.NodeUpdate) != 0 ||
		len(result.NodeAllocation) != 0 || result.Deployment != nil ||
		len(result.DeploymentUpdates) != 0)
}

// taintedNodes is used to scan the allocations and then check if the
// underlying nodes are tainted, and should force a migration of the allocation,
// or if the underlying nodes are disconnected, and should be used to calculate
// the reconnect timeout of its allocations. All the nodes returned in the map are tainted.
func taintedNodes(state sstructs.State, allocs []*structs.Allocation) (map[string]*structs.Node, error) {
	out := make(map[string]*structs.Node)

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Look for persistent plan-commit conflicts or state store errors in server logs
  2. Check for pathological job/node churn that prevents any plan from fully committing
  3. Re-submit or re-evaluate the job after resolving the underlying conflict
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at scheduler/util.go:86 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/6072957a13a1f092. Report an issue: GitHub.