@cryptotaxi247 / netdata-1 / commits / 11a49ab43

Reset last connected when removing stale nodes with netdatacli (#18425)

Stelios Fragkakis committed Aug 28, 2024 at 11:08 UTC 11a49ab436114979f42a4e69374b06b35f8473b5
1 file changed +29 -2
src/database/sqlite/sqlite_aclk.c
+29 -2
@@ -201,6 +201,34 @@ fail:
201 buffer_free(sql);
202 }
203
204 +#define SQL_INVALIDATE_HOST_LAST_CONNECTED "UPDATE host SET last_connected = 1 WHERE host_id = @host_id"
205 +
206 +static void invalidate_host_last_connected(nd_uuid_t *host_uuid)
207 +{
208 + sqlite3_stmt *res = NULL;
209 + if (!host_uuid)
210 + return;
211 +
212 + if (!PREPARE_STATEMENT(db_meta, SQL_INVALIDATE_HOST_LAST_CONNECTED, &res))
213 + return;
214 +
215 + int param = 0;
216 + SQLITE_BIND_FAIL(bind_fail, sqlite3_bind_blob(res, ++param, host_uuid, sizeof(*host_uuid), SQLITE_STATIC));
217 +
218 + param = 0;
219 + int rc = sqlite3_step_monitored(res);
220 + if (unlikely(rc != SQLITE_DONE)) {
221 + char wstr[UUID_STR_LEN];
222 + uuid_unparse_lower(*host_uuid, wstr);
223 + error_report("Failed invalidate last_connected time for host with GUID %s, rc = %d", wstr, rc);
224 + }
225 +
226 +bind_fail:
227 + REPORT_BIND_FAIL(res, param);
228 + SQLITE_FINALIZE(res);
229 +}
230 +
231 +
232 // OPCODE: ACLK_DATABASE_NODE_UNREGISTER
233 static void sql_unregister_node(char *machine_guid)
234 {
@@ -228,6 +256,7 @@ static void sql_unregister_node(char *machine_guid)
256 error_report("Failed to execute command to remove host node id");
257 } else {
258 // node: machine guid will be freed after processing
259 + invalidate_host_last_connected(&host_uuid);
260 metadata_delete_host_chart_labels(machine_guid);
261 machine_guid = NULL;
262 }
@@ -393,7 +422,6 @@ static void aclk_synchronization(void *arg)
422 break;
423 case ACLK_DATABASE_NODE_UNREGISTER:
424 sql_unregister_node(cmd.param[0]);
396 -
425 break;
426 // ALERTS
427 case ACLK_DATABASE_PUSH_ALERT_CONFIG:
@@ -553,7 +581,6 @@ void aclk_query_init(mqtt_wss_client client) {
581 queue_aclk_sync_cmd(ACLK_MQTT_WSS_CLIENT, client, NULL);
582 }
583
556 -
584 void schedule_node_info_update(RRDHOST *host __maybe_unused)
585 {
586 if (unlikely(!host))