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

  1. Retry the role upsert
  2. Inspect server logs for index-table write errors
  3. 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.