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

  1. Retry the deletion; aborted txns leave state consistent
  2. Check server logs for the underlying memdb error
  3. Restart the server to reload state
  4. 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

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


AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04). Data as JSON: /api/errors/7a1c00143455a318. Report an issue: GitHub.