fix(go.d): avoid blocking all jobs when stopping a slow job (#21448)
Ilya Mashchenko committed
Dec 11, 2025 at 14:46 UTC
510f134d7ba481ae729ce411eb34c5387e8e7e32
1 file changed
+8
-7
src/go/plugin/go.d/agent/jobmgr/manager.go
+8
-7
@@ -259,24 +259,25 @@ func (m *Manager) runNotifyRunningJobs() {
259
}
260
261
func (m *Manager) startRunningJob(job *module.Job) {
262
+ m.stopRunningJob(job.FullName())
263
+
264
m.runningJobs.lock()
265
defer m.runningJobs.unlock()
266
265
- if job, ok := m.runningJobs.lookup(job.FullName()); ok {
266
- job.Stop()
267
- }
268
-
267
go job.Start()
268
m.runningJobs.add(job.FullName(), job)
269
}
270
271
func (m *Manager) stopRunningJob(name string) {
272
m.runningJobs.lock()
275
- defer m.runningJobs.unlock()
273
+ job, ok := m.runningJobs.lookup(name)
274
+ if ok {
275
+ m.runningJobs.remove(name)
276
+ }
277
+ m.runningJobs.unlock()
278
277
- if job, ok := m.runningJobs.lookup(name); ok {
279
+ if ok {
280
job.Stop()
279
- m.runningJobs.remove(name)
281
}
282
}
283