hashicorp/nomad · error
unable to create job summary: %v
Error message
unable to create job summary: %v
What it means
During UpsertJob, updateSummaryWithJob failed to create/update the JobSummary table row that tracks queued/running allocations per task group for this job/namespace. The error is wrapped and the whole registration transaction is aborted.
Source
Thrown at nomad/state/state_store.go:1884
job.ModifyIndex = index
job.JobModifyIndex = index
if err := s.setJobStatus(index, txn, job, false, ""); err != nil {
return fmt.Errorf("setting job status for %q failed: %v", job.ID, err)
}
// Have to get the job again since it could have been updated
updated, err := txn.First("jobs", "id", job.Namespace, job.ID)
if err != nil {
return fmt.Errorf("job lookup failed: %v", err)
}
if updated != nil {
job = updated.(*structs.Job)
}
}
if err := s.updateSummaryWithJob(index, job, txn); err != nil {
return fmt.Errorf("unable to create job summary: %v", err)
}
if err := s.upsertJobVersion(index, job, txn); err != nil {
return fmt.Errorf("unable to upsert job into job_version table: %v", err)
}
if err := s.updateJobScalingPolicies(index, job, txn); err != nil {
return fmt.Errorf("unable to update job scaling policies: %v", err)
}
if err := s.updateJobRecommendations(index, txn, existingJob, job); err != nil {
return fmt.Errorf("unable to update job recommendations: %v", err)
}
if err := s.updateJobCSIPlugins(index, job, existingJob, txn); err != nil {
return fmt.Errorf("unable to update job csi plugins: %v", err)
}
View on GitHub (pinned to 482b49bf1a)
Solutions
- Check server logs for the wrapped cause from updateSummaryWithJob
- Retry job registration (transaction rolled back atomically)
- Run a nomad operator reconcile / verify job_summary table via state store snapshots
- Upgrade Nomad if the error persists across registrations
Defensive patterns
Strategy: retry
Validate before calling
// Confirm the namespace exists and summary state is reachable
if _, err := client.Namespaces().Info(job.Namespace); err != nil {
return fmt.Errorf("namespace %q invalid: %w", job.Namespace, err)
} Type guard
func isSummaryError(err error) bool {
return err != nil && strings.Contains(err.Error(), "unable to create job summary")
} Try / catch
_, err := client.Jobs().Register(job, nil, nil, nil)
if isSummaryError(err) {
// atomic rollback; re-submit restores/creates the summary
_, err = client.Jobs().Register(job, nil, nil, nil)
}
return err Prevention
- Re-register the job to rebuild its summary record
- Check for summary inconsistencies after failed upgrades
- Run nomad operator reconcile to realign summaries and allocations
- Keep servers upgraded together to avoid schema drift
When it happens
Trigger: Registering a job where the summary update inside the transaction fails (insert/update into job_summary table errors, or internal inconsistency between job and summary records).
Common situations: Cluster state inconsistencies, upgrades where summary records were not migrated, or bugs in summary reconciliation on servers handling many job registrations.
Related errors
- error getting job summary: %v
- job_summary lookup failed: %v
- job summary lookup failed: %v
- error inserting job summary: %v
- job summary update failed %w
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/ec9368be3b1ed475.
Report an issue: GitHub.