@@ -26,13 +26,18 @@ import (
2626 "google.golang.org/grpc/balancer"
2727 "google.golang.org/grpc/connectivity"
2828 "google.golang.org/grpc/internal/envconfig"
29+ internalgrpclog "google.golang.org/grpc/internal/grpclog"
2930 "google.golang.org/grpc/internal/grpcrand"
31+ "google.golang.org/grpc/internal/pretty"
3032 "google.golang.org/grpc/resolver"
3133 "google.golang.org/grpc/serviceconfig"
3234)
3335
34- // PickFirstBalancerName is the name of the pick_first balancer.
35- const PickFirstBalancerName = "pick_first"
36+ const (
37+ // PickFirstBalancerName is the name of the pick_first balancer.
38+ PickFirstBalancerName = "pick_first"
39+ logPrefix = "[pick-first-lb %p] "
40+ )
3641
3742func newPickfirstBuilder () balancer.Builder {
3843 return & pickfirstBuilder {}
@@ -41,7 +46,9 @@ func newPickfirstBuilder() balancer.Builder {
4146type pickfirstBuilder struct {}
4247
4348func (* pickfirstBuilder ) Build (cc balancer.ClientConn , opt balancer.BuildOptions ) balancer.Balancer {
44- return & pickfirstBalancer {cc : cc }
49+ b := & pickfirstBalancer {cc : cc }
50+ b .logger = internalgrpclog .NewPrefixLogger (logger , fmt .Sprintf (logPrefix , b ))
51+ return b
4552}
4653
4754func (* pickfirstBuilder ) Name () string {
@@ -79,14 +86,15 @@ func (*pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBala
7986}
8087
8188type pickfirstBalancer struct {
89+ logger * internalgrpclog.PrefixLogger
8290 state connectivity.State
8391 cc balancer.ClientConn
8492 subConn balancer.SubConn
8593}
8694
8795func (b * pickfirstBalancer ) ResolverError (err error ) {
88- if logger .V (2 ) {
89- logger .Infof ("pickfirstBalancer: ResolverError called with error : %v" , err )
96+ if b . logger .V (2 ) {
97+ b . logger .Infof ("Received error from the name resolver : %v" , err )
9098 }
9199 if b .subConn == nil {
92100 b .state = connectivity .TransientFailure
@@ -122,22 +130,26 @@ func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState
122130 // already does so.
123131 cfg , ok := state .BalancerConfig .(pfConfig )
124132 if state .BalancerConfig != nil && ! ok {
125- return fmt .Errorf ("pickfirstBalancer : received illegal BalancerConfig (type %T): %v" , state .BalancerConfig , state .BalancerConfig )
133+ return fmt .Errorf ("pickfirst : received illegal BalancerConfig (type %T): %v" , state .BalancerConfig , state .BalancerConfig )
126134 }
127135 if cfg .ShuffleAddressList {
128136 addrs = append ([]resolver.Address {}, addrs ... )
129137 grpcrand .Shuffle (len (addrs ), func (i , j int ) { addrs [i ], addrs [j ] = addrs [j ], addrs [i ] })
130138 }
131139
140+ if b .logger .V (2 ) {
141+ b .logger .Infof ("Received new config %s, resolver state %s" , pretty .ToJSON (cfg ), pretty .ToJSON (state .ResolverState ))
142+ }
143+
132144 if b .subConn != nil {
133145 b .cc .UpdateAddresses (b .subConn , addrs )
134146 return nil
135147 }
136148
137149 subConn , err := b .cc .NewSubConn (addrs , balancer.NewSubConnOptions {})
138150 if err != nil {
139- if logger .V (2 ) {
140- logger .Errorf ( "pickfirstBalancer: failed to NewSubConn : %v" , err )
151+ if b . logger .V (2 ) {
152+ b . logger .Infof ( "Failed to create new SubConn : %v" , err )
141153 }
142154 b .state = connectivity .TransientFailure
143155 b .cc .UpdateState (balancer.State {
@@ -157,12 +169,12 @@ func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState
157169}
158170
159171func (b * pickfirstBalancer ) UpdateSubConnState (subConn balancer.SubConn , state balancer.SubConnState ) {
160- if logger .V (2 ) {
161- logger .Infof ("pickfirstBalancer: UpdateSubConnState : %p, %v" , subConn , state )
172+ if b . logger .V (2 ) {
173+ b . logger .Infof ("Received SubConn state update : %p, %+ v" , subConn , state )
162174 }
163175 if b .subConn != subConn {
164- if logger .V (2 ) {
165- logger .Infof ("pickfirstBalancer: ignored state change because subConn is not recognized" )
176+ if b . logger .V (2 ) {
177+ b . logger .Infof ("Ignored state change because subConn is not recognized" )
166178 }
167179 return
168180 }
0 commit comments