hashicorp/nomad · error
failed to encode task stats: %v
Error message
failed to encode task stats: %v
What it means
In the driver plugin server's TaskStats streaming handler, converting a driver's statistics frame to protobuf failed, so the stats stream is aborted mid-flight with the marshaling error wrapped.
Source
Thrown at plugins/drivers/server.go:283
ch, err := b.impl.TaskStats(srv.Context(), req.TaskId, interval)
if err != nil {
if rec, ok := err.(structs.Recoverable); ok {
st := status.New(codes.FailedPrecondition, rec.Error())
st, err := st.WithDetails(&sproto.RecoverableError{Recoverable: rec.IsRecoverable()})
if err != nil {
// If this error, it will always error
panic(err)
}
return st.Err()
}
return err
}
for stats := range ch {
pb, err := TaskStatsToProto(stats)
if err != nil {
return fmt.Errorf("failed to encode task stats: %v", err)
}
if err = srv.Send(&proto.TaskStatsResponse{Stats: pb}); err == io.EOF {
break
} else if err != nil {
return err
}
}
return nil
}
func (b *driverPluginServer) ExecTask(ctx context.Context, req *proto.ExecTaskRequest) (*proto.ExecTaskResponse, error) {
timeout, err := ptypes.Duration(req.Timeout)
if err != nil {
return nil, err
}View on GitHub (pinned to 482b49bf1a)
Solutions
- Check the driver's TaskStats implementation emits well-formed stats structs
- Fix the field that fails TaskStatsToProto conversion (e.g. malformed resource usage data)
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugins/drivers/server.go:283 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/54ce4c703e1ec4bc.
Report an issue: GitHub.