hashicorp/nomad · error
plugin failed to return nodeid
Error message
plugin failed to return nodeid
What it means
CSI client guard in NodeGetInfo: the node plugin's NodeGetInfo RPC succeeded but returned an empty node ID, violating the CSI contract. The plugin is misbehaving; fingerprinting callers retry this call, so it surfaces repeatedly until fixed.
Source
Thrown at plugins/csi/client.go:774
return NewNodeCapabilitySet(resp), nil
}
func (c *client) NodeGetInfo(ctx context.Context) (*NodeGetInfoResponse, error) {
if err := c.ensureConnected(ctx); err != nil {
return nil, err
}
result := &NodeGetInfoResponse{}
// note: no grpc retries needed here, as this is called in
// fingerprinting and will get retried by the caller
resp, err := c.nodeClient.NodeGetInfo(ctx, &csipbv1.NodeGetInfoRequest{})
if err != nil {
return nil, err
}
if resp.GetNodeId() == "" {
return nil, fmt.Errorf("plugin failed to return nodeid")
}
result.NodeID = resp.GetNodeId()
result.MaxVolumes = resp.GetMaxVolumesPerNode()
if result.MaxVolumes == 0 {
// set safe default so that scheduler ignores this constraint when not set
result.MaxVolumes = math.MaxInt64
}
topo := resp.GetAccessibleTopology()
if topo != nil {
result.AccessibleTopology = &Topology{Segments: topo.Segments}
}
return result, nil
}
func (c *client) NodeStageVolume(ctx context.Context, req *NodeStageVolumeRequest, opts ...grpc.CallOption) error {View on GitHub (pinned to 482b49bf1a)
Solutions
- Fix the plugin so NodeGetInfo returns a stable non-empty node ID
- Upgrade or replace the CSI plugin with a compliant version
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at plugins/csi/client.go:774 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/e536d7bab05cbe9a.
Report an issue: GitHub.