hashicorp/nomad · error

no devices available

Error message

no devices available

What it means

Scheduler device allocator guard in createOffer: the node has no device groups at all, so the requested device cannot be offered. This makes the node infeasible for the device request rather than crashing the allocator.

Source

Thrown at scheduler/feasible/device.go:109

					if equalBusID(busID, instanceBusID) {
						result := int(node) == m.memoryNode
						return result
					}
				}
			}
		}
	}

	return false
}

// createOffer takes a device request and returns an assignment as well as a
// score for the assignment. If no assignment is possible, an error is
// returned explaining why.
func (d *deviceAllocator) createOffer(mem *memoryNodeMatcher, ask *structs.RequestedDevice) (out *structs.AllocatedDeviceResource, score float64, err error) {
	// Try to hot path
	if len(d.Devices) == 0 {
		return nil, 0.0, fmt.Errorf("no devices available")
	}
	if ask.Count == 0 {
		return nil, 0.0, fmt.Errorf("invalid request of zero devices")
	}

	// Hold the current best offer
	var offer *structs.AllocatedDeviceResource
	var offerScore float64
	var matchedWeights float64

	// Determine the devices that are feasible based on availability and
	// constraints
	for id, devInst := range d.Devices {
		// Check if the device works
		if !nodeDeviceMatches(d.ctx, devInst.Device, ask) {
			continue
		}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Schedule the job on nodes running the required device plugin
  2. Remove the device request if it is not actually needed
  3. Verify the device plugin is fingerprinting devices on the target nodes
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at scheduler/feasible/device.go:109 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/34031387e2c55246. Report an issue: GitHub.