{"record":{"id":"2529209b8b0e4861","repo":"hashicorp/nomad","slug":"no-such-plugin-q","errorCode":null,"errorMessage":"no such plugin: %q","messagePattern":"no such plugin: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nomad/csi_endpoint.go","lineNumber":901,"sourceCode":"\n\tif !vol.ControllerRequired {\n\t\tclaim.State = structs.CSIVolumeClaimStateReadyToFree\n\t\treturn nil\n\t}\n\n\t// We need a new snapshot after each checkpoint\n\tsnap, err := v.srv.fsm.State().Snapshot()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tws := memdb.NewWatchSet()\n\n\tplugin, err := snap.CSIPluginByID(ws, vol.PluginID)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not query plugin: %v\", err)\n\t} else if plugin == nil {\n\t\treturn fmt.Errorf(\"no such plugin: %q\", vol.PluginID)\n\t}\n\n\tif !plugin.HasControllerCapability(structs.CSIControllerSupportsAttachDetach) {\n\t\tclaim.State = structs.CSIVolumeClaimStateReadyToFree\n\t\treturn nil\n\t}\n\n\tvol, err = snap.CSIVolumeDenormalize(ws, vol)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// we only send a controller detach if a Nomad client no longer has any\n\t// claim to the volume, so we need to check the status of any other claimed\n\t// allocations\n\tshouldCancel := func(alloc *structs.Allocation) bool {\n\t\tif alloc != nil && alloc.ID != claim.AllocationID &&\n\t\t\talloc.NodeID == claim.NodeID && !alloc.TerminalStatus() {","sourceCodeStart":883,"sourceCodeEnd":919,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/csi_endpoint.go#L883-L919","documentation":"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.","triggerScenarios":"Thrown at nomad/csi_endpoint.go:901 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}