-
Incident report
-
Resolution: Fixed
-
Major
-
3.2.1
-
Sprint 1, Sprint 2
-
2
The DCconfig_get_time_based_triggers() function, which is used by timer to get triggers to process, ignores trigger recovery expressions. This means that trigger with time based functions only in recovery expression will not be periodically recalculated by timer:
int DCconfig_get_time_based_triggers(DC_TRIGGER *trigger_info, zbx_vector_ptr_t *trigger_order, int max_triggers, zbx_uint64_t start_triggerid, int process_num) { int i, start; ZBX_DC_TRIGGER *dc_trigger; DC_TRIGGER *trigger; LOCK_CACHE; start = zbx_vector_ptr_nearestindex(&config->time_triggers[process_num - 1], &start_triggerid, ZBX_DEFAULT_UINT64_PTR_COMPARE_FUNC); for (i = start; i < config->time_triggers[process_num - 1].values_num; i++) { dc_trigger = (ZBX_DC_TRIGGER *)config->time_triggers[process_num - 1].values[i]; if (TRIGGER_STATUS_ENABLED == dc_trigger->status && 0 == dc_trigger->locked && SUCCEED == DCconfig_find_active_time_function(dc_trigger->expression)) { dc_trigger->locked = 1; trigger = &trigger_info[trigger_order->values_num]; DCget_trigger(trigger, dc_trigger, ZBX_EXPAND_MACROS); zbx_timespec(&trigger->timespec); zbx_vector_ptr_append(trigger_order, trigger); if (trigger_order->values_num == max_triggers) break; } } UNLOCK_CACHE; return trigger_order->values_num; }
- is duplicated by
-
ZBX-11795 Recovery expression with nodata() doesn't work properly
- Closed