hashicorp/nomad · error
Node does not support RPC; requires 0.8 or later
Error message
Node does not support RPC; requires 0.8 or later
What it means
ErrNodeLacksRpc is returned when an RPC that requires client-side RPC support is routed to a Nomad node running a version older than 0.8, which cannot serve those endpoints. The server detects the node's advertised version is too old and refuses instead of failing with an opaque timeout or method-not-found.
Source
Thrown at nomad/structs/errors.go:64
errDeploymentTerminalNoUnblock = "can't unblock terminal deployment" errDeploymentTerminalNoRun = "can't run terminal deployment" errDeploymentTerminalNoSetHealth = "can't set health of allocations for a terminal deployment" errDeploymentRunningNoUnblock = "can't unblock running deployment" ) var ( ErrNoLeader = errors.New(errNoLeader) ErrNotReadyForConsistentReads = errors.New(errNotReadyForConsistentReads) ErrNoRegionPath = errors.New(errNoRegionPath) ErrTokenNotFound = errors.New(errTokenNotFound) ErrTokenExpired = errors.New(errTokenExpired) ErrTokenInvalid = errors.New(errTokenInvalid) ErrPermissionDenied = errors.New(errPermissionDenied) ErrJobRegistrationDisabled = errors.New(errJobRegistrationDisabled) ErrNoNodeConn = errors.New(errNoNodeConn) ErrUnknownMethod = errors.New(errUnknownMethod) ErrUnknownNomadVersion = errors.New(errUnknownNomadVersion) ErrNodeLacksRpc = errors.New(errNodeLacksRpc) ErrMissingAllocID = errors.New(errMissingAllocID) ErrIncompatibleFiltering = errors.New(errIncompatibleFiltering) ErrMalformedChooseParameter = errors.New(errMalformedChooseParameter) // ErrResultPaginatorCreation is returned by list RPC handlers when the // result paginator cannot be built, for example when the server cannot // evaluate a requested filter expression. api.ResultPaginatorErrorContent // duplicates its message so the CLI can match it without importing structs. // Keep the two in sync. ErrResultPaginatorCreation = errors.New(errResultPaginatorCreation) ErrUnknownNode = errors.New(ErrUnknownNodePrefix) ErrDeploymentTerminalNoCancel = errors.New(errDeploymentTerminalNoCancel) ErrDeploymentTerminalNoFail = errors.New(errDeploymentTerminalNoFail) ErrDeploymentTerminalNoPause = errors.New(errDeploymentTerminalNoPause) ErrDeploymentTerminalNoPromote = errors.New(errDeploymentTerminalNoPromote) ErrDeploymentTerminalNoResume = errors.New(errDeploymentTerminalNoResume)
View on GitHub (pinned to 482b49bf1a)
Solutions
- Upgrade the target Nomad client agent to 0.8 or later.
- Target a different, up-to-date node for the RPC.
- If the node is decommissioned/stale, purge its registration so requests stop routing to it.
- Gate client-RPC calls on the node's reported NomadVersion in your automation.
Example fix
// before
err := client.RPC("ClientAllocations.GarbageCollect", req, &resp) // node < 0.8
// after
if semver.Compare(node.NomadVersion, "0.8.0") >= 0 {
err = client.RPC("ClientAllocations.GarbageCollect", req, &resp)
} Defensive patterns
Strategy: validation
Validate before calling
if semverMajorMinor(node.NomadVersion) < [2]int{0, 8} { return fmt.Errorf("node %s runs %s; RPC requires >= 0.8", node.ID, node.NomadVersion) } Type guard
func nodeSupportsRpc(version string) bool { v, err := semver.NewVersion(version); return err == nil && !v.LessThan(semver.MustParse("0.8.0")) } Try / catch
if err := msgpackrpc.CallWithCodec(codec, "ClientAllocations.GarbageCollect", req, &resp); err != nil {
if structs.IsErrNodeLacksRpc(err) {
return fmt.Errorf("skipping node %s: upgrade to >=0.8 required", req.NodeID)
}
return err
} Prevention
- Keep cluster clients at or above the minimum supported version before deploying features using client RPCs
- Check node version via nomad node status before targeting client endpoints
- During rolling upgrades, route RPCs only to upgraded nodes
- Alert on downlevel agents registered in the cluster
When it happens
Trigger: Calling ClientAllocations.GarbageCollectAll, GarbageCollect, ClientFS.Stat/Logs, or ClientStats.Stats against a node whose NomadVersion is below 0.8; forwarding any node-RPC to a pre-0.8 client agent.
Common situations: Mixed-version clusters during upgrades where old clients remain registered; targeting a node ID that still points at a legacy agent; automation invoking new client endpoints in a cluster with downlevel nodes.
Related errors
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/e35521cffe617522.
Report an issue: GitHub.