static svn_error_t * ev2_close_edit(void *edit_baton, apr_pool_t *scratch_pool) { struct ev2_edit_baton *eb = edit_baton; apr_array_header_t *sorted_hash; apr_pool_t *iterpool; int i; /* Sort the paths touched by this edit. * Ev2 doesn't really have any particular need for depth-first-ness, but * we want to ensure all parent directories are handled before children in * the case of adds (which does introduce an element of depth-first-ness). */ sorted_hash = svn_sort__hash(eb->paths, svn_sort_compare_items_as_paths, scratch_pool); iterpool = svn_pool_create(scratch_pool); for (i = 0; i < sorted_hash->nelts; i++) { svn_sort__item_t *item = &APR_ARRAY_IDX(sorted_hash, i, svn_sort__item_t); apr_array_header_t *actions = item->value; const char *path = item->key; svn_pool_clear(iterpool); SVN_ERR(process_actions(edit_baton, path, actions, iterpool)); } svn_pool_destroy(iterpool); return svn_error_trace(svn_editor_complete(eb->editor)); }
int process_events(void) { const char *__function_name = "process_events"; size_t i; zabbix_log(LOG_LEVEL_DEBUG, "In %s() events_num:" ZBX_FS_SIZE_T, __function_name, (zbx_fs_size_t)events_num); if (0 != events_num) { save_events(); process_actions(events, events_num); for (i = 0; i < events_num; i++) { if (EVENT_SOURCE_TRIGGERS == events[i].source) { DBupdate_services(events[i].objectid, TRIGGER_VALUE_PROBLEM == events[i].value ? events[i].trigger.priority : 0, events[i].clock); } } clean_events(); } zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __function_name); return (int)events_num; /* performance metric */ }
/****************************************************************************** * * * Function: process_event * * * * Purpose: process new event * * * * Parameters: event - event data (event.eventid - new event) * * * * Return value: SUCCEED - event added * * FAIL - event not added * * * * Comments: When processing trigger events IT services updates are queued * * and _must_ be flushed at the end of transaction with * * DBflush_itservice_updates() function !!! * * * * Author: Alexei Vladishev * * * ******************************************************************************/ int process_event(zbx_uint64_t eventid, int source, int object, zbx_uint64_t objectid, const zbx_timespec_t *timespec, int value, unsigned char value_changed, int acknowledged, int force_actions) { const char *__function_name = "process_event"; DB_EVENT event; int ret = FAIL; zabbix_log(LOG_LEVEL_DEBUG, "In %s() eventid:" ZBX_FS_UI64 " object:%d objectid:" ZBX_FS_UI64 " value:%d" " value_changed:%d", __function_name, eventid, object, objectid, value, (int)value_changed); /* preparing event for processing */ memset(&event, 0, sizeof(DB_EVENT)); event.eventid = eventid; event.source = source; event.object = object; event.objectid = objectid; event.clock = timespec->sec; event.ns = timespec->ns; event.value = value; event.value_changed = value_changed; event.acknowledged = acknowledged; if (TRIGGER_VALUE_CHANGED_YES == event.value_changed || 1 == force_actions) if (SUCCEED != add_trigger_info(&event)) goto fail; if (0 == event.eventid) event.eventid = DBget_maxid("events"); DBexecute("insert into events (eventid,source,object,objectid,clock,ns,value,value_changed)" " values (" ZBX_FS_UI64 ",%d,%d," ZBX_FS_UI64 ",%d,%d,%d,%d)", event.eventid, event.source, event.object, event.objectid, event.clock, event.ns, event.value, (int)event.value_changed); if (TRIGGER_VALUE_CHANGED_YES == event.value_changed || 1 == force_actions) process_actions(&event); if (TRIGGER_VALUE_CHANGED_YES == event.value_changed && EVENT_OBJECT_TRIGGER == event.object) { DBqueue_itservice_update(event.objectid, TRIGGER_VALUE_TRUE == event.value ? event.trigger.priority : 0, event.clock); } ret = SUCCEED; fail: zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(ret)); return ret; }
/****************************************************************************** * * * Function: process_event * * * * Purpose: process new event * * * * Parameters: event - event data (event.eventid - new event) * * * * Return value: SUCCESS - event added * * * * Author: Alexei Vladishev * * * * Comments: Cannot use action->userid as it may also be groupid * * * ******************************************************************************/ int process_event(DB_EVENT *event) { zabbix_log(LOG_LEVEL_DEBUG,"In process_event(eventid:" ZBX_FS_UI64 ",object:%d,objectid:" ZBX_FS_UI64 ")", event->eventid, event->object, event->objectid); add_trigger_info(event); event->eventid = DBadd_event_low_level (event->source, event->object, event->objectid, event->clock, event->value); if (event->source == EVENT_SOURCE_TRIGGERS) HFS_add_event (CONFIG_HFS_PATH, CONFIG_SERVER_SITE, event->eventid, event->objectid, event->clock, event->value, event->acknowledged, event->hostid); /* Cancel currently active alerts */ /* if(event->value == TRIGGER_VALUE_FALSE || event->value == TRIGGER_VALUE_TRUE) { DBexecute("update alerts set retries=3,error='Trigger changed its status. Will not send repeats.' where triggerid=" ZBX_FS_UI64 " and repeats>0 and status=%d", event->triggerid, ALERT_STATUS_NOT_SENT); }*/ if(event->skip_actions == 0) { process_actions(event); } if(event->value == TRIGGER_VALUE_TRUE) { DBupdate_services(event->objectid, event->trigger_priority); } else { DBupdate_services(event->objectid, 0); } free_trigger_info(event); zabbix_log(LOG_LEVEL_DEBUG,"End of process_event()"); return SUCCEED; }