grpc/grpc-go · error

error in serverRPCEvent method: %v

Error message

error in serverRPCEvent method: %v

What it means

Same validation as error 211 but for the config.CloudLogging.ServerRPCEvents slice. Any method string in a server event's Methods list that fails validateMethodString is wrapped as "error in serverRPCEvent method: <cause>". Root cause and remediation are identical to errors 210/211.

Source

Thrown at gcp/observability/config.go:102

		if err := validateMethodString(method); err != nil {
			return fmt.Errorf("invalid method string: %v, err: %v", method, err)
		}
	}
	return nil
}

func validateLoggingEvents(config *config) error {
	if config.CloudLogging == nil {
		return nil
	}
	for _, clientRPCEvent := range config.CloudLogging.ClientRPCEvents {
		if err := validateLogEventMethod(clientRPCEvent.Methods, clientRPCEvent.Exclude); err != nil {
			return fmt.Errorf("error in clientRPCEvent method: %v", err)
		}
	}
	for _, serverRPCEvent := range config.CloudLogging.ServerRPCEvents {
		if err := validateLogEventMethod(serverRPCEvent.Methods, serverRPCEvent.Exclude); err != nil {
			return fmt.Errorf("error in serverRPCEvent method: %v", err)
		}
	}
	return nil
}

// unmarshalAndVerifyConfig unmarshals a json string representing an
// observability config into its internal go format, and also verifies the
// configuration's fields for validity.
func unmarshalAndVerifyConfig(rawJSON json.RawMessage) (*config, error) {
	var config config
	if err := json.Unmarshal(rawJSON, &config); err != nil {
		return nil, fmt.Errorf("error parsing observability config: %v", err)
	}
	if err := validateLoggingEvents(&config); err != nil {
		return nil, fmt.Errorf("error parsing observability config: %v", err)
	}
	if config.CloudTrace != nil && (config.CloudTrace.SamplingRate > 1 || config.CloudTrace.SamplingRate < 0) {
		return nil, fmt.Errorf("error parsing observability config: invalid cloud trace sampling rate %v", config.CloudTrace.SamplingRate)

View on GitHub (pinned to 03255a9237)

Solutions

  1. Apply the error-210 fixes to every entry under server_rpc_events.
  2. Validate the whole cloud_logging block (both client and server arrays) before deploying.
  3. Ensure Exclude + "*" is not combined in server events.

Example fix

// before
{ "cloud_logging": { "server_rpc_events": [{ "methods": ["goo.Foo/"] }] } }

// after
{ "cloud_logging": { "server_rpc_events": [{ "methods": ["goo.Foo/Bar"] }] } }
Defensive patterns

Strategy: validation

Validate before calling

func validateServerRPCEvents(events []serverRPCEvents) error {
    for _, e := range events {
        if err := validateLogEventMethod(e.Methods, e.Exclude); err != nil {
            return fmt.Errorf("server event: %w", err)
        }
    }
    return nil
}

Try / catch

if err := validateLoggingEvents(cfg); err != nil {
    return fmt.Errorf("observability config: %w", err)
}

Prevention

When it happens

Trigger: A server_rpc_events entry in the observability config has an invalid method pattern (leading slash, no/extra slash, empty method, or service-position wildcard).

Common situations: Server-side logging config copy-pasted from the client side with a typo; same wire-format-vs-config-format confusion as 211.

Related errors


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