Documentation ¶
Overview ¶
Package gracefulswitch implements a graceful switch load balancer.
Index ¶
- func ChildName(l serviceconfig.LoadBalancingConfig) string
- func ParseConfig(cfg json.RawMessage) (serviceconfig.LoadBalancingConfig, error)
- type Balancer
- func (gsb *Balancer) Close()
- func (gsb *Balancer) ExitIdle()
- func (gsb *Balancer) ResolverError(err error)
- func (gsb *Balancer) SwitchTo(builder balancer.Builder) errordeprecated
- func (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error
- func (gsb *Balancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChildName ¶ added in v1.63.0
func ChildName(l serviceconfig.LoadBalancingConfig) string
ChildName returns the name of the child balancer of the gracefulswitch Balancer.
func ParseConfig ¶ added in v1.63.0
func ParseConfig(cfg json.RawMessage) (serviceconfig.LoadBalancingConfig, error)
ParseConfig parses a child config list and returns a LB config for the gracefulswitch Balancer.
cfg is expected to be a json.RawMessage containing a JSON array of LB policy names + configs as the format of the "loadBalancingConfig" field in ServiceConfig. It returns a type that should be passed to UpdateClientConnState in the BalancerConfig field.
Types ¶
type Balancer ¶
type Balancer struct {
// contains filtered or unexported fields
}
Balancer is a utility to gracefully switch from one balancer to a new balancer. It implements the balancer.Balancer interface.
func NewBalancer ¶
func NewBalancer(cc balancer.ClientConn, opts balancer.BuildOptions) *Balancer
NewBalancer returns a graceful switch Balancer.
func (*Balancer) ExitIdle ¶
func (gsb *Balancer) ExitIdle()
ExitIdle forwards the call to the latest balancer created.
If the latest balancer does not support ExitIdle, the subConns are re-connected to manually.
func (*Balancer) ResolverError ¶
ResolverError forwards the error to the latest balancer created.
func (*Balancer) SwitchTo
deprecated
SwitchTo initializes the graceful switch process, which completes based on connectivity state changes on the current/pending balancer. Thus, the switch process is not complete when this method returns. This method must be called synchronously alongside the rest of the balancer.Balancer methods this Graceful Switch Balancer implements.
Deprecated: use ParseConfig and pass a parsed config to UpdateClientConnState to cause the Balancer to automatically change to the new child when necessary.
func (*Balancer) UpdateClientConnState ¶
func (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error
UpdateClientConnState forwards the update to the latest balancer created.
If the state's BalancerConfig is the config returned by a call to gracefulswitch.ParseConfig, then this function will automatically SwitchTo the balancer indicated by the config before forwarding its config to it, if necessary.
func (*Balancer) UpdateSubConnState ¶
func (gsb *Balancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState)
UpdateSubConnState forwards the update to the appropriate child.