From 398628870c10caac1d38fd2b1c86a15b07edba3e Mon Sep 17 00:00:00 2001 From: yubo Date: Thu, 11 Mar 2021 16:22:55 +0800 Subject: [PATCH] bugfix: add prober.plugins Stop() for release resource (#610) --- src/modules/prober/manager/collectrule.go | 4 ++++ src/modules/prober/manager/manager.go | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/modules/prober/manager/collectrule.go b/src/modules/prober/manager/collectrule.go index 421aef47..df68c33a 100644 --- a/src/modules/prober/manager/collectrule.go +++ b/src/modules/prober/manager/collectrule.go @@ -166,6 +166,10 @@ func (p *collectRule) update(rule *models.CollectRule) error { logger.Debugf("update %s", rule) + if si, ok := p.input.(telegraf.ServiceInput); ok { + si.Stop() + } + input, err := telegrafInput(rule) if err != nil { // ignore error, use old config diff --git a/src/modules/prober/manager/manager.go b/src/modules/prober/manager/manager.go index be181195..4212f50d 100644 --- a/src/modules/prober/manager/manager.go +++ b/src/modules/prober/manager/manager.go @@ -76,6 +76,15 @@ func (p *manager) loop() { }() } +func (p *manager) deleteRule(id int64) { + if rule, ok := p.index[id]; ok { + if si, ok := rule.input.(telegraf.ServiceInput); ok { + si.Stop() + } + delete(p.index, id) + } +} + // schedule return until there are no jobs func (p *manager) schedule() error { for { @@ -91,7 +100,7 @@ func (p *manager) schedule() error { latestRule, ok := p.cache.Get(summary.id) if !ok { // drop it if not exist in cache - delete(p.index, summary.id) + p.deleteRule(summary.id) continue }