diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2021-11-22 14:26:45 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-22 14:26:45 -0500 |
commit | ed83ef2517ba4d6a0c7659206fe3a2faa0bdf547 (patch) | |
tree | 0f57d4f5e44575825a019e338dbc07e6b5a2bca6 /vendor/google.golang.org/grpc/pickfirst.go | |
parent | 179405ee3b0fd2c0a0debb2cd5fd47bab8130f82 (diff) | |
parent | 73e95d1c3eea36ec5e294115a7aa4c9fd16445fd (diff) | |
download | podman-ed83ef2517ba4d6a0c7659206fe3a2faa0bdf547.tar.gz podman-ed83ef2517ba4d6a0c7659206fe3a2faa0bdf547.tar.bz2 podman-ed83ef2517ba4d6a0c7659206fe3a2faa0bdf547.zip |
Merge pull request #12384 from containers/dependabot/go_modules/github.com/containers/image/v5-5.17.0
Bump github.com/containers/image/v5 from 5.16.1 to 5.17.0
Diffstat (limited to 'vendor/google.golang.org/grpc/pickfirst.go')
-rw-r--r-- | vendor/google.golang.org/grpc/pickfirst.go | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/pickfirst.go index b858c2a5e..f194d14a0 100644 --- a/vendor/google.golang.org/grpc/pickfirst.go +++ b/vendor/google.golang.org/grpc/pickfirst.go @@ -107,10 +107,12 @@ func (b *pickfirstBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.S } switch s.ConnectivityState { - case connectivity.Ready, connectivity.Idle: + case connectivity.Ready: b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{result: balancer.PickResult{SubConn: sc}}}) case connectivity.Connecting: b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{err: balancer.ErrNoSubConnAvailable}}) + case connectivity.Idle: + b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &idlePicker{sc: sc}}) case connectivity.TransientFailure: b.cc.UpdateState(balancer.State{ ConnectivityState: s.ConnectivityState, @@ -122,6 +124,12 @@ func (b *pickfirstBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.S func (b *pickfirstBalancer) Close() { } +func (b *pickfirstBalancer) ExitIdle() { + if b.state == connectivity.Idle { + b.sc.Connect() + } +} + type picker struct { result balancer.PickResult err error @@ -131,6 +139,17 @@ func (p *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { return p.result, p.err } +// idlePicker is used when the SubConn is IDLE and kicks the SubConn into +// CONNECTING when Pick is called. +type idlePicker struct { + sc balancer.SubConn +} + +func (i *idlePicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { + i.sc.Connect() + return balancer.PickResult{}, balancer.ErrNoSubConnAvailable +} + func init() { balancer.Register(newPickfirstBuilder()) } |