hashicorp/nomad · error
failed variable lookup: %s
Error message
failed variable lookup: %s
What it means
During a variable CAS set, reading the existing variable by namespace/path from memdb failed; the wrapped First error prevents compare-and-swap evaluation and is returned as an error response.
Source
Thrown at nomad/state/state_store_variables.go:164
resp := s.varSetCASTxn(tx, idx, sv)
if resp.IsError() || resp.IsConflict() {
return resp
}
if err := tx.Commit(); err != nil {
return sv.ErrorResponse(idx, err)
}
return resp
}
// varSetCASTxn is the inner method used to do a CAS inside an existing
// transaction.
func (s *StateStore) varSetCASTxn(tx WriteTxn, idx uint64, req *structs.VarApplyStateRequest) *structs.VarApplyStateResponse {
sv := req.Var
raw, err := tx.First(TableVariables, indexID, sv.Namespace, sv.Path)
if err != nil {
return req.ErrorResponse(idx, fmt.Errorf("failed variable lookup: %s", err))
}
svEx, ok := raw.(*structs.VariableEncrypted)
// ModifyIndex of 0 means that we are doing a set-if-not-exists.
if sv.ModifyIndex == 0 && raw != nil {
return req.ConflictResponse(idx, svEx)
}
// If the ModifyIndex is set but the variable doesn't exist, return a
// plausible zero value as the conflict
if sv.ModifyIndex != 0 && raw == nil {
zeroVal := &structs.VariableEncrypted{
VariableMetadata: structs.VariableMetadata{
Namespace: sv.Namespace,
Path: sv.Path,
},
}
return req.ConflictResponse(idx, zeroVal)View on GitHub (pinned to 482b49bf1a)
Solutions
- Retry the variable write
- Inspect server logs for state store read errors
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at nomad/state/state_store_variables.go:164 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/16b34ebe2532d8da.
Report an issue: GitHub.