From 4b7262f18d8e59d8d8457389954953d53ea99a2a Mon Sep 17 00:00:00 2001 From: 710leo <710leo@gmail.com> Date: Mon, 13 Apr 2020 19:27:24 +0800 Subject: [PATCH] delete strategy which does not found nid --- src/modules/monapi/cron/stra.go | 34 ++++++++++++++++++++++++++++++++- src/modules/monapi/monapi.go | 1 + 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/modules/monapi/cron/stra.go b/src/modules/monapi/cron/stra.go index 93916697..f44ff362 100644 --- a/src/modules/monapi/cron/stra.go +++ b/src/modules/monapi/cron/stra.go @@ -29,7 +29,7 @@ func SyncStra() error { list, err := model.StrasAll() if err != nil { stats.Counter.Set("mcache.stra.sync.err", 1) - return fmt.Errorf("model.StrasAll fail: %v", err) + return fmt.Errorf("get stras fail: %v", err) } smap := make(map[int64]*model.Stra) @@ -42,3 +42,35 @@ func SyncStra() error { mcache.StraCache.SetAll(smap) return nil } + +func CleanStraLoop() { + duration := time.Second * time.Duration(300) + for { + time.Sleep(duration) + CleanStra() + } +} + +//定期清理没有找到nid的策略 +func CleanStra() { + list, err := model.StrasAll() + if err != nil { + logger.Errorf("get stras fail: %v", err) + return + } + + for _, stra := range list { + node, err := model.NodeGet("id", stra.Nid) + if err != nil { + logger.Warning("get node failed, node id: %v, err: %v", stra.Nid, err) + continue + } + + if node == nil { + logger.Infof("delete stra:%d", stra.Id) + if err := model.StraDel(stra.Id); err != nil { + logger.Warning("delete stra: %d, err: %v", stra.Id, err) + } + } + } +} diff --git a/src/modules/monapi/monapi.go b/src/modules/monapi/monapi.go index 4e4675c3..f7a0516d 100644 --- a/src/modules/monapi/monapi.go +++ b/src/modules/monapi/monapi.go @@ -81,6 +81,7 @@ func main() { go cron.SyncMaskconfLoop() go cron.SyncStraLoop() + go cron.CleanStraLoop() go cron.EventConsumer() go cron.CallbackConsumer() go cron.CleanEventLoop()