summaryrefslogtreecommitdiffstats
path: root/database/sqlite/sqlite_functions.c
diff options
context:
space:
mode:
Diffstat (limited to 'database/sqlite/sqlite_functions.c')
-rw-r--r--database/sqlite/sqlite_functions.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/database/sqlite/sqlite_functions.c b/database/sqlite/sqlite_functions.c
index 4200c1590..d976a3c6e 100644
--- a/database/sqlite/sqlite_functions.c
+++ b/database/sqlite/sqlite_functions.c
@@ -3,7 +3,7 @@
#include "sqlite_functions.h"
#include "sqlite_db_migration.h"
-#define DB_METADATA_VERSION 10
+#define DB_METADATA_VERSION 11
const char *database_config[] = {
"CREATE TABLE IF NOT EXISTS host(host_id BLOB PRIMARY KEY, hostname TEXT NOT NULL, "
@@ -34,8 +34,6 @@ const char *database_config[] = {
"repeat text, host_labels text, p_db_lookup_dimensions text, p_db_lookup_method text, p_db_lookup_options int, "
"p_db_lookup_after int, p_db_lookup_before int, p_update_every int, source text, chart_labels text);",
- "CREATE INDEX IF NOT EXISTS alert_hash_index ON alert_hash (hash_id);",
-
"CREATE TABLE IF NOT EXISTS host_info(host_id blob, system_key text NOT NULL, system_value text NOT NULL, "
"date_created INT, PRIMARY KEY(host_id, system_key));",
@@ -47,7 +45,7 @@ const char *database_config[] = {
"CREATE TABLE IF NOT EXISTS health_log (health_log_id INTEGER PRIMARY KEY, host_id blob, alarm_id int, "
"config_hash_id blob, name text, chart text, family text, recipient text, units text, exec text, "
- "chart_context text, last_transition_id blob, UNIQUE (host_id, alarm_id)) ;",
+ "chart_context text, last_transition_id blob, chart_name text, UNIQUE (host_id, alarm_id)) ;",
"CREATE INDEX IF NOT EXISTS health_log_ind_1 ON health_log (host_id);",
@@ -75,6 +73,7 @@ const char *database_cleanup[] = {
"DROP INDEX IF EXISTS ind_d1;",
"DROP INDEX IF EXISTS ind_c1;",
"DROP INDEX IF EXISTS ind_c2;",
+ "DROP INDEX IF EXISTS alert_hash_index;",
NULL
};
@@ -593,15 +592,20 @@ static inline void set_host_node_id(RRDHOST *host, uuid_t *node_id)
if (unlikely(!node_id)) {
freez(host->node_id);
- host->node_id = NULL;
+ __atomic_store_n(&host->node_id, NULL, __ATOMIC_RELAXED);
return;
}
struct aclk_sync_host_config *wc = host->aclk_sync_host_config;
- if (unlikely(!host->node_id))
- host->node_id = mallocz(sizeof(*host->node_id));
- uuid_copy(*(host->node_id), *node_id);
+ if (unlikely(!host->node_id)) {
+ uuid_t *t = mallocz(sizeof(*host->node_id));
+ uuid_copy(*t, *node_id);
+ __atomic_store_n(&host->node_id, t, __ATOMIC_RELAXED);
+ }
+ else {
+ uuid_copy(*(host->node_id), *node_id);
+ }
if (unlikely(!wc))
sql_create_aclk_table(host, &host->host_uuid, node_id);
@@ -617,6 +621,14 @@ int update_node_id(uuid_t *host_id, uuid_t *node_id)
RRDHOST *host = NULL;
int rc = 2;
+ char host_guid[GUID_LEN + 1];
+ uuid_unparse_lower(*host_id, host_guid);
+ rrd_wrlock();
+ host = rrdhost_find_by_guid(host_guid);
+ if (likely(host))
+ set_host_node_id(host, node_id);
+ rrd_unlock();
+
if (unlikely(!db_meta)) {
if (default_rrd_memory_mode == RRD_MEMORY_MODE_DBENGINE)
error_report("Database has not been initialized");
@@ -646,14 +658,6 @@ int update_node_id(uuid_t *host_id, uuid_t *node_id)
error_report("Failed to store node instance information, rc = %d", rc);
rc = sqlite3_changes(db_meta);
- char host_guid[GUID_LEN + 1];
- uuid_unparse_lower(*host_id, host_guid);
- rrd_wrlock();
- host = rrdhost_find_by_guid(host_guid);
- if (likely(host))
- set_host_node_id(host, node_id);
- rrd_unlock();
-
failed:
if (unlikely(sqlite3_finalize(res) != SQLITE_OK))
error_report("Failed to finalize the prepared statement when storing node instance information");