diff options
Diffstat (limited to 'database')
-rw-r--r-- | database/rrdhost.c | 1 | ||||
-rw-r--r-- | database/sqlite/sqlite_metadata.c | 33 | ||||
-rw-r--r-- | database/sqlite/sqlite_metadata.h | 2 |
3 files changed, 36 insertions, 0 deletions
diff --git a/database/rrdhost.c b/database/rrdhost.c index 7937573eed..94e5a4770f 100644 --- a/database/rrdhost.c +++ b/database/rrdhost.c @@ -364,6 +364,7 @@ int is_legacy = 1; rrdfamily_index_init(host); rrdcalctemplate_index_init(host); rrdcalc_rrdhost_index_init(host); + metaqueue_host_update_info(host); if (health_enabled) health_thread_spawn(host); diff --git a/database/sqlite/sqlite_metadata.c b/database/sqlite/sqlite_metadata.c index ec6df3f15d..28cd18e40e 100644 --- a/database/sqlite/sqlite_metadata.c +++ b/database/sqlite/sqlite_metadata.c @@ -62,6 +62,7 @@ enum metadata_opcode { METADATA_DATABASE_TIMER, METADATA_DEL_DIMENSION, METADATA_STORE_CLAIM_ID, + METADATA_ADD_HOST_INFO, METADATA_SCAN_HOSTS, METADATA_MAINTENANCE, METADATA_SYNC_SHUTDOWN, @@ -1014,6 +1015,7 @@ static void metadata_event_loop(void *arg) worker_register_job_name(METADATA_DATABASE_TIMER, "timer"); worker_register_job_name(METADATA_DEL_DIMENSION, "delete dimension"); worker_register_job_name(METADATA_STORE_CLAIM_ID, "add claim id"); + worker_register_job_name(METADATA_ADD_HOST_INFO, "add host info"); worker_register_job_name(METADATA_MAINTENANCE, "maintenance"); int ret; @@ -1063,6 +1065,8 @@ static void metadata_event_loop(void *arg) while (shutdown == 0 || (wc->flags & METADATA_WORKER_BUSY)) { uuid_t *uuid; + RRDHOST *host = NULL; + int rc; worker_is_idle(); uv_run(loop, UV_RUN_DEFAULT); @@ -1102,6 +1106,12 @@ static void metadata_event_loop(void *arg) freez((void *) cmd.param[0]); freez((void *) cmd.param[1]); break; + case METADATA_ADD_HOST_INFO: + host = (RRDHOST *) cmd.param[0]; + rc = sql_store_host_info(host); + if (unlikely(rc)) + error_report("Failed to store host info in the database for %s", string2str(host->hostname)); + break; case METADATA_SCAN_HOSTS: if (unlikely(metadata_flag_check(wc, METADATA_FLAG_SCANNING_HOSTS))) break; @@ -1281,6 +1291,29 @@ void metaqueue_delete_dimension_uuid(uuid_t *uuid) queue_metadata_cmd(METADATA_DEL_DIMENSION, use_uuid, NULL); } +void metaqueue_store_claim_id(uuid_t *host_uuid, uuid_t *claim_uuid) +{ + if (unlikely(!host_uuid)) + return; + + uuid_t *local_host_uuid = mallocz(sizeof(*host_uuid)); + uuid_t *local_claim_uuid = NULL; + + uuid_copy(*local_host_uuid, *host_uuid); + if (likely(claim_uuid)) { + local_claim_uuid = mallocz(sizeof(*claim_uuid)); + uuid_copy(*local_claim_uuid, *claim_uuid); + } + queue_metadata_cmd(METADATA_STORE_CLAIM_ID, local_host_uuid, local_claim_uuid); +} + +void metaqueue_host_update_info(RRDHOST *host) +{ + if (unlikely(!metasync_worker.loop)) + return; + queue_metadata_cmd(METADATA_ADD_HOST_INFO, host, NULL); +} + // // unitests // diff --git a/database/sqlite/sqlite_metadata.h b/database/sqlite/sqlite_metadata.h index 58ba666709..d578b7a8fe 100644 --- a/database/sqlite/sqlite_metadata.h +++ b/database/sqlite/sqlite_metadata.h @@ -12,6 +12,8 @@ void metadata_sync_shutdown(void); void metadata_sync_shutdown_prepare(void); void metaqueue_delete_dimension_uuid(uuid_t *uuid); +void metaqueue_store_claim_id(uuid_t *host_uuid, uuid_t *claim_uuid); +void metaqueue_host_update_info(RRDHOST *host); void migrate_localhost(uuid_t *host_uuid); // UNIT TEST |