[transfer] fix and trigger generates event twice bug (#266)

* [transfer] fix and trigger generates event twice bug
* [monapi] stra excl all leaf nodes under exclNid
This commit is contained in:
youtwo123 2020-07-22 17:08:38 +08:00 committed by GitHub
parent 16a39410b8
commit 7abec2ccb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 15 deletions

View File

@ -232,10 +232,15 @@ func GetLeafNids(nid int64, exclNid []int64) ([]int64, error) {
return ids, nil return ids, nil
} }
exclLeafIds, err := GetExclLeafIds(exclNid)
if err != nil {
return leafIds, err
}
for _, id := range ids { for _, id := range ids {
idsMap[id] = true idsMap[id] = true
} }
for _, id := range exclNid { for _, id := range exclLeafIds {
delete(idsMap, id) delete(idsMap, id)
} }
@ -256,3 +261,19 @@ func removeDuplicateElement(addrs []string) []string {
} }
return result return result
} }
// GetExclLeafIds 获取排除节点下的叶子节点
func GetExclLeafIds(exclNid []int64) (leafIds []int64, err error) {
for _, nid := range exclNid {
node, err := model.NodeGet("id", nid)
if err != nil {
return leafIds, err
}
ids, err := node.LeafIds()
if err != nil {
return leafIds, err
}
leafIds = append(leafIds, ids...)
}
return leafIds, nil
}

View File

@ -76,23 +76,21 @@ func getStrategy() {
continue continue
} }
for _, exp := range stra.Exprs { metric := stra.Exprs[0].Metric
metric := exp.Metric for _, endpoint := range stra.Endpoints {
for _, endpoint := range stra.Endpoints { key := str.PK(metric, endpoint) //TODO get straMap key 此处需要优化
key := str.PK(metric, endpoint) //TODO get straMap key 此处需要优化 k1 := key[0:2] //为了加快查找,增加一层 mapkey 为计算出来的 hash 的前 2 位
k1 := key[0:2] //为了加快查找,增加一层 mapkey 为计算出来的 hash 的前 2 位
if _, exists := straMap[k1]; !exists { if _, exists := straMap[k1]; !exists {
straMap[k1] = make(map[string][]*model.Stra) straMap[k1] = make(map[string][]*model.Stra)
} }
if _, exists := straMap[k1][key]; !exists { if _, exists := straMap[k1][key]; !exists {
straMap[k1][key] = []*model.Stra{stra} straMap[k1][key] = []*model.Stra{stra}
stats.Counter.Set("stra.key", 1) stats.Counter.Set("stra.key", 1)
} else { } else {
straMap[k1][key] = append(straMap[k1][key], stra) straMap[k1][key] = append(straMap[k1][key], stra)
}
} }
} }
} }