hashicorp/nomad · error

followup eval lookup failed: %v

Error message

followup eval lookup failed: %v

What it means

While cancelling a reconnect follow-up eval, the memdb read of that eval by ID failed; the wrapped txn.First error prevents completing the cancellation.

Source

Thrown at nomad/state/state_store.go:4208

	copyAlloc.FollowupEvalID = ""

	allJobAllocs, err := s.AllocsByJob(nil, alloc.Namespace, alloc.JobID, true)
	if err != nil {
		return fmt.Errorf("could not lookup allocs: %w", err)
	}

	for _, jobAlloc := range allJobAllocs {
		if jobAlloc.ID != copyAlloc.ID && jobAlloc.FollowupEvalID == evalID && !jobAlloc.TerminalStatus() {
			// follow-up eval was created for multiple non-terminal allocs in
			// the job at the same time, so we leave it alone
			return nil
		}
	}

	raw, err := txn.First("evals", "id", evalID)
	if err != nil {
		return fmt.Errorf("followup eval lookup failed: %v", err)
	}
	if raw == nil {
		return nil // eval was deleted by user
	}
	eval := raw.(*structs.Evaluation)
	eval = eval.Copy()
	eval.Status = structs.EvalStatusCancelled
	eval.StatusDescription = "allocs reconnected"
	eval.ModifyIndex = index
	err = txn.Insert("evals", eval)
	if err != nil {
		return err
	}
	if err := txn.Insert("index", &IndexEntry{"evals", index}); err != nil {
		return fmt.Errorf("index update failed: %v", err)
	}
	return nil
}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Retry the allocation update
  2. Inspect server logs for eval table read errors
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at nomad/state/state_store.go:4208 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/de12a5f0a481cfad. Report an issue: GitHub.