mirror of
https://github.com/go-kratos/kratos.git
synced 2025-03-17 21:07:54 +02:00
fix concurrent map read and write (#446)
* fix concurrent map read and write * add test for fetch after build opt * fix typo
This commit is contained in:
parent
43a13f6aae
commit
99eb3efa02
@ -276,9 +276,18 @@ func (r *Resolve) Fetch(ctx context.Context) (ins *naming.InstancesInfo, ok bool
|
||||
app, ok := r.d.apps[r.id]
|
||||
r.d.mutex.RUnlock()
|
||||
if ok {
|
||||
ins, ok = app.zoneIns.Load().(*naming.InstancesInfo)
|
||||
var appIns *naming.InstancesInfo
|
||||
appIns, ok = app.zoneIns.Load().(*naming.InstancesInfo)
|
||||
ins = new(naming.InstancesInfo)
|
||||
ins.LastTs = appIns.LastTs
|
||||
ins.Scheduler = appIns.Scheduler
|
||||
if r.opt.Filter != nil {
|
||||
ins.Instances = r.opt.Filter(ins.Instances)
|
||||
ins.Instances = r.opt.Filter(appIns.Instances)
|
||||
} else {
|
||||
ins.Instances = make(map[string][]*naming.Instance)
|
||||
for zone, in := range appIns.Instances {
|
||||
ins.Instances[zone] = in
|
||||
}
|
||||
}
|
||||
if r.opt.Scheduler != nil {
|
||||
ins.Instances[r.opt.ClientZone] = r.opt.Scheduler(ins)
|
||||
|
Loading…
x
Reference in New Issue
Block a user