Skip to content

Commit b8d36ca

Browse files
authored
pickfirst: add prefix logging (#6482)
1 parent 5ce5686 commit b8d36ca

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

pickfirst.go

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3742
func newPickfirstBuilder() balancer.Builder {
3843
return &pickfirstBuilder{}
@@ -41,7 +46,9 @@ func newPickfirstBuilder() balancer.Builder {
4146
type pickfirstBuilder struct{}
4247

4348
func (*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

4754
func (*pickfirstBuilder) Name() string {
@@ -79,14 +86,15 @@ func (*pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBala
7986
}
8087

8188
type pickfirstBalancer struct {
89+
logger *internalgrpclog.PrefixLogger
8290
state connectivity.State
8391
cc balancer.ClientConn
8492
subConn balancer.SubConn
8593
}
8694

8795
func (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

159171
func (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

Comments
 (0)