hashicorp/nomad · error

no devices match request

Error message

no devices match request

What it means

Returned by the scheduler's deviceAllocator.createOffer when no combination of healthy assignable device instances satisfies the request's constraints/affinities. Devices exist but none match, so no offer can be made.

Source

Thrown at scheduler/feasible/device.go:201

		// Set the new highest score
		offerScore = choiceScore

		// Set the new sum of matching affinity weights
		matchedWeights = sumMatchedWeights

		// Build the choice
		offer = &structs.AllocatedDeviceResource{
			Vendor:    id.Vendor,
			Type:      id.Type,
			Name:      id.Name,
			DeviceIDs: assignable,
		}
	}

	// Failed to find a match
	if offer == nil {
		return nil, 0.0, fmt.Errorf("no devices match request")
	}

	return offer, matchedWeights, nil
}

// deviceIDMatchesConstraint checks a device instance ID against the constraints
// to ensure we're only assigning instance IDs that match. This is a narrower
// check than nodeDeviceMatches because we've already asserted that the device
// matches and now need to filter by instance ID.
func (d *deviceAllocator) deviceIDMatchesConstraint(id string, constraints structs.Constraints, device *structs.NodeDeviceResource) bool {

	// There are no constraints to consider
	if len(constraints) == 0 {
		return true
	}

	deviceID := psstructs.NewStringAttribute(id)

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Relax the device constraint (correct vendor/type/name values)
  2. Ensure healthy matching devices are reported by the device plugin
  3. Move the workload to nodes that have the requested devices
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at scheduler/feasible/device.go:201 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/9ea70686f78e604c. Report an issue: GitHub.