fix: data race of NetClassCollector metrics initialization when multiple requests happen (#2995)

Signed-off-by: John Guo <john@johng.cn>
This commit is contained in:
John Guo 2024-04-19 23:15:54 +08:00 committed by GitHub
parent dc5d3ca0ae
commit e9e27138a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import (
"net"
"os"
"regexp"
"sync"
"github.com/alecthomas/kingpin/v2"
"github.com/go-kit/log"
@ -41,6 +42,7 @@ type netClassCollector struct {
subsystem string
ignoredDevicesPattern *regexp.Regexp
metricDescs map[string]*prometheus.Desc
metricDescsMu sync.Mutex
logger log.Logger
}
@ -136,6 +138,9 @@ func (c *netClassCollector) netClassSysfsUpdate(ch chan<- prometheus.Metric) err
}
func (c *netClassCollector) getFieldDesc(name string) *prometheus.Desc {
c.metricDescsMu.Lock()
defer c.metricDescsMu.Unlock()
fieldDesc, exists := c.metricDescs[name]
if !exists {