hashicorp/nomad · error
task group volume claim lookup failed: %v
Error message
task group volume claim lookup failed: %v
What it means
Wraps a txn.First failure when looking up a single claim by claimID before deletion in DeleteTaskGroupHostVolumeClaim. Note the lowercase 'task group' here distinguishes it from the other lookup errors in the same file. This is a storage-layer failure; a simply missing claim instead returns 'task group volume claim does not exist'.
Source
Thrown at nomad/state/state_store_task_group_volume_claims.go:193
claim := raw.(*structs.TaskGroupHostVolumeClaim)
if claim.JobID == jobID && claim.Namespace == namespace {
if err := txn.Delete(TableTaskGroupHostVolumeClaim, claim); err != nil {
return fmt.Errorf("Task group volume claim deletion failed: %v", err)
}
}
}
return nil
}
// DeleteTaskGroupHostVolumeClaim deletes a claim by its ID
func (s *StateStore) DeleteTaskGroupHostVolumeClaim(index uint64, ns, claimID string) error {
txn := s.db.WriteTxnMsgT(structs.TaskGroupHostVolumeClaimDeleteRequestType, index)
defer txn.Abort()
obj, err := txn.First(TableTaskGroupHostVolumeClaim, indexClaimID, claimID)
if err != nil {
return fmt.Errorf("task group volume claim lookup failed: %v", err)
}
if obj == nil {
return errors.New("task group volume claim does not exist")
}
claim := obj.(*structs.TaskGroupHostVolumeClaim)
if claim.Namespace != ns {
return errors.New("task group volume claim does not exist")
}
if err := txn.Delete(TableTaskGroupHostVolumeClaim, obj); err != nil {
return err
}
if err := txn.Insert(tableIndex, &IndexEntry{TableTaskGroupHostVolumeClaim, index}); err != nil {
return fmt.Errorf("index update failed: %w", err)
}
View on GitHub (pinned to 482b49bf1a)
Solutions
- Retry the deletion; aborted txns leave state consistent
- Check server logs for the underlying memdb error
- Restart the server to reload state
- Restore from Raft snapshot if corruption persists
Defensive patterns
Strategy: retry
Try / catch
if err := deleteClaim(claimID); err != nil {
switch {
case strings.Contains(err.Error(), "does not exist"):
return nil // idempotent success
case strings.Contains(err.Error(), "lookup failed"):
return retryAfterBackoff()
default:
return err
}
} Prevention
- Distinguish 'lookup failed' (storage error, retryable) from 'does not exist' (idempotent success)
- Check server health when claim reads fail
- Keep Nomad patched to the latest stable release
When it happens
Trigger: Calling DeleteTaskGroupHostVolumeClaim (via applyTaskGroupHostVolumeClaimDelete / the claim-delete Raft message) when the id lookup errors in memdb.
Common situations: Corrupted state store; allocation garbage-collection running against an unhealthy server; memdb index problems.
Related errors
- failed to delete job %v (%d) from job_version
- volume delete failed: %s: %v
- launch delete failed: %v
- deleting acl policy failed: %v
- ACL binding rule deletion failed: %v
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/7a1c00143455a318.
Report an issue: GitHub.