summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-11-29 14:12:04 +0000
committeralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-11-29 14:12:04 +0000
commit4c418de98e6c5cef953378998057752dc20ab2c3 (patch)
tree44e546309ccc9b92b45f6469fb1081e32be6a7d9 /src
parent8a08a39f58032aae2a50f3bc6183d0f7b036c970 (diff)
downloadzabbix-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.c8
-rw-r--r--src/zabbix_server/housekeeper/housekeeper.c3
-rw-r--r--src/zabbix_server/nodewatcher/nodewatcher.c12
-rw-r--r--src/zabbix_server/pinger/pinger.c2
-rw-r--r--src/zabbix_server/poller/poller.c3
-rw-r--r--src/zabbix_server/timer/timer.c2
-rw-r--r--src/zabbix_server/trapper/nodeevents.c4
-rw-r--r--src/zabbix_server/trapper/nodehistory.c4
-rw-r--r--src/zabbix_server/trapper/nodesync.c4
-rw-r--r--src/zabbix_server/trapper/trapper.c3
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");