hashicorp/nomad · error

evaluation does not exist

Error message

evaluation does not exist

What it means

Fires in Eval.Reblock when no evaluation with the given ID exists in the state store: the eval token was outstanding, but the eval itself is gone (GC'd or never committed), so there is nothing to reinsert into the blocked tracker.

Source

Thrown at nomad/eval_endpoint.go:406

	// Verify the evaluation is outstanding, and that the tokens match.
	if err := e.srv.evalBroker.OutstandingReset(eval.ID, args.EvalToken); err != nil {
		return err
	}

	// Look for the eval
	snap, err := e.srv.fsm.State().Snapshot()
	if err != nil {
		return err
	}

	ws := memdb.NewWatchSet()
	out, err := snap.EvalByID(ws, eval.ID)
	if err != nil {
		return err
	}
	if out == nil {
		return fmt.Errorf("evaluation does not exist")
	}
	if out.Status != structs.EvalStatusBlocked {
		return fmt.Errorf("evaluation not blocked")
	}

	// Reblock the eval
	e.srv.blockedEvals.Reblock(eval, args.EvalToken)
	return nil
}

// Reap is used to cleanup dead evaluations and allocations
func (e *Eval) Reap(args *structs.EvalReapRequest,
	reply *structs.GenericResponse) error {

	aclObj, err := e.srv.AuthenticateServerOnly(e.ctx, args)
	e.srv.MeasureRPCRate("eval", structs.RateMetricWrite, args)
	if err != nil || !aclObj.AllowServerOp() {
		return structs.ErrPermissionDenied

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Check whether the eval was GC'd or the cluster state was restored
  2. Do not retry blindly; re-create the eval from the failing job instead
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at nomad/eval_endpoint.go:406 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/0bf716646111fd93. Report an issue: GitHub.