{"record":{"id":"fc26758cf7429276","repo":"hashicorp/nomad","slug":"unable-to-provision-q-in-accessible-topology-v","errorCode":null,"errorMessage":"unable to provision %q in accessible_topology: %v","messagePattern":"unable to provision %q in accessible_topology: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"plugins/csi/client.go","lineNumber":451,"sourceCode":"\t// meanings, so translate them into user-understandable terms\n\t// https://github.com/container-storage-interface/spec/blob/master/spec.md#createvolume-errors\n\tif err != nil {\n\t\tcode := status.Code(err)\n\t\tswitch code {\n\t\tcase codes.InvalidArgument:\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"volume %q snapshot source %q is not compatible with these parameters: %v\",\n\t\t\t\treq.Name, req.ContentSource, err)\n\t\tcase codes.NotFound:\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"volume %q content source %q does not exist: %v\",\n\t\t\t\treq.Name, req.ContentSource, err)\n\t\tcase codes.AlreadyExists:\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"volume %q already exists but is incompatible with these parameters: %v\",\n\t\t\t\treq.Name, err)\n\t\tcase codes.ResourceExhausted:\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"unable to provision %q in accessible_topology: %v\",\n\t\t\t\treq.Name, err)\n\t\tcase codes.OutOfRange:\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"unsupported capacity_range for volume %q: %v\", req.Name, err)\n\t\tcase codes.Internal:\n\t\t\treturn nil, fmt.Errorf(\n\t\t\t\t\"controller plugin returned an internal error, check the plugin allocation logs for more information: %v\", err)\n\t\t}\n\t\treturn nil, err\n\t}\n\n\treturn NewCreateVolumeResponse(resp), nil\n}\n\nfunc (c *client) ControllerListVolumes(ctx context.Context, req *ControllerListVolumesRequest, opts ...grpc.CallOption) (*ControllerListVolumesResponse, error) {\n\tif err := c.ensureConnected(ctx); err != nil {\n\t\treturn nil, err","sourceCodeStart":433,"sourceCodeEnd":469,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/plugins/csi/client.go#L433-L469","documentation":"ControllerCreateVolume received gRPC code ResourceExhausted from the CSI plugin, meaning the plugin could not provision the volume within the requested accessible_topology — typically out of capacity, quota, or available nodes/zones. Nomad wraps it with this message naming the topology constraint.","triggerScenarios":"Calling ControllerCreateVolume with accessibility_requirements (topology) where the plugin returns codes.ResourceExhausted — e.g. no more space in the requested zone, quota exceeded, or no node in the required topology segment can host the volume.","commonSituations":"Storage pool or zone is full; cloud quota for volumes/IOPS exhausted; topology constraint names a segment (zone/rack) with no available storage; many jobs provisioning concurrently in one region.","solutions":["Free capacity: delete unused volumes/snapshots in the target zone or increase the storage pool.","Raise the provider quota (volumes, capacity, IOPS) for the account/zone.","Relax or widen the accessibility_requirements topology in the volume spec (e.g. allow more zones).","Provision in a different zone/topology segment and update the volume spec accordingly."],"exampleFix":"// before (single zone, exhausted)\ntopology_request {\n  preferred { segments { topology = \"zone/us-east-1a\" } }\n}\n// after (allow another zone)\ntopology_request {\n  preferred { segments { topology = \"zone/us-east-1b\" } }\n}","handlingStrategy":"retry","validationCode":"// Verify the requested topology segment has capacity (via plugin/backend API) before creating\nfor _, seg := range req.AccessibleTopology {\n    if !zoneHasFreeCapacity(seg) {\n        return fmt.Errorf(\"topology segment %v has no free capacity\", seg)\n    }\n}","typeGuard":null,"tryCatchPattern":"vol, err := client.ControllerCreateVolume(ctx, req)\nif err != nil && strings.Contains(err.Error(), \"in accessible_topology\") {\n    // back off and retry, or retry with a relaxed/different topology\n}","preventionTips":["Monitor storage pool/quota usage and alert before exhaustion.","Prefer preferred (not requisite) topology constraints so provision can fall back to other zones.","Spread provisioning across zones rather than pinning one segment."],"tags":["csi","grpc","storage","capacity","topology"],"backgroundTag":"resource-exhausted","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"}