From e6cf58eafda6b348de30de5b6775d7f29fa27caf Mon Sep 17 00:00:00 2001 From: Zhang Wei Date: Mon, 18 Dec 2023 15:25:34 +0800 Subject: [PATCH] Fix cleanup leak in pipeline collectors Signed-off-by: Zhang Wei --- pkg/dcgmexporter/pipeline.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/dcgmexporter/pipeline.go b/pkg/dcgmexporter/pipeline.go index 553c38ce..048b6e6c 100644 --- a/pkg/dcgmexporter/pipeline.go +++ b/pkg/dcgmexporter/pipeline.go @@ -33,19 +33,25 @@ func NewMetricsPipeline(c *Config) (*MetricsPipeline, func(), error) { return nil, func() {}, err } + cleanups := []func(){} gpuCollector, cleanup, err := NewDCGMCollector(counters, c, dcgm.FE_GPU) if err != nil { return nil, func() {}, err } + cleanups = append(cleanups, cleanup) switchCollector, cleanup, err := NewDCGMCollector(counters, c, dcgm.FE_SWITCH) if err != nil { logrus.Info("Not collecting switch metrics: ", err) + } else { + cleanups = append(cleanups, cleanup) } linkCollector, cleanup, err := NewDCGMCollector(counters, c, dcgm.FE_LINK) if err != nil { logrus.Info("Not collecting link metrics: ", err) + } else { + cleanups = append(cleanups, cleanup) } transformations := []Transform{} @@ -71,7 +77,9 @@ func NewMetricsPipeline(c *Config) (*MetricsPipeline, func(), error) { linkCollector: linkCollector, transformations: transformations, }, func() { - cleanup() + for _, cleanup := range cleanups { + cleanup() + } }, nil }