-
Notifications
You must be signed in to change notification settings - Fork 9.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Upgrade to google.golang.org/grpc@1.35.0
#12636
Changes from 16 commits
f790eee
5cfaeaf
061f660
eb1cc38
2780f25
4ef628f
c1b82bb
9f63964
1141d4c
79b2c3a
04eb8b6
e51f86c
91b12f9
41d0e29
d4c917e
4a5ad64
284058b
1b59112
f8e52c7
5e45a43
9dbf34c
6b44f15
8220f16
60174e7
7d63cb6
7607937
b7f8d58
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -138,6 +138,18 @@ type baseBalancer struct { | |
picker picker.Picker | ||
} | ||
|
||
// UpdateClientConnState implements "grpc/balancer.Balancer" interface. | ||
func (bb *baseBalancer) UpdateClientConnState(ccs balancer.ClientConnState) error { | ||
bb.HandleResolvedAddrs(ccs.ResolverState.Addresses, nil) | ||
// TODO: This **should** incorporate the lines that warn in `HandleResolvedAddrs`. | ||
return nil | ||
} | ||
|
||
// ResolverError implements "grpc/balancer.Balancer" interface. | ||
func (bb *baseBalancer) ResolverError(err error) { | ||
bb.HandleResolvedAddrs(nil, err) | ||
} | ||
|
||
// HandleResolvedAddrs implements "grpc/balancer.Balancer" interface. | ||
// gRPC sends initial or updated resolved addresses from "Build". | ||
func (bb *baseBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) { | ||
|
@@ -193,6 +205,11 @@ func (bb *baseBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) | |
} | ||
} | ||
|
||
// UpdateSubConnState implements "grpc/balancer.Balancer" interface. | ||
func (bb *baseBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.SubConnState) { | ||
bb.HandleSubConnStateChange(sc, s.ConnectivityState) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ditto here on rename / repurpose of old code. |
||
} | ||
|
||
// HandleSubConnStateChange implements "grpc/balancer.Balancer" interface. | ||
func (bb *baseBalancer) HandleSubConnStateChange(sc balancer.SubConn, s grpcconnectivity.State) { | ||
bb.mu.Lock() | ||
|
@@ -247,7 +264,11 @@ func (bb *baseBalancer) HandleSubConnStateChange(sc balancer.SubConn, s grpcconn | |
bb.updatePicker() | ||
} | ||
|
||
bb.currentConn.UpdateBalancerState(bb.connectivityRecorder.GetCurrentState(), bb.picker) | ||
state := balancer.State{ | ||
ConnectivityState: bb.connectivityRecorder.GetCurrentState(), | ||
Picker: bb.picker, | ||
} | ||
bb.currentConn.UpdateState(state) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The |
||
} | ||
|
||
func (bb *baseBalancer) updatePicker() { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,8 +15,6 @@ | |
package picker | ||
|
||
import ( | ||
"context" | ||
|
||
"google.golang.org/grpc/balancer" | ||
) | ||
|
||
|
@@ -34,6 +32,6 @@ func (ep *errPicker) String() string { | |
return ep.p.String() | ||
} | ||
|
||
func (ep *errPicker) Pick(context.Context, balancer.PickInfo) (balancer.SubConn, func(balancer.DoneInfo), error) { | ||
return nil, nil, ep.err | ||
func (ep *errPicker) Pick(balancer.PickInfo) (balancer.PickResult, error) { | ||
return balancer.PickResult{}, ep.err | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,7 +15,6 @@ | |
package picker | ||
|
||
import ( | ||
"context" | ||
"sync" | ||
|
||
"go.uber.org/zap" | ||
|
@@ -52,12 +51,12 @@ type rrBalanced struct { | |
func (rb *rrBalanced) String() string { return rb.p.String() } | ||
|
||
// Pick is called for every client request. | ||
func (rb *rrBalanced) Pick(ctx context.Context, opts balancer.PickInfo) (balancer.SubConn, func(balancer.DoneInfo), error) { | ||
func (rb *rrBalanced) Pick(opts balancer.PickInfo) (balancer.PickResult, error) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
rb.mu.RLock() | ||
n := len(rb.scs) | ||
rb.mu.RUnlock() | ||
if n == 0 { | ||
return nil, nil, balancer.ErrNoSubConnAvailable | ||
return balancer.PickResult{}, balancer.ErrNoSubConnAvailable | ||
} | ||
|
||
rb.mu.Lock() | ||
|
@@ -91,5 +90,7 @@ func (rb *rrBalanced) Pick(ctx context.Context, opts balancer.PickInfo) (balance | |
rb.lg.Warn("balancer failed", fss...) | ||
} | ||
} | ||
return sc, doneFunc, nil | ||
|
||
pr := balancer.PickResult{SubConn: sc, Done: doneFunc} | ||
return pr, nil | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
E.g. here:
etcd/client/v3/balancer/balancer.go
Line 145 in 5dcd459
My goal here was to avoid a big diff in
.go
source files to make it easier for maintainers to grok what has changed. Notice thatHandleResolvedAddrs()
is no longer part of theBalancer
interface:So we could just rename
HandleResolvedAddrs()
toUpdateClientConnState()
and justreturn err
after some / all of thebb.lg.Warn()
statements.