summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-07-04 11:27:27 +0000
committeralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-07-04 11:27:27 +0000
commit87284087f0b676cf85589eab268bfd69d290f968 (patch)
tree23b2ca8aafd331565358aa21f9582e6adb0fc723 /src
parent621b3e8d4771f21e4ac620f957abdb5dc8573fd6 (diff)
downloadzabbix-87284087f0b676cf85589eab268bfd69d290f968.tar.gz
zabbix-87284087f0b676cf85589eab268bfd69d290f968.tar.xz
zabbix-87284087f0b676cf85589eab268bfd69d290f968.zip
- added server-side transactions for PostgreSQL (Alexei)
- fixed housekeeper to run as multiple transations (Alexei) git-svn-id: svn://svn.zabbix.com/trunk@4425 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
-rw-r--r--src/libs/zbxdb/db.c15
-rw-r--r--src/zabbix_server/housekeeper/housekeeper.c6
-rw-r--r--src/zabbix_server/nodewatcher/events.c20
-rw-r--r--src/zabbix_server/nodewatcher/history.c20
4 files changed, 36 insertions, 25 deletions
diff --git a/src/libs/zbxdb/db.c b/src/libs/zbxdb/db.c
index 96934207..a1cc71aa 100644
--- a/src/libs/zbxdb/db.c
+++ b/src/libs/zbxdb/db.c
@@ -244,6 +244,9 @@ void zbx_db_begin(void)
#ifdef HAVE_MYSQL
zbx_db_execute("%s","begin;");
#endif
+#ifdef HAVE_POSTGRESQL
+ zbx_db_execute("%s","begin;");
+#endif
#ifdef HAVE_SQLITE3
sqlite_transaction_started++;
@@ -251,7 +254,7 @@ void zbx_db_begin(void)
{
php_sem_acquire(&sqlite_access);
- zbx_db_execute("begin;");
+ zbx_db_execute("%s","begin;");
}
else
{
@@ -278,7 +281,10 @@ void zbx_db_begin(void)
void zbx_db_commit(void)
{
#ifdef HAVE_MYSQL
- zbx_db_execute("commit;");
+ zbx_db_execute("%s","commit;");
+#endif
+#ifdef HAVE_POSTGRESQL
+ zbx_db_execute("%s","commit;");
#endif
#ifdef HAVE_SQLITE3
@@ -289,7 +295,7 @@ void zbx_db_commit(void)
if(sqlite_transaction_started == 1)
{
- zbx_db_execute("commit;");
+ zbx_db_execute("%s","commit;");
sqlite_transaction_started = 0;
@@ -319,6 +325,9 @@ void zbx_db_rollback(void)
#ifdef HAVE_MYSQL
zbx_db_execute("rollback;");
#endif
+#ifdef HAVE_POSTGRESQL
+ zbx_db_execute("rollback;");
+#endif
#ifdef HAVE_SQLITE3
if(sqlite_transaction_started > 1)
diff --git a/src/zabbix_server/housekeeper/housekeeper.c b/src/zabbix_server/housekeeper/housekeeper.c
index 7c134dd6..27aab5ff 100644
--- a/src/zabbix_server/housekeeper/housekeeper.c
+++ b/src/zabbix_server/housekeeper/housekeeper.c
@@ -321,7 +321,8 @@ int main_housekeeper_loop()
DBconnect(ZBX_DB_CONNECT_NORMAL);
- DBbegin();
+/* Transaction is not required here. It causes timeouts under MySQL */
+/* DBbegin();*/
/* zbx_setproctitle("housekeeper [removing deleted hosts]");*/
@@ -355,7 +356,8 @@ int main_housekeeper_loop()
zbx_setproctitle("housekeeper [vacuuming database]");
- DBcommit();
+/* Transaction is not required here. It causes timeouts under MySQL */
+/* DBcommit();*/
DBvacuum();
diff --git a/src/zabbix_server/nodewatcher/events.c b/src/zabbix_server/nodewatcher/events.c
index b6859959..e503c162 100644
--- a/src/zabbix_server/nodewatcher/events.c
+++ b/src/zabbix_server/nodewatcher/events.c
@@ -146,19 +146,19 @@ void main_eventsender()
master_nodeid = get_master_node(CONFIG_NODEID);
- if(master_nodeid == 0) return;
-
- result = DBselect("select nodeid,event_lastid from nodes");
-
- while((row = DBfetch(result)))
+ if(master_nodeid != 0)
{
- nodeid=atoi(row[0]);
- ZBX_STR2UINT64(lastid,row[1])
+ result = DBselect("select nodeid,event_lastid from nodes");
- process_node(nodeid, master_nodeid, lastid);
- }
+ while((row = DBfetch(result)))
+ {
+ nodeid=atoi(row[0]);
+ ZBX_STR2UINT64(lastid,row[1])
- DBfree_result(result);
+ process_node(nodeid, master_nodeid, lastid);
+ }
+ DBfree_result(result);
+ }
DBcommit();
}
diff --git a/src/zabbix_server/nodewatcher/history.c b/src/zabbix_server/nodewatcher/history.c
index 0eb425bc..beb82127 100644
--- a/src/zabbix_server/nodewatcher/history.c
+++ b/src/zabbix_server/nodewatcher/history.c
@@ -349,19 +349,19 @@ void main_historysender()
master_nodeid = get_master_node(CONFIG_NODEID);
- if(master_nodeid == 0) return;
-
- result = DBselect("select nodeid from nodes");
-
- while((row = DBfetch(result)))
+ if(master_nodeid != 0)
{
- nodeid=atoi(row[0]);
- ZBX_STR2UINT64(lastid,row[1])
+ result = DBselect("select nodeid from nodes");
- process_node(nodeid, master_nodeid);
- }
+ while((row = DBfetch(result)))
+ {
+ nodeid=atoi(row[0]);
+ ZBX_STR2UINT64(lastid,row[1])
- DBfree_result(result);
+ process_node(nodeid, master_nodeid);
+ }
+ DBfree_result(result);
+ }
DBcommit();
}