hashicorp/nomad · error
index update failed: %v
Error message
index update failed: %v
What it means
After upserting ACL roles, updating the index table entry for acl_roles failed; the wrapped txn.Insert error marks the state update and aborts the commit.
Source
Thrown at nomad/state/state_store_acl.go:75
for _, role := range roles {
roleUpdated, err := s.upsertACLRoleTxn(index, txn, role, allowMissingPolicies)
if err != nil {
return err
}
// Ensure we track whether any inserts have been made.
updated = updated || roleUpdated
}
// If we did not perform any inserts, exit early.
if !updated {
return nil
}
// Perform the index table update to mark the new insert.
if err := txn.Insert(tableIndex, &IndexEntry{TableACLRoles, index}); err != nil {
return fmt.Errorf("index update failed: %v", err)
}
return txn.Commit()
}
// upsertACLRoleTxn inserts a single ACL role into the state store using the
// provided write transaction. It is the responsibility of the caller to update
// the index table.
func (s *StateStore) upsertACLRoleTxn(
index uint64, txn *txn, role *structs.ACLRole, allowMissingPolicies bool) (bool, error) {
// Ensure the role hash is not zero to provide defense in depth. This
// should be done outside the state store, so we do not spend time here
// and thus Raft, when it, can be avoided.
if len(role.Hash) == 0 {
role.SetHash()
}
View on GitHub (pinned to 482b49bf1a)
Solutions
- Retry the role upsert
- Inspect server logs for index-table write errors
- Verify Raft/state store health
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at nomad/state/state_store_acl.go:75 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/c2c25c3b519e8741.
Report an issue: GitHub.