Alarm Coalescing

When an alarm flaps at a relatively low frequency (longer than Alarm.SHORT_LIVED_ALARM_THRESHOLD), a DashboardAlarm is created every time the alarm flaps. In order to prevent these alarm from cluttering the dashboard, we group them together in a process called coalescing.

Two (or more) DashboardAlarms coalesce whenever they share the same root cause and when they are no more than 24 hours apart (Alarm.COALESCE_WINDOW_HOURS). The newest alarm becomes the parent and the older alarms become children of the newest alarm. In case some of the older alarms had already coalesced previously, all these older alarms become children from the new parent. In this case, it is also possible for alarms older than 24 hours to join the alarm group, if they were already part of an earlier coalesced alarm group.

The final step in coalescing is to take the earliest alarm start time (given by the earliest init_time of the corresponding JuniperAlarms, CoriantAlarms or InfineraAlarms) to recall the first time this alarm was created.

Alarm coalescing is performed when an alarm exits the PENDING phase