diff --git a/pkg/net/rpc/warden/CHANGELOG.md b/pkg/net/rpc/warden/CHANGELOG.md index 7bd96bbc7..10965198c 100644 --- a/pkg/net/rpc/warden/CHANGELOG.md +++ b/pkg/net/rpc/warden/CHANGELOG.md @@ -1,5 +1,8 @@ ### net/rpc/warden +##### Version 1.1.21 +1. fix resolver bug + ##### Version 1.1.20 1. client增加timeoutCallOpt强制覆盖每次请求的timeout diff --git a/pkg/net/rpc/warden/resolver/resolver.go b/pkg/net/rpc/warden/resolver/resolver.go index 06b0bf8e5..4804e148e 100644 --- a/pkg/net/rpc/warden/resolver/resolver.go +++ b/pkg/net/rpc/warden/resolver/resolver.go @@ -129,18 +129,23 @@ func (r *Resolver) updateproc() { } } if ins, ok := r.nr.Fetch(context.Background()); ok { - instances, ok := ins.Instances[r.zone] - if !ok { + instances, _ := ins.Instances[r.zone] + res := r.filter(instances) + if len(res) == 0 { for _, value := range ins.Instances { instances = append(instances, value...) } + res = r.filter(instances) } - r.newAddress(r.filter(instances)) + r.newAddress(res) } } } func (r *Resolver) filter(backends []*naming.Instance) (instances []*naming.Instance) { + if len(backends) == 0 { + return + } for _, ins := range backends { //如果r.clusters的长度大于0说明需要进行集群选择 if _, ok := r.clusters[ins.Metadata[naming.MetaCluster]]; !ok && len(r.clusters) > 0 {