@cryptotaxi247 / netdata-1 / commits / 5f024e4b9

Improve cleanup of ephemeral hosts during agent startup (#17104)

* Improve cleanup of ephemeral hosts * Simplify ephemeral load message

Stelios Fragkakis committed Mar 5, 2024 at 19:58 UTC 5f024e4b9084bc6d8fd1b752633ad815d37588e4
1 file changed +13 -5
src/database/sqlite/sqlite_aclk.c
+13 -5
@@ -71,6 +71,7 @@ enum {
71 IDX_HEALTH_ENABLED,
72 IDX_LAST_CONNECTED,
73 IDX_IS_EPHEMERAL,
74 + IDX_IS_REGISTERED,
75 };
76
77 static int create_host_callback(void *data, int argc, char **argv, char **column)
@@ -87,21 +88,27 @@ static int create_host_callback(void *data, int argc, char **argv, char **column
88
89 time_t age = now_realtime_sec() - last_connected;
90 int is_ephemeral = 0;
91 + int is_registered = 0;
92
93 if (argv[IDX_IS_EPHEMERAL])
94 is_ephemeral = str2i(argv[IDX_IS_EPHEMERAL]);
95
96 + if (argv[IDX_IS_REGISTERED])
97 + is_registered = str2i(argv[IDX_IS_REGISTERED]);
98 +
99 char guid[UUID_STR_LEN];
100 uuid_unparse_lower(*(uuid_t *)argv[IDX_HOST_ID], guid);
101
102 if (is_ephemeral && age > rrdhost_free_ephemeral_time_s) {
103 netdata_log_info(
99 - "Skipping ephemeral hostname \"%s\" with GUID \"%s\", age = %ld seconds (limit %ld seconds)",
104 + "%s ephemeral hostname \"%s\" with GUID \"%s\", age = %ld seconds (limit %ld seconds)",
105 + is_registered ? "Loading registered" : "Skipping unregistered",
106 (const char *)argv[IDX_HOSTNAME],
107 guid,
108 age,
109 rrdhost_free_ephemeral_time_s);
104 - return 0;
110 + if (!is_registered)
111 + return 0;
112 }
113
114 struct rrdhost_system_info *system_info = callocz(1, sizeof(struct rrdhost_system_info));
@@ -555,11 +562,12 @@ void sql_create_aclk_table(RRDHOST *host __maybe_unused, uuid_t *host_uuid __may
562
563 #define SQL_FETCH_ALL_HOSTS \
564 "SELECT host_id, hostname, registry_hostname, update_every, os, " \
558 - "timezone, hops, memory_mode, abbrev_timezone, utc_offset, program_name, " \
565 + "timezone, hops, memory_mode, abbrev_timezone, utc_offset, program_name, " \
566 "program_version, entries, health_enabled, last_connected, " \
567 "(SELECT CASE WHEN hl.label_value = 'true' THEN 1 ELSE 0 END FROM " \
561 - "host_label hl WHERE hl.host_id = h.host_id AND hl.label_key = '_is_ephemeral') " \
562 - "FROM host h WHERE hops > 0"
568 + "host_label hl WHERE hl.host_id = h.host_id AND hl.label_key = '_is_ephemeral'), " \
569 + "(SELECT CASE WHEN ni.node_id is NULL THEN 0 ELSE 1 END FROM " \
570 + "node_instance ni WHERE ni.host_id = h.host_id) FROM host h WHERE hops > 0"
571
572 #define SQL_FETCH_ALL_INSTANCES \
573 "SELECT ni.host_id, ni.node_id FROM host h, node_instance ni " \