hashicorp/nomad · error

updating job summary failed: %v

Error message

updating job summary failed: %v

What it means

Thrown when txn.Insert("job_summary", jobSummary) fails after the summary fields were updated. The insert writes the whole JobSummary object back to the memdb 'job_summary' table; failure aborts the transaction and the allocation-driven summary update is lost.

Source

Thrown at nomad/state/state_store.go:6164

			s.logger.Error("invalid old client status for allocation",
				"alloc_id", existingAlloc.ID, "client_status", existingAlloc.ClientStatus)
		}
		summaryChanged = true
	}
	jobSummary.Summary[alloc.TaskGroup] = tgSummary

	if summaryChanged {
		jobSummary.ModifyIndex = index

		s.updatePluginWithJobSummary(index, jobSummary, alloc, txn)

		// Update the indexes table for job summary
		if err := txn.Insert("index", &IndexEntry{"job_summary", index}); err != nil {
			return fmt.Errorf("index update failed: %v", err)
		}

		if err := txn.Insert("job_summary", jobSummary); err != nil {
			return fmt.Errorf("updating job summary failed: %v", err)
		}
	}

	return nil
}

// updatePluginForTerminalAlloc updates the CSI plugins for an alloc when the
// allocation is updated or inserted with a terminal server status.
func (s *StateStore) updatePluginForTerminalAlloc(index uint64, alloc *structs.Allocation,
	txn *txn) error {

	if !alloc.ServerTerminalStatus() {
		return nil
	}

	tg := alloc.Job.LookupTaskGroup(alloc.TaskGroup)
	for _, t := range tg.Tasks {
		if t.CSIPluginConfig != nil {

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Retry the raft operation; transient memdb failures usually resolve
  2. Monitor server memory; OOM pressure can cause memdb allocation failures
  3. Restore the state store from a consistent snapshot if corruption is suspected
  4. Capture server logs and file an issue with HashiCorp if reproducible
Defensive patterns

Strategy: retry

Try / catch

try {
  await op();
} catch (e) {
  if (String(e).includes('updating job summary failed') && isTransient(e)) return retryWithBackoff(op);
  // persistent: capture logs, consider snapshot restore
  throw e;
}

Prevention

When it happens

Trigger: The memdb insert of the JobSummary object fails during the allocation update path — essentially only due to internal memdb errors (memory exhaustion, transaction/table corruption), since the object was just fetched and mutated.

Common situations: Severely memory-constrained Nomad servers; corrupted state store after a failed restore; rare go-memdb runtime failures.

Related errors


AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04). Data as JSON: /api/errors/d805c6b61d96affc. Report an issue: GitHub.