hashicorp/nomad · error
can not diff tasks with different names: %q and %q
Error message
can not diff tasks with different names: %q and %q
What it means
Task.Diff refuses to compare two non-nil tasks with different names; task diffs are only defined for the same task name across job versions.
Source
Thrown at nomad/structs/diff.go:466
if t == nil && other == nil {
return diff, nil
} else if t == nil {
t = &Task{}
diff.Type = DiffTypeAdded
diff.Name = other.Name
newPrimitiveFlat = flatmap.Flatten(other, filter, true)
} else if other == nil {
other = &Task{}
diff.Type = DiffTypeDeleted
diff.Name = t.Name
oldPrimitiveFlat = flatmap.Flatten(t, filter, true)
} else {
if !reflect.DeepEqual(t, other) {
diff.Type = DiffTypeEdited
}
if t.Name != other.Name {
return nil, fmt.Errorf("can not diff tasks with different names: %q and %q", t.Name, other.Name)
}
diff.Name = other.Name
oldPrimitiveFlat = flatmap.Flatten(t, filter, true)
newPrimitiveFlat = flatmap.Flatten(other, filter, true)
}
// Diff the primitive fields.
diff.Fields = fieldDiffs(oldPrimitiveFlat, newPrimitiveFlat, false)
// Constraints diff
conDiff := primitiveObjectSetDiff(
interfaceSlice(t.Constraints),
interfaceSlice(other.Constraints),
[]string{"str"},
"Constraint",
contextual)
if conDiff != nil {
diff.Objects = append(diff.Objects, conDiff...)View on GitHub (pinned to 482b49bf1a)
Solutions
- Diff tasks with matching names
- Represent added/deleted tasks with a nil side instead of different names
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at nomad/structs/diff.go:466 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/1759da48dbb6108e.
Report an issue: GitHub.