Skip to content

WIP: Ajout d'un SafeAdapter, permettant de modifier les alarmes depuis plusieurs moteurs

Lucas Seguinot requested to merge refactor/alarm-safe-adapter into develop

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

Merge request reports