diff options
author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-06-05 08:56:09 +0000 |
---|---|---|
committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-06-05 08:56:09 +0000 |
commit | de821d752713e82471fcb70c7c9e694decee3889 (patch) | |
tree | c7b4ec42cbe26738df878ed27b857662ea8fe718 | |
parent | 5e8d328bf66fd5144d6ce765ef1928f8abdf7e8a (diff) | |
download | zabbix-de821d752713e82471fcb70c7c9e694decee3889.tar.gz zabbix-de821d752713e82471fcb70c7c9e694decee3889.tar.xz zabbix-de821d752713e82471fcb70c7c9e694decee3889.zip |
- better read loop in active.c (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@1820 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | create/mysql/schema.sql | 13 | ||||
-rwxr-xr-x | go | 7 | ||||
-rw-r--r-- | include/db.c | 1 | ||||
-rw-r--r-- | include/functions.c | 18 | ||||
-rw-r--r-- | src/zabbix_agent/active.c | 37 |
6 files changed, 63 insertions, 14 deletions
@@ -1,5 +1,6 @@ Changes for 1.1alpha11: + - better read loop in active.c (Alexei) - added parameter DisableActive for zabbix_agentd (Alexei) - trigger expressions may contain spaces (Alexei) - improvements for snprintf.c (Alexei) diff --git a/create/mysql/schema.sql b/create/mysql/schema.sql index c7a76dc7..e52cc88e 100644 --- a/create/mysql/schema.sql +++ b/create/mysql/schema.sql @@ -642,6 +642,19 @@ CREATE TABLE escalation_rules ( ) type=InnoDB; -- +-- Table structure for table 'escalation_log' +-- + +CREATE TABLE escalation_log ( + alarmid int(4) DEFAULT '0' NOT NULL, + escalationid int(4) DEFAULT '0' NOT NULL, + level int(4) DEFAULT '0' NOT NULL, + adminlevel int(4) DEFAULT '0' NOT NULL, + nextcheck int(4) DEFAULT '0' NOT NULL, + PRIMARY KEY (alarmid,escalationid) +) type=InnoDB; + +-- -- Table structure for table 'hosts_templates' -- @@ -0,0 +1,7 @@ +#!/bin/sh + +mkdir bin +autoheader +autoconf +./configure --with-mysql +make diff --git a/include/db.c b/include/db.c index f036cc79..1c6cb750 100644 --- a/include/db.c +++ b/include/db.c @@ -467,6 +467,7 @@ int add_alarm(int triggerid,int status,int clock) zabbix_log(LOG_LEVEL_DEBUG,"In add_alarm()"); + /* Latest alarm has the same status? */ if(latest_alarm(triggerid,status) == SUCCEED) { return SUCCEED; diff --git a/include/functions.c b/include/functions.c index a5ad2733..9de1cfac 100644 --- a/include/functions.c +++ b/include/functions.c @@ -1026,7 +1026,7 @@ void update_triggers(int itemid) { char sql[MAX_STRING_LEN]; char exp[MAX_STRING_LEN]; - int b; + int exp_value; int now; DB_TRIGGER trigger; DB_RESULT *result; @@ -1053,7 +1053,7 @@ void update_triggers(int itemid) trigger.value=atoi(DBget_field(result,i,5)); trigger.description=DBget_field(result,i,6); strscpy(exp, trigger.expression); - if( evaluate_expression(&b, exp) != 0 ) + if( evaluate_expression(&exp_value, exp) != 0 ) { zabbix_log( LOG_LEVEL_WARNING, "Expression [%s] cannot be evaluated.",trigger.expression); zabbix_syslog("Expression [%s] cannot be evaluated.",trigger.expression); @@ -1063,9 +1063,9 @@ void update_triggers(int itemid) /* Oprimise a little bit */ prevvalue=DBget_prev_trigger_value(trigger.triggerid); - zabbix_log( LOG_LEVEL_DEBUG, "b trigger.value prevvalue [%d] [%d] [%d]", b, trigger.value, prevvalue); + zabbix_log( LOG_LEVEL_DEBUG, "exp_value trigger.value prevvalue [%d] [%d] [%d]", exp_value, trigger.value, prevvalue); - if(TRIGGER_VALUE_TRUE == b) + if(TRIGGER_VALUE_TRUE == exp_value) { if(trigger.value != TRIGGER_VALUE_TRUE) { @@ -1081,19 +1081,17 @@ void update_triggers(int itemid) /* (DBget_prev_trigger_value(trigger.triggerid) == TRIGGER_VALUE_FALSE)*/ )) { - now = time(NULL); -/* apply_actions(trigger.triggerid,1);*/ apply_actions(&trigger,1); - + + /* Why? */ snprintf(sql,sizeof(sql)-1,"update actions set nextcheck=0 where triggerid=%d and good=0",trigger.triggerid); DBexecute(sql); update_services(trigger.triggerid, trigger.priority); } - } - if(TRIGGER_VALUE_FALSE == b) + if(TRIGGER_VALUE_FALSE == exp_value) { if(trigger.value != TRIGGER_VALUE_FALSE) { @@ -1109,9 +1107,9 @@ void update_triggers(int itemid) /* (DBget_prev_trigger_value(trigger.triggerid) == TRIGGER_VALUE_TRUE)*/ )) { -/* apply_actions(trigger.triggerid,0);*/ apply_actions(&trigger,0); + /* Why? */ snprintf(sql,sizeof(sql)-1,"update actions set nextcheck=0 where triggerid=%d and good=1",trigger.triggerid); DBexecute(sql); diff --git a/src/zabbix_agent/active.c b/src/zabbix_agent/active.c index 9cb96689..dac6cca4 100644 --- a/src/zabbix_agent/active.c +++ b/src/zabbix_agent/active.c @@ -182,9 +182,8 @@ int parse_list_of_checks(char *str) int get_active_checks(char *server, int port, char *error, int max_error_len) { int s; - int len; + int len,amount_read; char c[MAX_BUF_LEN]; - char tmp[MAX_STRING_LEN]; struct hostent *hp; @@ -258,7 +257,37 @@ int get_active_checks(char *server, int port, char *error, int max_error_len) zabbix_log(LOG_LEVEL_DEBUG, "Before read"); - while((len=read(s,tmp,MAX_BUF_LEN-1))>0) + amount_read = 0; + + do + { + len=read(s,c+amount_read,(MAX_BUF_LEN-1)-amount_read); + if (len > 0) + amount_read += len; + if(len == -1) + { + switch (errno) + { + case EINTR: + zabbix_log( LOG_LEVEL_WARNING, "Timeout while receiving data from [%s:%d]",server,port); + snprintf(error,max_error_len-1,"Timeout while receiving data from [%s:%d]",server,port); + break; + case ECONNRESET: + zabbix_log( LOG_LEVEL_WARNING, "Connection reset by peer."); + snprintf(error,max_error_len-1,"Connection reset by peer."); + close(s); + return NETWORK_ERROR; + default: + zabbix_log( LOG_LEVEL_WARNING, "Error while receiving data from [%s:%d] [%s]",server,port,strerror(errno)); + snprintf(error,max_error_len-1,"Error while receiving data from [%s:%d] [%s]",server,port,strerror(errno)); + } + close(s); + return FAIL; + } + } + while (len > 0); + +/* while((len=read(s,tmp,MAX_BUF_LEN-1))>0) { if(len == -1) { @@ -282,7 +311,7 @@ int get_active_checks(char *server, int port, char *error, int max_error_len) } strncat(c,tmp,len); } - zabbix_log(LOG_LEVEL_DEBUG, "Read [%s]", c); + zabbix_log(LOG_LEVEL_DEBUG, "Read [%s]", c);*/ parse_list_of_checks(c); |