@cryptotaxi247 / netdata-1 / commits / 6be264d62

Store host and claim info in sqlite as soon as possible (#14263)

* store host and claim info as soon as possible * no need to set the flag * check for metasync_worker.loop

Emmanuel Vasilakis committed Jan 17, 2023 at 17:08 UTC 6be264d62788b1b50109dc1f2a0cb6f622cfb804
4 files changed +37 -2
claim/claim.c
+1 -2
@@ -170,10 +170,9 @@ void load_claiming_state(void)
170 }
171
172 invalidate_node_instances(&localhost->host_uuid, claimed_id ? &uuid : NULL);
173 + metaqueue_store_claim_id(&localhost->host_uuid, claimed_id ? &uuid : NULL);
174 rrdhost_aclk_state_unlock(localhost);
175
175 - rrdhost_flag_set(localhost, RRDHOST_FLAG_METADATA_CLAIMID | RRDHOST_FLAG_METADATA_UPDATE);
176 -
176 if (!claimed_id) {
177 info("Unable to load '%s', setting state to AGENT_UNCLAIMED", filename);
178 return;
database/rrdhost.c
+1
@@ -364,6 +364,7 @@ int is_legacy = 1;
364 rrdfamily_index_init(host);
365 rrdcalctemplate_index_init(host);
366 rrdcalc_rrdhost_index_init(host);
367 + metaqueue_host_update_info(host);
368
369 if (health_enabled)
370 health_thread_spawn(host);
database/sqlite/sqlite_metadata.c
+33
@@ -62,6 +62,7 @@ enum metadata_opcode {
62 METADATA_DATABASE_TIMER,
63 METADATA_DEL_DIMENSION,
64 METADATA_STORE_CLAIM_ID,
65 + METADATA_ADD_HOST_INFO,
66 METADATA_SCAN_HOSTS,
67 METADATA_MAINTENANCE,
68 METADATA_SYNC_SHUTDOWN,
@@ -1014,6 +1015,7 @@ static void metadata_event_loop(void *arg)
1015 worker_register_job_name(METADATA_DATABASE_TIMER, "timer");
1016 worker_register_job_name(METADATA_DEL_DIMENSION, "delete dimension");
1017 worker_register_job_name(METADATA_STORE_CLAIM_ID, "add claim id");
1018 + worker_register_job_name(METADATA_ADD_HOST_INFO, "add host info");
1019 worker_register_job_name(METADATA_MAINTENANCE, "maintenance");
1020
1021 int ret;
@@ -1063,6 +1065,8 @@ static void metadata_event_loop(void *arg)
1065
1066 while (shutdown == 0 || (wc->flags & METADATA_WORKER_BUSY)) {
1067 uuid_t *uuid;
1068 + RRDHOST *host = NULL;
1069 + int rc;
1070
1071 worker_is_idle();
1072 uv_run(loop, UV_RUN_DEFAULT);
@@ -1102,6 +1106,12 @@ static void metadata_event_loop(void *arg)
1106 freez((void *) cmd.param[0]);
1107 freez((void *) cmd.param[1]);
1108 break;
1109 + case METADATA_ADD_HOST_INFO:
1110 + host = (RRDHOST *) cmd.param[0];
1111 + rc = sql_store_host_info(host);
1112 + if (unlikely(rc))
1113 + error_report("Failed to store host info in the database for %s", string2str(host->hostname));
1114 + break;
1115 case METADATA_SCAN_HOSTS:
1116 if (unlikely(metadata_flag_check(wc, METADATA_FLAG_SCANNING_HOSTS)))
1117 break;
@@ -1281,6 +1291,29 @@ void metaqueue_delete_dimension_uuid(uuid_t *uuid)
1291 queue_metadata_cmd(METADATA_DEL_DIMENSION, use_uuid, NULL);
1292 }
1293
1294 +void metaqueue_store_claim_id(uuid_t *host_uuid, uuid_t *claim_uuid)
1295 +{
1296 + if (unlikely(!host_uuid))
1297 + return;
1298 +
1299 + uuid_t *local_host_uuid = mallocz(sizeof(*host_uuid));
1300 + uuid_t *local_claim_uuid = NULL;
1301 +
1302 + uuid_copy(*local_host_uuid, *host_uuid);
1303 + if (likely(claim_uuid)) {
1304 + local_claim_uuid = mallocz(sizeof(*claim_uuid));
1305 + uuid_copy(*local_claim_uuid, *claim_uuid);
1306 + }
1307 + queue_metadata_cmd(METADATA_STORE_CLAIM_ID, local_host_uuid, local_claim_uuid);
1308 +}
1309 +
1310 +void metaqueue_host_update_info(RRDHOST *host)
1311 +{
1312 + if (unlikely(!metasync_worker.loop))
1313 + return;
1314 + queue_metadata_cmd(METADATA_ADD_HOST_INFO, host, NULL);
1315 +}
1316 +
1317 //
1318 // unitests
1319 //
database/sqlite/sqlite_metadata.h
+2
@@ -12,6 +12,8 @@ void metadata_sync_shutdown(void);
12 void metadata_sync_shutdown_prepare(void);
13
14 void metaqueue_delete_dimension_uuid(uuid_t *uuid);
15 +void metaqueue_store_claim_id(uuid_t *host_uuid, uuid_t *claim_uuid);
16 +void metaqueue_host_update_info(RRDHOST *host);
17 void migrate_localhost(uuid_t *host_uuid);
18
19 // UNIT TEST