wwcd/grpc-lb

服务下线,其实并未从客户端将命名解析删除

ztgoto opened this issue · 1 comments

watcher.go
return []*naming.Update{{Op: naming.Delete, Addr: string(ev.Kv.Value)}}, nil
当服务从etcd下线,客户端watch检测到删除事件,但是其实删除事件中并未携带删除的值,只携带了键,所以ev.Kv.Value是一个空字符串。这时候在 google.golang.org/grpc/balancer.go 185L 会与本地的地址列表匹配不上,导致并未执行命名地址列表的删除操作

wwcd commented

thx!

在删除时,应该使用PreKv来代替Kv