diff options
| author | alex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-11-29 14:12:04 +0000 |
|---|---|---|
| committer | alex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-11-29 14:12:04 +0000 |
| commit | 4c418de98e6c5cef953378998057752dc20ab2c3 (patch) | |
| tree | 44e546309ccc9b92b45f6469fb1081e32be6a7d9 /src | |
| parent | 8a08a39f58032aae2a50f3bc6183d0f7b036c970 (diff) | |
| download | zabbix-4c418de98e6c5cef953378998057752dc20ab2c3.tar.gz zabbix-4c418de98e6c5cef953378998057752dc20ab2c3.tar.xz zabbix-4c418de98e6c5cef953378998057752dc20ab2c3.zip | |
- added transactional approach to ZABBIX server (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@3538 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
| -rw-r--r-- | src/libs/zbxdbhigh/db.c | 8 | ||||
| -rw-r--r-- | src/zabbix_server/housekeeper/housekeeper.c | 3 | ||||
| -rw-r--r-- | src/zabbix_server/nodewatcher/nodewatcher.c | 12 | ||||
| -rw-r--r-- | src/zabbix_server/pinger/pinger.c | 2 | ||||
| -rw-r--r-- | src/zabbix_server/poller/poller.c | 3 | ||||
| -rw-r--r-- | src/zabbix_server/timer/timer.c | 2 | ||||
| -rw-r--r-- | src/zabbix_server/trapper/nodeevents.c | 4 | ||||
| -rw-r--r-- | src/zabbix_server/trapper/nodehistory.c | 4 | ||||
| -rw-r--r-- | src/zabbix_server/trapper/nodesync.c | 4 | ||||
| -rw-r--r-- | src/zabbix_server/trapper/trapper.c | 3 |
10 files changed, 42 insertions, 3 deletions
diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c index 7208aa05..695042c5 100644 --- a/src/libs/zbxdbhigh/db.c +++ b/src/libs/zbxdbhigh/db.c @@ -167,6 +167,10 @@ void DBconnect(void) ******************************************************************************/ void DBbegin(void) { +#ifdef HAVE_MYSQL +// Fix autocommit in DBconnect +// DBexecute("begin;"); +#endif #ifdef HAVE_SQLITE3 DBexecute("begin;"); #endif @@ -189,6 +193,10 @@ void DBbegin(void) ******************************************************************************/ void DBcommit(void) { +#ifdef HAVE_MYSQL +// Fix autocommit in DBconnect +// DBexecute("commit;"); +#endif #ifdef HAVE_SQLITE3 DBexecute("commit;"); #endif diff --git a/src/zabbix_server/housekeeper/housekeeper.c b/src/zabbix_server/housekeeper/housekeeper.c index 3c27fa30..b22f7ef3 100644 --- a/src/zabbix_server/housekeeper/housekeeper.c +++ b/src/zabbix_server/housekeeper/housekeeper.c @@ -320,6 +320,7 @@ int main_housekeeper_loop() DBconnect(); + DBbegin(); /* zbx_setproctitle("housekeeper [removing deleted hosts]");*/ @@ -352,6 +353,8 @@ int main_housekeeper_loop() zbx_setproctitle("housekeeper [vacuuming database]"); + DBcommit(); + DBvacuum(); zabbix_log( LOG_LEVEL_DEBUG, "Sleeping for %d hours", CONFIG_HOUSEKEEPING_FREQUENCY); diff --git a/src/zabbix_server/nodewatcher/nodewatcher.c b/src/zabbix_server/nodewatcher/nodewatcher.c index de62267c..175d763f 100644 --- a/src/zabbix_server/nodewatcher/nodewatcher.c +++ b/src/zabbix_server/nodewatcher/nodewatcher.c @@ -89,6 +89,9 @@ static int calculate_checksums() int now; zabbix_log( LOG_LEVEL_DEBUG, "In calculate_checksums"); + + DBbegin(); + DBexecute("delete from node_cksum where cksumtype=%d", NODE_CKSUM_TYPE_NEW); // insert into node_cksum (select NULL,0,'items','itemid',itemid,0,md5(concat(key_)) as md5 from items); @@ -155,6 +158,7 @@ static int calculate_checksums() } DBfree_result(result); + DBcommit(); return SUCCEED; } @@ -177,10 +181,12 @@ static int calculate_checksums() ******************************************************************************/ static int update_checksums() { - /* Begin work */ + DBbegin(); + DBexecute("delete from node_cksum where cksumtype=%d", NODE_CKSUM_TYPE_OLD); DBexecute("update node_cksum set cksumtype=%d where cksumtype=%d", NODE_CKSUM_TYPE_OLD, NODE_CKSUM_TYPE_NEW); - /* Commit */ + + DBcommit(); return SUCCEED; } @@ -208,6 +214,7 @@ static int compare_checksums() DB_ROW row; /* Begin work */ + DBbegin(); /* Find updated records */ result = DBselect("select curr.nodeid,curr.tablename,curr.recordid from node_cksum prev, node_cksum curr where curr.tablename=prev.tablename and curr.recordid=prev.recordid and curr.fieldname=prev.fieldname and curr.nodeid=prev.nodeid and curr.cksum<>prev.cksum and curr.cksumtype=%d and prev.cksumtype=%d", NODE_CKSUM_TYPE_NEW, NODE_CKSUM_TYPE_OLD); @@ -254,6 +261,7 @@ static int compare_checksums() DBfree_result(result); /* Commit */ + DBcommit(); return SUCCEED; } diff --git a/src/zabbix_server/pinger/pinger.c b/src/zabbix_server/pinger/pinger.c index b81dd265..958a12c0 100644 --- a/src/zabbix_server/pinger/pinger.c +++ b/src/zabbix_server/pinger/pinger.c @@ -191,8 +191,10 @@ static int process_value(char *key, char *host, AGENT_RESULT *value) item.multiplier=atoi(row[19]); item.formula=row[20]; + DBbegin(); process_new_value(&item,value); update_triggers(item.itemid); + DBcommit(); DBfree_result(result); diff --git a/src/zabbix_server/poller/poller.c b/src/zabbix_server/poller/poller.c index 036406fa..9ad08bec 100644 --- a/src/zabbix_server/poller/poller.c +++ b/src/zabbix_server/poller/poller.c @@ -261,6 +261,8 @@ int get_values(void) init_result(&agent); zabbix_log( LOG_LEVEL_DEBUG, "GOT VALUE TYPE [0x%X]", agent.type); res = get_value(&item, &agent); + + DBbegin(); if(res == SUCCEED ) { @@ -368,6 +370,7 @@ int get_values(void) zabbix_log( LOG_LEVEL_WARNING, "The value is not stored in database."); } free_result(&agent); + DBcommit(); } DBfree_result(result); diff --git a/src/zabbix_server/timer/timer.c b/src/zabbix_server/timer/timer.c index 72dfb8e4..6a08fbb6 100644 --- a/src/zabbix_server/timer/timer.c +++ b/src/zabbix_server/timer/timer.c @@ -100,8 +100,10 @@ void main_timer_loop() /* zbx_snprintf(sql,sizeof(sql),"update functions set lastvalue='1' where itemid=%d and function='%s' and parameter='%s'" , itemid, function, parameter ); DBexecute(sql);*/ + DBbegin(); update_functions(&item); update_triggers(item.itemid); + DBcommit(); } DBfree_result(result); diff --git a/src/zabbix_server/trapper/nodeevents.c b/src/zabbix_server/trapper/nodeevents.c index 93292fc9..9939b1b9 100644 --- a/src/zabbix_server/trapper/nodeevents.c +++ b/src/zabbix_server/trapper/nodeevents.c @@ -112,7 +112,8 @@ int node_events(char *data) datalen = strlen(data); // zabbix_log( LOG_LEVEL_WARNING, "In node_events(len:%d)", datalen); - +// + DBbegin(); s=(char *)strtok(data,"\n"); while(s!=NULL) { @@ -135,5 +136,6 @@ int node_events(char *data) s=(char *)strtok(NULL,"\n"); } + DBcommit(); return SUCCEED; } diff --git a/src/zabbix_server/trapper/nodehistory.c b/src/zabbix_server/trapper/nodehistory.c index d4469d9d..33830e24 100644 --- a/src/zabbix_server/trapper/nodehistory.c +++ b/src/zabbix_server/trapper/nodehistory.c @@ -140,6 +140,8 @@ int node_history(char *data) zabbix_log( LOG_LEVEL_DEBUG, "In node_history(len:%d)", datalen); + DBbegin(); + s=(char *)strtok(data,"\n"); while(s!=NULL) { @@ -162,5 +164,7 @@ int node_history(char *data) s=(char *)strtok(NULL,"\n"); } + DBcommit(); + return SUCCEED; } diff --git a/src/zabbix_server/trapper/nodesync.c b/src/zabbix_server/trapper/nodesync.c index 76b4435b..74a164f0 100644 --- a/src/zabbix_server/trapper/nodesync.c +++ b/src/zabbix_server/trapper/nodesync.c @@ -220,6 +220,8 @@ int node_sync(char *data) datalen=strlen(data); // zabbix_log( LOG_LEVEL_WARNING, "In node_sync(len:%d)", datalen); +// + DBbegin(); s=(char *)strtok(data,"\n"); while(s!=NULL) @@ -243,5 +245,7 @@ int node_sync(char *data) s=(char *)strtok(NULL,"\n"); } + DBcommit(); + return SUCCEED; } diff --git a/src/zabbix_server/trapper/trapper.c b/src/zabbix_server/trapper/trapper.c index 4a777247..90b75f84 100644 --- a/src/zabbix_server/trapper/trapper.c +++ b/src/zabbix_server/trapper/trapper.c @@ -190,7 +190,10 @@ int process_trap(int sockfd,char *s, int max_len) severity[0]=0; } + DBbegin(); ret=process_data(sockfd,server,key,value_string,lastlogsize,timestamp,source,severity); + DBcommit(); + if( SUCCEED == ret) { zbx_snprintf(result,sizeof(result),"OK\n"); |
