Documentation ¶
Overview ¶
Package serviceconfig contains utility functions to parse service config.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BalancerConfig ¶
type BalancerConfig struct { Name string Config externalserviceconfig.LoadBalancingConfig }
BalancerConfig wraps the name and config associated with one load balancing policy. It corresponds to a single entry of the loadBalancingConfig field from ServiceConfig.
It implements the json.Unmarshaler interface.
func (*BalancerConfig) MarshalJSON ¶
func (bc *BalancerConfig) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface.
It marshals the balancer and config into a length-1 slice ([]map[string]config).
func (*BalancerConfig) UnmarshalJSON ¶
func (bc *BalancerConfig) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the json.Unmarshaler interface.
ServiceConfig contains a list of loadBalancingConfigs, each with a name and config. This method iterates through that list in order, and stops at the first policy that is supported.
- If the config for the first supported policy is invalid, the whole service config is invalid.
- If the list doesn't contain any supported policy, the whole service config is invalid.
type MethodConfig ¶
type MethodConfig struct { // WaitForReady indicates whether RPCs sent to this method should wait until // the connection is ready by default (!failfast). The value specified via the // gRPC client API will override the value set here. WaitForReady *bool // Timeout is the default timeout for RPCs sent to this method. The actual // deadline used will be the minimum of the value specified here and the value // set by the application via the gRPC client API. If either one is not set, // then the other will be used. If neither is set, then the RPC has no deadline. Timeout *time.Duration // MaxReqSize is the maximum allowed payload size for an individual request in a // stream (client->server) in bytes. The size which is measured is the serialized // payload after per-message compression (but before stream compression) in bytes. // The actual value used is the minimum of the value specified here and the value set // by the application via the gRPC client API. If either one is not set, then the other // will be used. If neither is set, then the built-in default is used. MaxReqSize *int // MaxRespSize is the maximum allowed payload size for an individual response in a // stream (server->client) in bytes. MaxRespSize *int // RetryPolicy configures retry options for the method. RetryPolicy *RetryPolicy }
MethodConfig defines the configuration recommended by the service providers for a particular method.
type RetryPolicy ¶
type RetryPolicy struct { // MaxAttempts is the maximum number of attempts, including the original RPC. // // This field is required and must be two or greater. MaxAttempts int // Exponential backoff parameters. The initial retry attempt will occur at // random(0, initialBackoff). In general, the nth attempt will occur at // random(0, // min(initialBackoff*backoffMultiplier**(n-1), maxBackoff)). // // These fields are required and must be greater than zero. InitialBackoff time.Duration MaxBackoff time.Duration BackoffMultiplier float64 // The set of status codes which may be retried. // // Status codes are specified as strings, e.g., "UNAVAILABLE". // // This field is required and must be non-empty. // Note: a set is used to store this for easy lookup. RetryableStatusCodes map[codes.Code]bool }
RetryPolicy defines the go-native version of the retry policy defined by the service config here: https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config