grpc/grpc-go · error

parseGRPCServiceConfig not implemented

Error message

parseGRPCServiceConfig not implemented

What it means

Returned by the package-level parseGRPCServiceConfig variable in the ext_authz filter, which is a TODO stub (pending gRFC A102) that always errors. The ext_authz filter calls it whenever a config carries a grpc_service, so enabling the filter with a gRPC authorization server always produces this error today.

Source

Thrown at internal/xds/httpfilter/ext_authz/ext_authz.go:49

	"google.golang.org/grpc/internal/xds/xdsclient/xdsresource"
	"google.golang.org/protobuf/proto"
	"google.golang.org/protobuf/types/known/anypb"

	v3corepb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
	v3extauthzpb "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_authz/v3"
	v3typepb "github.com/envoyproxy/go-control-plane/envoy/type/v3"
)

func init() {
	if envconfig.XDSClientExtAuthzEnabled {
		httpfilter.Register(builder{})
	}
}

var (
	// TODO: Remove this once gRFC A102 is implemented.
	parseGRPCServiceConfig = func(*v3corepb.GrpcService) (xdsresource.GRPCServiceConfig, error) {
		return xdsresource.GRPCServiceConfig{}, fmt.Errorf("parseGRPCServiceConfig not implemented")
	}
)

type builder struct{}

func (builder) TypeURLs() []string {
	return []string{
		"type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz",
		"type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute",
	}
}

func parseFilterEnabled(fp *v3corepb.RuntimeFractionalPercent) (fraction, error) {
	if fp == nil {
		return fraction{numerator: 100, denominator: 100}, nil
	}
	fracPercent := fp.GetDefaultValue()
	if fracPercent == nil {

View on GitHub (pinned to 03255a9237)

Solutions

  1. Until A102 is implemented, configure the ext_authz filter with an http_service instead of a grpc_service where possible.
  2. Disable the ext_authz filter (unset the env flag / do not register it) if gRPC authorization is required.
  3. Track the gRFC A102 implementation and upgrade grpc-go once parseGRPCServiceConfig is populated.
Defensive patterns

Strategy: validation

Validate before calling

// Avoid wiring ext_authz with a grpc_service until A102 ships.
func extAuthzSafe(cfg *v3extauthzpb.ExtAuthz) error {
    if cfg.GetGrpcService() != nil {
        return errors.New("ext_authz grpc_service not supported until gRFC A102")
    }
    return nil
}

Prevention

When it happens

Trigger: XDSClientExtAuthzEnabled is set (filter registered) and the xDS server sends an ExtAuthz config whose grpc_service is populated; ParseFilterConfig calls parseGRPCServiceConfig and gets this not-implemented error.

Common situations: Turning on the external authorization HTTP filter with a gRPC-based authorization service before A102 lands; an Envoy/Traffic Director config that specifies a grpc_service for ext_authz.

Related errors


AI-assisted analysis of grpc/grpc-go@03255a9237 (2026-08-07). Data as JSON: /api/errors/88e5bb64849ce7e6. Report an issue: GitHub.