hashicorp/nomad · error
no such plugin: %q
Error message
no such plugin: %q
What it means
Fires in controllerUnpublishVolume: the state store has no CSI plugin record matching vol.PluginID, so the plugin the volume was provisioned with is gone (deregistered or never registered in this cluster) and detach cannot proceed.
Source
Thrown at nomad/csi_endpoint.go:901
if !vol.ControllerRequired {
claim.State = structs.CSIVolumeClaimStateReadyToFree
return nil
}
// We need a new snapshot after each checkpoint
snap, err := v.srv.fsm.State().Snapshot()
if err != nil {
return err
}
ws := memdb.NewWatchSet()
plugin, err := snap.CSIPluginByID(ws, vol.PluginID)
if err != nil {
return fmt.Errorf("could not query plugin: %v", err)
} else if plugin == nil {
return fmt.Errorf("no such plugin: %q", vol.PluginID)
}
if !plugin.HasControllerCapability(structs.CSIControllerSupportsAttachDetach) {
claim.State = structs.CSIVolumeClaimStateReadyToFree
return nil
}
vol, err = snap.CSIVolumeDenormalize(ws, vol)
if err != nil {
return err
}
// we only send a controller detach if a Nomad client no longer has any
// claim to the volume, so we need to check the status of any other claimed
// allocations
shouldCancel := func(alloc *structs.Allocation) bool {
if alloc != nil && alloc.ID != claim.AllocationID &&
alloc.NodeID == claim.NodeID && !alloc.TerminalStatus() {View on GitHub (pinned to 482b49bf1a)
Solutions
- Verify the plugin ID on the volume and that the plugin is registered
- Re-register the CSI plugin (or its controllers) so the volume can be managed
- If the plugin is permanently gone, force-delete the volume after confirming no storage remains attached
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at nomad/csi_endpoint.go:901 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/2529209b8b0e4861.
Report an issue: GitHub.