{"record":{"id":"1b132c9cef8d256c","repo":"grpc/grpc-go","slug":"rbac-error-parsing-override-config-v-v","errorCode":null,"errorMessage":"rbac: error parsing override config %v: %v","messagePattern":"rbac: error parsing override config (.+?): (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/xds/httpfilter/rbac/rbac.go","lineNumber":154,"sourceCode":"\t}\n\tmsg := new(rpb.RBAC)\n\tif err := m.UnmarshalTo(msg); err != nil {\n\t\treturn nil, fmt.Errorf(\"rbac: error parsing config %v: %v\", cfg, err)\n\t}\n\treturn parseConfig(msg)\n}\n\nfunc (builder) ParseFilterConfigOverride(override proto.Message) (httpfilter.FilterConfig, error) {\n\tif override == nil {\n\t\treturn nil, fmt.Errorf(\"rbac: nil configuration message provided\")\n\t}\n\tm, ok := override.(*anypb.Any)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"rbac: error parsing override config %v: unknown type %T\", override, override)\n\t}\n\tmsg := new(rpb.RBACPerRoute)\n\tif err := m.UnmarshalTo(msg); err != nil {\n\t\treturn nil, fmt.Errorf(\"rbac: error parsing override config %v: %v\", override, err)\n\t}\n\treturn parseConfig(msg.Rbac)\n}\n\nfunc (builder) IsTerminal() bool {\n\treturn false\n}\n\nfunc (builder) BuildServerFilter() httpfilter.ServerFilter {\n\treturn serverFilter{}\n}\n\nvar _ httpfilter.ServerFilterBuilder = builder{}\n\ntype serverFilter struct{}\n\nfunc (serverFilter) Close() {}\n","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/grpc/grpc-go/blob/03255a9237b6eb32710f6bc4f2de9a675b99fe36/internal/xds/httpfilter/rbac/rbac.go#L136-L172","documentation":"The override *anypb.Any failed to unmarshal into rpb.RBACPerRoute. The wrapped proto.Unmarshal error indicates a type-URL or payload mismatch for the per-route override.","triggerScenarios":"The override Any's TypeUrl is not envoy.extensions.filters.http.rbac.v3.RBACPerRoute, or its bytes are corrupt.","commonSituations":"Control plane serving the base RBAC proto where a RBACPerRoute is expected (or vice versa); version mismatch; corrupted resource.","solutions":["Confirm the override TypeUrl is type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBACPerRoute.","Ensure the override payload is a serialized RBACPerRoute, not a base RBAC.","Re-fetch and inspect the RDS resource carrying the per-route config."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"func checkRBACPerRouteTypeURL(a *anypb.Any) error {\n\twant := \"type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBACPerRoute\"\n\tif a.GetTypeUrl() != want {\n\t\treturn fmt.Errorf(\"override type_url=%q want %q\", a.GetTypeUrl(), want)\n\t}\n\treturn nil\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use RBACPerRoute (not base RBAC) for per-route overrides.","Round-trip-test override Any payloads before serving."],"tags":["rbac","xds","grpc","protobuf","per-route","version-skew"],"analyzedSha":"03255a9237b6eb32710f6bc4f2de9a675b99fe36","analyzedAt":"2026-08-07T00:29:34.215Z","schemaVersion":2},"datasetVersion":"2026-08-07T03:17:09.362Z"}