{"record":{"id":"91b66d97abd573eb","repo":"hashicorp/nomad","slug":"could-not-query-plugin-v","errorCode":null,"errorMessage":"could not query plugin: %v","messagePattern":"could not query plugin: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nomad/csi_endpoint.go","lineNumber":899,"sourceCode":"func (v *CSIVolume) controllerUnpublishVolume(vol *structs.CSIVolume, claim *structs.CSIVolumeClaim) error {\n\tv.logger.Trace(\"controller unpublish\", \"vol\", vol.ID)\n\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 {","sourceCodeStart":881,"sourceCodeEnd":917,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/csi_endpoint.go#L881-L917","documentation":"Fires in controllerUnpublishVolume during volume detach: looking up the CSI plugin by ID in the state store failed (a Raft/state read error), so the controller RPC needed to detach cannot be issued.","triggerScenarios":"Thrown at nomad/csi_endpoint.go:899 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check server logs for state store / Raft errors","Retry the unpublish once the state store is healthy","Verify cluster quorum and server health"],"exampleFix":null,"handlingStrategy":"retry","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"}