Fix logging race in systemd_linux.go (#3364)

The same variable was used for timing every parallel operation.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
This commit is contained in:
Bryan Boreham 2025-07-26 18:35:01 +01:00 committed by GitHub
parent 05c68e2040
commit b57f5bab2d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -228,7 +228,7 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error {
wg.Add(1) wg.Add(1)
go func() { go func() {
defer wg.Done() defer wg.Done()
begin = time.Now() begin := time.Now()
c.collectUnitStatusMetrics(conn, ch, units) c.collectUnitStatusMetrics(conn, ch, units)
c.logger.Debug("collectUnitStatusMetrics took", "duration_seconds", time.Since(begin).Seconds()) c.logger.Debug("collectUnitStatusMetrics took", "duration_seconds", time.Since(begin).Seconds())
}() }()
@ -237,7 +237,7 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error {
wg.Add(1) wg.Add(1)
go func() { go func() {
defer wg.Done() defer wg.Done()
begin = time.Now() begin := time.Now()
c.collectUnitStartTimeMetrics(conn, ch, units) c.collectUnitStartTimeMetrics(conn, ch, units)
c.logger.Debug("collectUnitStartTimeMetrics took", "duration_seconds", time.Since(begin).Seconds()) c.logger.Debug("collectUnitStartTimeMetrics took", "duration_seconds", time.Since(begin).Seconds())
}() }()
@ -247,7 +247,7 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error {
wg.Add(1) wg.Add(1)
go func() { go func() {
defer wg.Done() defer wg.Done()
begin = time.Now() begin := time.Now()
c.collectUnitTasksMetrics(conn, ch, units) c.collectUnitTasksMetrics(conn, ch, units)
c.logger.Debug("collectUnitTasksMetrics took", "duration_seconds", time.Since(begin).Seconds()) c.logger.Debug("collectUnitTasksMetrics took", "duration_seconds", time.Since(begin).Seconds())
}() }()
@ -257,7 +257,7 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error {
wg.Add(1) wg.Add(1)
go func() { go func() {
defer wg.Done() defer wg.Done()
begin = time.Now() begin := time.Now()
c.collectTimers(conn, ch, units) c.collectTimers(conn, ch, units)
c.logger.Debug("collectTimers took", "duration_seconds", time.Since(begin).Seconds()) c.logger.Debug("collectTimers took", "duration_seconds", time.Since(begin).Seconds())
}() }()
@ -266,13 +266,13 @@ func (c *systemdCollector) Update(ch chan<- prometheus.Metric) error {
wg.Add(1) wg.Add(1)
go func() { go func() {
defer wg.Done() defer wg.Done()
begin = time.Now() begin := time.Now()
c.collectSockets(conn, ch, units) c.collectSockets(conn, ch, units)
c.logger.Debug("collectSockets took", "duration_seconds", time.Since(begin).Seconds()) c.logger.Debug("collectSockets took", "duration_seconds", time.Since(begin).Seconds())
}() }()
if systemdVersion >= minSystemdVersionSystemState { if systemdVersion >= minSystemdVersionSystemState {
begin = time.Now() begin := time.Now()
err = c.collectSystemState(conn, ch) err = c.collectSystemState(conn, ch)
c.logger.Debug("collectSystemState took", "duration_seconds", time.Since(begin).Seconds()) c.logger.Debug("collectSystemState took", "duration_seconds", time.Since(begin).Seconds())
} }