fix(backend): avoid potential recursive locks

Fixes #2944
This commit is contained in:
Łukasz Mierzwa
2021-04-06 15:20:56 +01:00
committed by Łukasz Mierzwa
parent 7a5337c761
commit a30b702203
2 changed files with 10 additions and 7 deletions

View File

@@ -6,6 +6,7 @@
- Header values are now sanitised before logging when `log:config` is
enabled #2930.
- Fixed a deadlock issue that could cause karma to hang #2944 (@jonaz).
### Added

View File

@@ -493,12 +493,16 @@ func (am *Alertmanager) setError(err string) {
am.lastError = err
}
func (am *Alertmanager) Error() string {
func (am *Alertmanager) getLastError() string {
am.lock.RLock()
defer am.lock.RUnlock()
return am.lastError
}
if am.lastError != "" {
return am.lastError
func (am *Alertmanager) Error() string {
lastError := am.getLastError()
if lastError != "" {
return lastError
}
configPeers := clusterMembersFromConfig(am)
@@ -597,10 +601,8 @@ func (am *Alertmanager) ClusterName() string {
}
func (am *Alertmanager) IsHealthy() bool {
am.lock.RLock()
defer am.lock.RUnlock()
return am.lastError == ""
lastError := am.getLastError()
return lastError == ""
}
func (am *Alertmanager) IsHealthCheckAlert(alert *models.Alert) (string, *healthCheck) {