summaryrefslogtreecommitdiff
path: root/vendor/google.golang.org/grpc/pickfirst.go
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2021-11-22 14:26:45 -0500
committerGitHub <noreply@github.com>2021-11-22 14:26:45 -0500
commited83ef2517ba4d6a0c7659206fe3a2faa0bdf547 (patch)
tree0f57d4f5e44575825a019e338dbc07e6b5a2bca6 /vendor/google.golang.org/grpc/pickfirst.go
parent179405ee3b0fd2c0a0debb2cd5fd47bab8130f82 (diff)
parent73e95d1c3eea36ec5e294115a7aa4c9fd16445fd (diff)
downloadpodman-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.go21
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())
}