@cryptotaxi247 / netdata-1 / commits / 01790f655

Code cleanup (#22431)

cleanup(sqlite_metadata): _v2 closes, named sysinfo key count, dead-code drops - sqlite3_close → sqlite3_close_v2 at all 10 call sites; _v2 always frees, plain close leaks on busy handles. - Replace magic 27 in store_host_systeminfo with RRDHOST_SYSTEM_INFO_KEY_COUNT (new define in rrdhost-system-info.h). - Strip leftover ; END from SQL_SCHEDULE_HOST_CTX_CLEANUP (truncated by sqlite3_prepare_v2 today; cosmetic but misleading). - Drop a 2-line commented-out wal-checkpoint block in run_cleanup_loop.

Stelios Fragkakis committed May 6, 2026 at 22:03 UTC 01790f6551519b098c83945bd4e9782c16e8f7c9
2 files changed +18 -14
src/database/rrdhost-system-info.h
+6
@@ -98,6 +98,12 @@ void rrdhost_system_info_to_json_v2(BUFFER *wb, struct rrdhost_system_info *syst
98 void rrdhost_system_info_to_url_encode_stream(BUFFER *wb, struct rrdhost_system_info *system_info);
99
100 typedef int (*add_host_sysinfo_key_value_t)(const char *name, const char *value, nd_uuid_t *uuid);
101 +
102 +// Number of NETDATA_* keys emitted by rrdhost_system_info_foreach(); callers
103 +// compare against the cb-success count to detect partial-store failures.
104 +// Keep in sync with the body of rrdhost_system_info_foreach().
105 +#define RRDHOST_SYSTEM_INFO_KEY_COUNT 27
106 +
107 int rrdhost_system_info_foreach(struct rrdhost_system_info *system_info, add_host_sysinfo_key_value_t cb, nd_uuid_t *uuid);
108
109 struct update_node_info;
src/database/sqlite/sqlite_metadata.c
+12 -14
@@ -364,7 +364,7 @@ done:
364
365 #define SQL_SCHEDULE_HOST_CTX_CLEANUP \
366 "INSERT INTO ctx_metadata_cleanup (host_id, context, date_created) " \
367 - "VALUES (@host_id, @context, UNIXEPOCH()) ON CONFLICT DO UPDATE SET date_created = excluded.date_created; END"
367 + "VALUES (@host_id, @context, UNIXEPOCH()) ON CONFLICT DO UPDATE SET date_created = excluded.date_created"
368
369 // Schedule context cleanup for host
370 static void sql_schedule_host_ctx_cleanup(sqlite3_stmt **res, nd_uuid_t *host_id, const char *context)
@@ -616,7 +616,7 @@ static void recover_database(const char *sqlite_database, const char *new_sqlite
616
617 rc = sqlite3_recover_finish(recover);
618
619 - (void) sqlite3_close(database);
619 + (void) sqlite3_close_v2(database);
620
621 if (rc == SQLITE_OK) {
622 rc = rename(new_sqlite_database, sqlite_database);
@@ -629,7 +629,7 @@ static void recover_database(const char *sqlite_database, const char *new_sqlite
629 netdata_log_error("Recover failed to free resources");
630 }
631 else
632 - (void) sqlite3_close(database);
632 + (void) sqlite3_close_v2(database);
633 }
634
635
@@ -758,7 +758,7 @@ int sql_init_meta_database(db_check_action_type_t rebuild, int memory)
758 }
759 else {
760 (void)db_execute(db_meta, "select count(*) from sqlite_master limit 0", NULL);
761 - (void) sqlite3_close(db_meta);
761 + (void) sqlite3_close_v2(db_meta);
762 }
763 return 1;
764 }
@@ -773,7 +773,7 @@ int sql_init_meta_database(db_check_action_type_t rebuild, int memory)
773 }
774 else {
775 (void)db_execute(db_meta, "select count(*) from sqlite_master limit 0", NULL);
776 - (void) sqlite3_close(db_meta);
776 + (void) sqlite3_close_v2(db_meta);
777 }
778 return 1;
779 }
@@ -814,7 +814,7 @@ int sql_init_meta_database(db_check_action_type_t rebuild, int memory)
814 return 0;
815
816 close_database:
817 - sqlite3_close(db_meta);
817 + sqlite3_close_v2(db_meta);
818 db_meta = NULL;
819 return 1;
820 }
@@ -1163,7 +1163,7 @@ static bool store_host_systeminfo(RRDHOST *host)
1163 if (unlikely(!system_info))
1164 return false;
1165
1166 - return (27 != rrdhost_system_info_foreach(system_info, add_host_sysinfo_key_value, &host->host_id.uuid));
1166 + return (RRDHOST_SYSTEM_INFO_KEY_COUNT != rrdhost_system_info_foreach(system_info, add_host_sysinfo_key_value, &host->host_id.uuid));
1167 }
1168
1169
@@ -1313,8 +1313,6 @@ static bool run_cleanup_loop(
1313 if (rc == true) {
1314 action_cb(&uuid, action_stmt, action_flag);
1315 l_deleted++;
1316 -// if (false == sql_metadata_wal_size_acceptable())
1317 -// (void) sqlite3_wal_checkpoint(db_meta, NULL);
1316 }
1317
1318 l_checked++;
@@ -1906,14 +1904,14 @@ static void restore_host_context(void *arg)
1904 snprintfz(sqlite_database, sizeof(sqlite_database) - 1, "%s/netdata-meta.db", netdata_configured_cache_dir);
1905 int rc = sqlite3_open_v2(sqlite_database, &db_meta_thread, SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX, NULL);
1906 if (rc != SQLITE_OK) {
1909 - sqlite3_close(db_meta_thread);
1907 + sqlite3_close_v2(db_meta_thread);
1908 db_meta_thread = NULL;
1909 }
1910
1911 snprintfz(sqlite_database, sizeof(sqlite_database) - 1, "%s/context-meta.db", netdata_configured_cache_dir);
1912 rc = sqlite3_open_v2(sqlite_database, &db_context_thread, SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX, NULL);
1913 if (rc != SQLITE_OK) {
1916 - sqlite3_close(db_context_thread);
1914 + sqlite3_close_v2(db_context_thread);
1915 db_context_thread = NULL;
1916 }
1917
@@ -2136,7 +2134,7 @@ size_t populate_metrics_from_database(void *mrg, void (*populate_cb)(void *mrg,
2134 snprintfz(sqlite_database, sizeof(sqlite_database) - 1, "%s/netdata-meta.db", netdata_configured_cache_dir);
2135 int rc = sqlite3_open_v2(sqlite_database, &local_meta_db, SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX, NULL);
2136 if (rc != SQLITE_OK) {
2139 - sqlite3_close(local_meta_db);
2137 + sqlite3_close_v2(local_meta_db);
2138 local_meta_db = NULL;
2139 }
2140
@@ -2144,7 +2142,7 @@ size_t populate_metrics_from_database(void *mrg, void (*populate_cb)(void *mrg,
2142 (void)db_execute(local_meta_db, "PRAGMA cache_size=10000", NULL);
2143
2144 if (!PREPARE_STATEMENT(local_meta_db ? local_meta_db : db_meta, GET_UUID_LIST, &res)) {
2147 - sqlite3_close(local_meta_db);
2145 + sqlite3_close_v2(local_meta_db);
2146 return 0;
2147 }
2148
@@ -2166,7 +2164,7 @@ size_t populate_metrics_from_database(void *mrg, void (*populate_cb)(void *mrg,
2164 }
2165
2166 SQLITE_FINALIZE(res);
2169 - sqlite3_close(local_meta_db);
2167 + sqlite3_close_v2(local_meta_db);
2168 COMPUTE_DURATION(report_duration, "us", started_ut, now_monotonic_usec());
2169 nd_log_daemon(NDLP_INFO, "MRG: Loaded %zu metrics from database in %s", count, report_duration);
2170 return count;