{"record":{"id":"8a5cbee7ddf757b2","repo":"hashicorp/nomad","slug":"failed-to-retrieve-capabilities-for-driver-s-v","errorCode":null,"errorMessage":"failed to retrieve capabilities for driver %s: %v","messagePattern":"failed to retrieve capabilities for driver (.+?): (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"client/allocrunner/network_manager_linux.go","lineNumber":73,"sourceCode":"\n\t\t// netmode host should always work to support backwards compat\n\t\tif taskNetMode == \"host\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check to see if capabilities of this task's driver have already been checked\n\t\tif _, ok := driverCaps[task.Driver]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tdriver, err := driverManager.Dispense(task.Driver)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to dispense driver %s: %v\", task.Driver, err)\n\t\t}\n\n\t\tcaps, err := driver.Capabilities()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to retrieve capabilities for driver %s: %v\",\n\t\t\t\ttask.Driver, err)\n\t\t}\n\n\t\t// check that the driver supports the requested network isolation mode\n\t\tnetIsolationMode := netModeToIsolationMode(taskNetMode)\n\t\tif !caps.HasNetIsolationMode(netIsolationMode) {\n\t\t\treturn nil, fmt.Errorf(\"task %s does not support %q networking mode\", task.Name, taskNetMode)\n\t\t}\n\n\t\t// check if the driver needs to create the network and if a different\n\t\t// driver has already claimed it needs to initiate the network\n\t\tif caps.MustInitiateNetwork {\n\t\t\tif networkInitiator != \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"tasks %s and %s want to initiate networking but only one driver can do so\", networkInitiator, task.Name)\n\t\t\t}\n\t\t\tnetManager, ok := driver.(drivers.DriverNetworkManager)\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"driver %s does not implement network management RPCs\", task.Driver)","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/client/allocrunner/network_manager_linux.go#L55-L91","documentation":"After dispensing a driver, newNetworkManager calls driver.Capabilities() to learn the driver's supported network isolation modes. If that RPC to the driver plugin fails, this error wraps it. It means the driver process was reachable enough to dispense but failed to answer the Capabilities call.","triggerScenarios":"driver.Capabilities() returns an error during newNetworkManager's per-driver loop: driver plugin crashed/hung mid-call, RPC timeout to plugin, or plugin returning an error from its Capabilities implementation.","commonSituations":"Driver plugin process died after registration (OOM, panic); communication issues with the plugin over its unix socket; a buggy/old plugin version whose Capabilities implementation errors.","solutions":["Restart the Nomad client so the driver plugin relaunches and re-registers.","Check client logs around the error for the underlying plugin RPC failure/panic.","Upgrade or reinstall the driver plugin binary to a version matching the Nomad client.","Verify plugin process health on the host (ps/lsof on the plugin socket)."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// ensure plugin process is alive before scheduling\nsystemctl is-active nomad-driver-<name> || systemctl restart nomad-driver-<name>","typeGuard":null,"tryCatchPattern":"// on client: wrap driver RPC calls\nif err := drv.Capabilities(); err != nil {\n  logger.Error(\"driver caps rpc failed, restarting plugin\", \"err\", err)\n  // plugin supervisor restarts; retry with backoff\n}","preventionTips":["Run driver plugins under a supervisor that restarts on crash.","Pin plugin versions to the Nomad client version.","Alert on client log patterns for plugin RPC timeouts."],"tags":["nomad","driver","capabilities","plugin-rpc"],"backgroundTag":"driver-capabilities-rpc-failed","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"}