1895
if (!host)
1896
return;
1897
1898
+ if (unlikely(exit_initiated_get())) {
1899
+ __atomic_store_n(&hclt->finished, true, __ATOMIC_RELEASE);
1900
+ return;
1901
+ }
1902
+
1903
if (!db_meta_thread) {
1904
if (hclt->db_meta_thread) {
1905
db_meta_thread = hclt->db_meta_thread;
1908
char sqlite_database[FILENAME_MAX + 1];
1909
snprintfz(sqlite_database, sizeof(sqlite_database) - 1, "%s/netdata-meta.db", netdata_configured_cache_dir);
1910
int rc = sqlite3_open_v2(sqlite_database, &db_meta_thread, SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX, NULL);
1906
- if (rc != SQLITE_OK) {
1907
- sqlite3_close_v2(db_meta_thread);
1908
- db_meta_thread = NULL;
1909
- }
1911
+ if (rc != SQLITE_OK)
1912
+ sql_close_thread_db_safe(&db_meta_thread);
1913
1914
snprintfz(sqlite_database, sizeof(sqlite_database) - 1, "%s/context-meta.db", netdata_configured_cache_dir);
1915
rc = sqlite3_open_v2(sqlite_database, &db_context_thread, SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX, NULL);
1913
- if (rc != SQLITE_OK) {
1914
- sqlite3_close_v2(db_context_thread);
1915
- db_context_thread = NULL;
1916
- }
1916
+ if (rc != SQLITE_OK)
1917
+ sql_close_thread_db_safe(&db_context_thread);
1918
1919
hclt->db_meta_thread = db_meta_thread;
1920
hclt->db_context_thread = db_context_thread;
2070
2071
if (should_clean_threads) {
2072
for (size_t index = 0; index < max_threads; index++) {
2072
- if (hclt[index].db_meta_thread)
2073
- sqlite3_close_v2(hclt[index].db_meta_thread);
2074
-
2075
- if (hclt[index].db_context_thread)
2076
- sqlite3_close_v2(hclt[index].db_context_thread);
2073
+ sql_close_thread_db_safe(&hclt[index].db_meta_thread);
2074
+ sql_close_thread_db_safe(&hclt[index].db_context_thread);
2075
}
2076
}
2077
2088
sync_exec,
2089
load_duration);
2090
2093
- if (db_meta_thread) {
2094
- sqlite3_close_v2(db_meta_thread);
2095
- sqlite3_close_v2(db_context_thread);
2096
- db_meta_thread = NULL;
2097
- db_context_thread = NULL;
2098
- }
2091
+ sql_close_thread_db_safe(&db_meta_thread);
2092
+ sql_close_thread_db_safe(&db_context_thread);
2093
+
2094
freez(hclt);
2095
worker_is_idle();
2096
}