summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/db.h1
-rw-r--r--include/zbxdb.h1
-rw-r--r--src/libs/zbxdb/db.c24
-rw-r--r--src/libs/zbxdbhigh/db.c22
-rw-r--r--src/zabbix_proxy/proxy.c7
5 files changed, 51 insertions, 4 deletions
diff --git a/include/db.h b/include/db.h
index 500b1210..c0c2b3c9 100644
--- a/include/db.h
+++ b/include/db.h
@@ -469,6 +469,7 @@ const char *DBnode(const char *fieldid, const int nodeid);
int DBping(void);
void DBconnect(int flag);
+void DBinit();
void DBclose(void);
void DBvacuum(void);
diff --git a/include/zbxdb.h b/include/zbxdb.h
index 939fc76d..18c56fef 100644
--- a/include/zbxdb.h
+++ b/include/zbxdb.h
@@ -113,6 +113,7 @@ void PG_DBfree_result(DB_RESULT result);
#endif
int zbx_db_connect(char *host, char *user, char *password, char *dbname, char *dbsocket, int port);
+void zbx_db_init(char *host, char *user, char *password, char *dbname, char *dbsocket, int port);
void zbx_db_close(void);
void zbx_db_vacuum(void);
diff --git a/src/libs/zbxdb/db.c b/src/libs/zbxdb/db.c
index 5909f329..9efeefc4 100644
--- a/src/libs/zbxdb/db.c
+++ b/src/libs/zbxdb/db.c
@@ -209,6 +209,30 @@ int zbx_db_connect(char *host, char *user, char *password, char *dbname, char *d
#endif
}
+void zbx_db_init(char *host, char *user, char *password, char *dbname, char *dbsocket, int port)
+{
+#ifdef HAVE_SQLITE3
+ int ret;
+ struct stat buf;
+#endif
+
+#ifdef HAVE_SQLITE3
+ if (0 != stat(dbname, &buf)) {
+ zabbix_log(LOG_LEVEL_WARNING, "Cannot open database file \"%s\": %s", dbname, strerror(errno));
+ zabbix_log(LOG_LEVEL_WARNING, "Creating database ...");
+
+ ret = sqlite3_open(dbname, &conn);
+ if (SQLITE_OK != ret) {
+ zabbix_log(LOG_LEVEL_ERR, "Can't create database \"%s\": %s", dbname, sqlite3_errmsg(conn));
+ exit(FAIL);
+ }
+
+ DBexecute("%s", db_schema);
+ DBclose();
+ }
+#endif
+}
+
int __zbx_zbx_db_execute(const char *fmt, ...)
{
va_list args;
diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c
index 238668ae..998764ad 100644
--- a/src/libs/zbxdbhigh/db.c
+++ b/src/libs/zbxdbhigh/db.c
@@ -57,7 +57,6 @@ void DBclose(void)
zbx_db_close();
}
-
/*
* Connect to the database.
* If fails, program terminates.
@@ -91,6 +90,26 @@ void DBconnect(int flag)
/******************************************************************************
* *
+ * Function: DBinit *
+ * *
+ * Purpose: *
+ * *
+ * Parameters: *
+ * *
+ * Return value: *
+ * *
+ * Author: Alksander Vladishev *
+ * *
+ * Comments: *
+ * *
+ ******************************************************************************/
+void DBinit()
+{
+ zbx_db_init(CONFIG_DBHOST, CONFIG_DBUSER, CONFIG_DBPASSWORD, CONFIG_DBNAME, CONFIG_DBSOCKET, CONFIG_DBPORT);
+}
+
+/******************************************************************************
+ * *
* Function: DBping *
* *
* Purpose: Check if database is down *
@@ -2057,3 +2076,4 @@ int DBproxy_add_history_str(zbx_uint64_t itemid, char *value, int clock)
return SUCCEED;
}
+
diff --git a/src/zabbix_proxy/proxy.c b/src/zabbix_proxy/proxy.c
index d3d1ba95..c3341b2f 100644
--- a/src/zabbix_proxy/proxy.c
+++ b/src/zabbix_proxy/proxy.c
@@ -471,13 +471,13 @@ int MAIN_ZABBIX_ENTRY(void)
}
#endif /* HAVE_SQLITE3 */
- DBconnect(ZBX_DB_CONNECT_EXIT);
+/* DBconnect(ZBX_DB_CONNECT_EXIT);*/
/* Need to set trigger status to UNKNOWN since last run */
/* DBconnect() already made in init_config() */
/* DBconnect();*/
- DBupdate_triggers_status_after_restart();
- DBclose();
+/* DBupdate_triggers_status_after_restart();
+ DBclose();*/
/* To make sure that we can connect to the database before forking new processes */
/* DBconnect(ZBX_DB_CONNECT_EXIT);*/
@@ -488,6 +488,7 @@ int MAIN_ZABBIX_ENTRY(void)
zbx_error("Unable to create mutex for node syncs");
exit(FAIL);
}*/
+ DBinit();
threads = calloc(1 + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
+ CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS