summaryrefslogtreecommitdiffstats
path: root/src/libs/zbxserver
diff options
context:
space:
mode:
authorsasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-07-29 09:43:53 +0000
committersasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-07-29 09:43:53 +0000
commitf7cd0be8cdcedcc34656ced6982dd7abadca01fc (patch)
treea6aa538b83fd84824e8a8431bd9c2ecc694dafc3 /src/libs/zbxserver
parente3248ce4bc1b34d8623359d5333cfa9712b5eb73 (diff)
- [DEV-196] improved performance of server module
git-svn-id: svn://svn.zabbix.com/trunk@5848 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxserver')
-rw-r--r--src/libs/zbxserver/expression.c10
-rw-r--r--src/libs/zbxserver/expression.h1
-rw-r--r--src/libs/zbxserver/functions.c28
3 files changed, 23 insertions, 16 deletions
diff --git a/src/libs/zbxserver/expression.c b/src/libs/zbxserver/expression.c
index fdc23363..3141d35d 100644
--- a/src/libs/zbxserver/expression.c
+++ b/src/libs/zbxserver/expression.c
@@ -1503,9 +1503,9 @@ void substitute_macros(DB_EVENT *event, DB_ACTION *action, char **data)
if('\0' == *data[0]) return;
- zabbix_log(LOG_LEVEL_DEBUG, "Before substitute_simple_macros(%s)", *data);
+/* zabbix_log(LOG_LEVEL_DEBUG, "Before substitute_simple_macros(%s)", *data);*/
substitute_simple_macros(event, action, data, MACRO_TYPE_MESSAGE_SUBJECT | MACRO_TYPE_MESSAGE_BODY);
- zabbix_log(LOG_LEVEL_DEBUG, "After substitute_simple_macros(%s)", *data);
+/* zabbix_log(LOG_LEVEL_DEBUG, "After substitute_simple_macros(%s)", *data);*/
pl = *data;
while((pr = strchr(pl, '{')))
@@ -1599,7 +1599,7 @@ void substitute_macros(DB_EVENT *event, DB_ACTION *action, char **data)
* Comments: example: "({15}>10)|({123}=0)" => "(6.456>10)|(0=0) *
* *
******************************************************************************/
-int substitute_functions(char **exp, char *error, int maxerrlen)
+static int substitute_functions(char **exp, char *error, int maxerrlen)
{
char *value;
char functionid[MAX_STRING_LEN];
@@ -1674,7 +1674,7 @@ int substitute_functions(char **exp, char *error, int maxerrlen)
* ({a0:system[procload].max(300)}>3) *
* *
******************************************************************************/
-int evaluate_expression(int *result,char **expression, int trigger_value, char *error, int maxerrlen)
+int evaluate_expression(int *result,char **expression, DB_TRIGGER *trigger, char *error, int maxerrlen)
{
/* Required for substitution of macros */
DB_EVENT event;
@@ -1686,7 +1686,7 @@ int evaluate_expression(int *result,char **expression, int trigger_value, char *
/* Substitute macros first */
memset(&event,0,sizeof(DB_EVENT));
memset(&action,0,sizeof(DB_ACTION));
- event.value = trigger_value;
+ event.value = trigger->value;
substitute_simple_macros(&event, &action, expression, MACRO_TYPE_TRIGGER_EXPRESSION);
diff --git a/src/libs/zbxserver/expression.h b/src/libs/zbxserver/expression.h
index 9876dc08..15678c81 100644
--- a/src/libs/zbxserver/expression.h
+++ b/src/libs/zbxserver/expression.h
@@ -26,7 +26,6 @@
int cmp_double(double a,double b);
int find_char(char *str,char c);
-int evaluate_expression(int *result,char **expression, int triggger_value, char *error, int maxerrlen);
void delete_reol(char *c);
#endif
diff --git a/src/libs/zbxserver/functions.c b/src/libs/zbxserver/functions.c
index f453a9ca..e63e4121 100644
--- a/src/libs/zbxserver/functions.c
+++ b/src/libs/zbxserver/functions.c
@@ -152,7 +152,7 @@ void update_triggers(zbx_uint64_t itemid)
trigger.type = atoi(row[8]);
exp = strdup(trigger.expression);
- if( evaluate_expression(&exp_value, &exp, trigger.value, error, sizeof(error)) != 0 )
+ if( evaluate_expression(&exp_value, &exp, &trigger, error, sizeof(error)) != 0 )
{
zabbix_log( LOG_LEVEL_WARNING, "Expression [%s] cannot be evaluated [%s]",
trigger.expression,
@@ -295,7 +295,8 @@ static int add_history(DB_ITEM *item, AGENT_RESULT *value, int now)
else if(item->value_type==ITEM_VALUE_TYPE_LOG)
{
if(GET_STR_RESULT(value))
- DBadd_history_log(0, item->itemid,value->str,now,item->timestamp,item->eventlog_source,item->eventlog_severity);
+ DBadd_history_log(item->itemid, value->str, now, item->timestamp, item->eventlog_source,
+ item->eventlog_severity, item->lastlogsize);
}
else if(item->value_type==ITEM_VALUE_TYPE_TEXT)
{
@@ -575,10 +576,16 @@ void process_new_value(DB_ITEM *item, AGENT_RESULT *value, time_t now)
}
}
}
+/*
+zabbix_log(LOG_LEVEL_CRIT, "I");
+*/
add_history(item, value, now);
- update_item(item, value, now);
- update_functions(item);
+ if (0 == CONFIG_DBSYNCER_FORKS)
+ {
+ update_item(item, value, now);
+ update_functions(item);
+ }
}
/******************************************************************************
@@ -625,27 +632,27 @@ static int proxy_add_history(DB_ITEM *item, AGENT_RESULT *value, int now)
if(item->value_type==ITEM_VALUE_TYPE_UINT64)
{
if(GET_UI64_RESULT(value))
- DBproxy_add_history_uint(item->host_name, item->key, now, value->ui64);
+ DBproxy_add_history_uint(item->itemid, value->ui64, now);
}
else if(item->value_type==ITEM_VALUE_TYPE_FLOAT)
{
if(GET_DBL_RESULT(value))
- DBproxy_add_history(item->host_name, item->key, now, value->dbl);
+ DBproxy_add_history(item->itemid, value->dbl, now);
}
else if(item->value_type==ITEM_VALUE_TYPE_STR)
{
if(GET_STR_RESULT(value))
- DBproxy_add_history_str(item->host_name, item->key, now, value->str);
+ DBproxy_add_history_str(item->itemid, value->str, now);
}
else if(item->value_type==ITEM_VALUE_TYPE_LOG)
{
if(GET_STR_RESULT(value))
- DBproxy_add_history_log(item->host_name, item->key, now, item->timestamp, item->eventlog_source, item->eventlog_severity, value->str);
+ DBproxy_add_history_log(item->itemid, value->str, now, item->timestamp, item->eventlog_source, item->eventlog_severity, item->lastlogsize);
}
else if(item->value_type==ITEM_VALUE_TYPE_TEXT)
{
if(GET_TEXT_RESULT(value))
- DBproxy_add_history_text(item->host_name, item->key, now, value->text);
+ DBproxy_add_history_text(item->itemid, value->str, now);
}
else
{
@@ -738,5 +745,6 @@ void proxy_process_new_value(DB_ITEM *item, AGENT_RESULT *value, time_t now)
item->key);
proxy_add_history(item, value, now);
- proxy_update_item(item, value, now);
+ if (0 == CONFIG_DBSYNCER_FORKS)
+ proxy_update_item(item, value, now);
}