From 375e089d1265ceb4f802e52b1222efa15332f0a9 Mon Sep 17 00:00:00 2001 From: zhiyuan-mojie <351843010@qq.com> Date: Fri, 9 Dec 2022 23:44:33 +0800 Subject: [PATCH] fix(inputs.mongodb): Fix connection leak triggered by config reload (#12330) Co-authored-by: amliu --- plugins/inputs/mongodb/mongodb.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/mongodb/mongodb.go b/plugins/inputs/mongodb/mongodb.go index 27f2ca858..9ff8fb52c 100644 --- a/plugins/inputs/mongodb/mongodb.go +++ b/plugins/inputs/mongodb/mongodb.go @@ -144,7 +144,16 @@ func (m *MongoDB) Start(telegraf.Accumulator) error { return nil } -func (m *MongoDB) Stop() {} +// Stop disconnect mongo connections when stop or reload +func (m *MongoDB) Stop() { + for _, server := range m.clients { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + if err := server.client.Disconnect(ctx); err != nil { + m.Log.Errorf("disconnecting from %q failed: %w", server, err) + } + cancel() + } +} // Reads stats from all configured servers accumulates stats. // Returns one of the errors encountered while gather stats (if any).