fix race when starting a service while the agent `serviceManager` is … (#12302)
* fix race when starting a service while the agent `serviceManager` is stopping * add changelog
This commit is contained in:
parent
80be396bec
commit
de7598f064
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
Fix a data race when a service is added while the agent is shutting down..
|
||||||
|
```
|
|
@ -1368,14 +1368,14 @@ func (a *Agent) ShutdownAgent() error {
|
||||||
// this should help them to be stopped more quickly
|
// this should help them to be stopped more quickly
|
||||||
a.baseDeps.AutoConfig.Stop()
|
a.baseDeps.AutoConfig.Stop()
|
||||||
|
|
||||||
|
a.stateLock.Lock()
|
||||||
|
defer a.stateLock.Unlock()
|
||||||
// Stop the service manager (must happen before we take the stateLock to avoid deadlock)
|
// Stop the service manager (must happen before we take the stateLock to avoid deadlock)
|
||||||
if a.serviceManager != nil {
|
if a.serviceManager != nil {
|
||||||
a.serviceManager.Stop()
|
a.serviceManager.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop all the checks
|
// Stop all the checks
|
||||||
a.stateLock.Lock()
|
|
||||||
defer a.stateLock.Unlock()
|
|
||||||
for _, chk := range a.checkMonitors {
|
for _, chk := range a.checkMonitors {
|
||||||
chk.Stop()
|
chk.Stop()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue