summaryrefslogtreecommitdiffstats
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
parent621b3e8d4771f21e4ac620f957abdb5dc8573fd6 (diff)
- 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
-rw-r--r--ChangeLog2
-rwxr-xr-xgo2
-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
6 files changed, 39 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 011d8a6e..8aa064e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,8 @@ Changes for 1.5:
Changes for 1.4.2:
+ - added server-side transactions for PostgreSQL (Alexei)
+ - fixed housekeeper to run as multiple transations (Alexei)
- added support of NOT IN operator for time periods (Alexei)
- fixed processing of macro {TRIGGER.VALUE} on 32 bit systems (Alexei)
- changed priorities of '|' and '&' in trigger expressions (Alexei)
diff --git a/go b/go
index 1b680422..3d3474ad 100755
--- a/go
+++ b/go
@@ -33,7 +33,7 @@ cd create/schema
cd -
#export CFLAGS="-Wall -pedantic"
#for db in sqlite3 pgsql mysql; do
-for db in mysql; do
+for db in pgsql; do
./configure --enable-agent --enable-server --with-jabber --with-ldap --with-libcurl --with-$db --with-net-snmp --prefix=`pwd` 2>>WARNINGS >/dev/null
echo Cleaning...
make clean 2>>WARNINGS >/dev/null
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();
}