grpc/grpc-go · error
router: error parsing config %v: %v
Error message
router: error parsing config %v: %v
What it means
The provided *anypb.Any failed to unmarshal into the Router proto. The wrapped proto.Unmarshal error means the Any's type URL or payload does not correspond to envoy.extensions.filters.http.router.v3.Router.
Source
Thrown at internal/xds/httpfilter/router/router.go:63
type builder struct {
}
func (builder) TypeURLs() []string { return []string{TypeURL} }
func (builder) ParseFilterConfig(cfg proto.Message) (httpfilter.FilterConfig, error) {
// The gRPC router filter does not currently use any fields from the
// config. Verify type only.
if cfg == nil {
return nil, fmt.Errorf("router: nil configuration message provided")
}
m, ok := cfg.(*anypb.Any)
if !ok {
return nil, fmt.Errorf("router: error parsing config %v: unknown type %T", cfg, cfg)
}
msg := new(pb.Router)
if err := m.UnmarshalTo(msg); err != nil {
return nil, fmt.Errorf("router: error parsing config %v: %v", cfg, err)
}
return config{}, nil
}
func (builder) ParseFilterConfigOverride(override proto.Message) (httpfilter.FilterConfig, error) {
if override != nil {
return nil, fmt.Errorf("router: unexpected config override specified: %v", override)
}
return config{}, nil
}
func (builder) IsTerminal() bool {
return true
}
func (builder) BuildClientFilter(httpfilter.ClientFilterOptions) httpfilter.ClientFilter {
return filter{}
}View on GitHub (pinned to 03255a9237)
Solutions
- Confirm the Any TypeUrl is exactly type.googleapis.com/envoy.extensions.filters.http.router.v3.Router.
- Ensure proto-version compatibility between control plane and grpc-go.
- Re-fetch the LDS resource and inspect the raw Any payload.
Defensive patterns
Strategy: validation
Validate before calling
func checkRouterTypeURL(a *anypb.Any) error {
want := "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router"
if a.GetTypeUrl() != want {
return fmt.Errorf("router type_url=%q want %q", a.GetTypeUrl(), want)
}
return nil
} Prevention
- Pin control-plane Envoy API version to grpc-go's supported version.
- Round-trip-test router Any payloads before serving.
When it happens
Trigger: The Any TypeUrl is for a different message or the bytes are corrupt/truncated.
Common situations: Control plane serving a different proto version; a TypeURL typo; corrupted resource; mislabeled filter entry.
Related errors
- rbac: error parsing config %v: %v
- rbac: error parsing override config %v: %v
- lrs: unexpected message type %T
- unexpected message type %T
- rls_csp: error parsing config %v: %v
AI-assisted analysis of grpc/grpc-go@03255a9237 (2026-08-07).
Data as JSON: /api/errors/747ce7d58ce8af48.
Report an issue: GitHub.