WIP: Ajout d'un SafeAdapter, permettant de modifier les alarmes depuis plusieurs moteurs
Ticket : https://git.canopsis.net/canopsis/canopsis/issues/2029
Autres tickets corrigés par cette MR : #98 (moved), https://git.canopsis.net/canopsis/canopsis/issues/1974 (l'option enablelasteventdate
n'avait pas d'impact en terme de perf, donc je l'ai supprimée)
Cette MR ajoute un SafeAdapter
dans lib/canopsis/alarm/safe_adapter.go
, qui permet de modifier une alarme dans une transaction. Le SafeAdapter
est utilisé dans les services d'alarmes et d'actions. Cela revient (en gros) à remplacer :
alarm, _ := alarmService.GetLastAlarm(event.Connector, event.ConnectorName, event.GetEID())
// [...] Modification de l'alarme
alarmService.Update(alarm)
par
alarmSafeAdatper.WithLastAlarm(
ctx, event.Connector, event.ConnectorName, event.GetEID(),
func(ctx context.Context, alarm types.Alarm, alarmExists bool) (types.Alarm, bool, error) {
// [...] Modification de l'alarme
})
Cela a nécessité pas mal de changements dans les services d'alarme et d'actions, pour éviter les effets de bord. À mon avis il vaut mieux relire la MR commit par commit, ça sera un peu plus clair.
Edited by Mikaël Mourcia